{
 "instance": {
  "ctg-10q_20190329.htm": {
   "axisCustom": 0,
   "axisStandard": 27,
   "contextCount": 166,
   "dts": {
    "calculationLink": {
     "local": [
      "ctg-20190329_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "ctg-20190329_def.xml"
     ],
     "remote": [
      "http://xbrl.fasb.org/srt/2018/elts/srt-eedm1-def-2018-01-31.xml",
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-gaap-eedm-def-2018-01-31.xml"
     ]
    },
    "inline": {
     "local": [
      "ctg-10q_20190329.htm"
     ]
    },
    "labelLink": {
     "local": [
      "ctg-20190329_lab.xml"
     ],
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-gaap-doc-2018-01-31.xml",
      "https://xbrl.sec.gov/dei/2018/dei-doc-2018-01-31.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "ctg-20190329_pre.xml"
     ]
    },
    "referenceLink": {
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-gaap-ref-2018-01-31.xml",
      "https://xbrl.sec.gov/dei/2018/dei-ref-2018-01-31.xml"
     ]
    },
    "schema": {
     "local": [
      "ctg-20190329.xsd"
     ],
     "remote": [
      "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xbrl-linkbase-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xl-2003-12-31.xsd",
      "http://www.xbrl.org/2003/xlink-2003-12-31.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd",
      "http://www.xbrl.org/dtr/type/numeric-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/deprecated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/net-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "http://xbrl.fasb.org/srt/2018/elts/srt-2018-01-31.xsd",
      "http://xbrl.fasb.org/srt/2018/elts/srt-roles-2018-01-31.xsd",
      "http://xbrl.fasb.org/srt/2018/elts/srt-types-2018-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-gaap-2018-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-parts-codification-2018-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-roles-2018-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2018/elts/us-types-2018-01-31.xsd",
      "http://xbrl.sec.gov/country/2017/country-2017-01-31.xsd",
      "https://xbrl.sec.gov/currency/2017/currency-2017-01-31.xsd",
      "https://xbrl.sec.gov/dei/2018/dei-2018-01-31.xsd",
      "https://xbrl.sec.gov/exch/2018/exch-2018-01-31.xsd",
      "https://xbrl.sec.gov/invest/2013/invest-2013-01-31.xsd",
      "https://xbrl.sec.gov/naics/2017/naics-2017-01-31.xsd",
      "https://xbrl.sec.gov/sic/2011/sic-2011-01-31.xsd",
      "https://xbrl.sec.gov/stpr/2018/stpr-2018-01-31.xsd"
     ]
    }
   },
   "elementCount": 499,
   "entityCount": 1,
   "hidden": {
    "http://fasb.org/us-gaap/2018-01-31": 6,
    "http://www.ctg.com/20190329": 4,
    "http://xbrl.sec.gov/dei/2018-01-31": 10,
    "total": 20
   },
   "keyCustom": 44,
   "keyStandard": 267,
   "memberCustom": 27,
   "memberStandard": 32,
   "nsprefix": "ctg",
   "nsuri": "http://www.ctg.com/20190329",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "document",
     "isDefault": "true",
     "longName": "100000 - Document - Document and Entity Information Document",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument",
     "shortName": "Document and Entity Information Document",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100090 - Disclosure - Summary of Significant Accounting Policies",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPolicies",
     "shortName": "Summary of Significant Accounting Policies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100100 - Disclosure - Acquisitions",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitions",
     "shortName": "Acquisitions",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100110 - Disclosure - Net Income Per Share",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShare",
     "shortName": "Net Income Per Share",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100120 - Disclosure - Operating Leases",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeases",
     "shortName": "Operating Leases",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100130 - Disclosure - Debt",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebt",
     "shortName": "Debt",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ComprehensiveIncomeNoteTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100140 - Disclosure - Accumulated Other Comprehensive Loss",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLoss",
     "shortName": "Accumulated Other Comprehensive Loss",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ComprehensiveIncomeNoteTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100150 - Disclosure - Income Taxes",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureIncomeTaxes",
     "shortName": "Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100160 - Disclosure - Deferred Compensation and Other Benefits",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefits",
     "shortName": "Deferred Compensation and Other Benefits",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100170 - Disclosure - Equity-based Compensation",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensation",
     "shortName": "Equity-based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:TreasuryStockTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100180 - Disclosure - Treasury Stock",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStock",
     "shortName": "Treasury Stock",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:TreasuryStockTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100010 - Statement - Condensed Consolidated Statements of Income (Unaudited)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited",
     "shortName": "Condensed Consolidated Statements of Income (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:DirectOperatingCosts",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100190 - Disclosure - Significant Customers",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomers",
     "shortName": "Significant Customers",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100200 - Disclosure - Summary of Significant Accounting Policies (Policies)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies",
     "shortName": "Summary of Significant Accounting Policies (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:ConcentrationRiskCreditRisk",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfProductInformationTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100210 - Disclosure - Summary of Significant Accounting Policies (Tables)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables",
     "shortName": "Summary of Significant Accounting Policies (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:ConcentrationRiskCreditRisk",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfProductInformationTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100220 - Disclosure - Acquisitions (Tables)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsTables",
     "shortName": "Acquisitions (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100230 - Disclosure - Net Income Per Share (Tables)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareTables",
     "shortName": "Net Income Per Share (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100240 - Disclosure - Operating Leases (Tables)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesTables",
     "shortName": "Operating Leases (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100250 - Disclosure - Accumulated Other Comprehensive Loss (Tables)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossTables",
     "shortName": "Accumulated Other Comprehensive Loss (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100260 - Disclosure - Deferred Compensation and Other Benefits (Tables)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsTables",
     "shortName": "Deferred Compensation and Other Benefits (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": null,
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100270 - Disclosure - Financial Statements - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureFinancialStatementsAdditionalInformationDetails",
     "shortName": "Financial Statements - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:ConcentrationRiskCreditRisk",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:NumberOfOperatingSegments",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_ctgsegment",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100280 - Disclosure - Summary of Significant Accounting Policies - Basis of Presentation and Consolidation (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesBasisOfPresentationAndConsolidationDetails",
     "shortName": "Summary of Significant Accounting Policies - Basis of Presentation and Consolidation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:ConcentrationRiskCreditRisk",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:NumberOfOperatingSegments",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_ctgsegment",
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100020 - Statement - Condensed Consolidated Statements of Comprehensive Income (Unaudited)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited",
     "shortName": "Condensed Consolidated Statements of Comprehensive Income (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ConcentrationRiskCreditRisk",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapConcentrationRiskByBenchmarkAxis_us-gaapSalesRevenueServicesNetMember_us-gaapConcentrationRiskByTypeAxis_us-gaapProductConcentrationRiskMember_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100290 - Disclosure - Summary of Significant Accounting Policies - Summary of IT Solutions and IT and Other Staffing Revenue as Percentage of Total Revenue (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of IT Solutions and IT and Other Staffing Revenue as Percentage of Total Revenue (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:ConcentrationRiskCreditRisk",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapConcentrationRiskByBenchmarkAxis_us-gaapSalesRevenueServicesNetMember_us-gaapConcentrationRiskByTypeAxis_us-gaapProductConcentrationRiskMember_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapConcentrationRiskByBenchmarkAxis_us-gaapSalesRevenueServicesNetMember_us-gaapConcentrationRiskByTypeAxis_us-gaapCustomerConcentrationRiskMember_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100300 - Disclosure - Summary of Significant Accounting Policies - Revenue by Vertical Market as Percentage of Total Revenue (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
     "shortName": "Summary of Significant Accounting Policies - Revenue by Vertical Market as Percentage of Total Revenue (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_srtMajorCustomersAxis_ctgTechnologyServiceProvidersMember_us-gaapConcentrationRiskByBenchmarkAxis_us-gaapSalesRevenueServicesNetMember_us-gaapConcentrationRiskByTypeAxis_us-gaapCustomerConcentrationRiskMember_20190101_20190329",
      "decimals": "3",
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ctg:ScheduleOfRevenueByContractTypeTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:RevenueFromExternalCustomersPercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100310 - Disclosure - Summary of Significant Accounting Policies - Revenue by Contract Type (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails",
     "shortName": "Summary of Significant Accounting Policies - Revenue by Contract Type (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ctg:ScheduleOfRevenueByContractTypeTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:RevenueFromExternalCustomersPercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100320 - Disclosure - Summary of Significant Accounting Policies - Schedule of Revenue by Geographic Location (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
     "shortName": "Summary of Significant Accounting Policies - Schedule of Revenue by Geographic Location (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "3",
      "lang": null,
      "name": "ctg:ComparableRevenuePercentageChange",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapRevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_2019-03-30_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100330 - Disclosure - Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details 1)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1",
     "shortName": "Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details 1)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapRevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis_2019-03-30_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapContractWithCustomerBasisOfPricingAxis_us-gaapFixedPriceContractMember_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100340 - Disclosure - Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
     "shortName": "Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapContractWithCustomerBasisOfPricingAxis_us-gaapFixedPriceContractMember_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100350 - Disclosure - Summary of Significant Accounting Policies - Fair Value (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails",
     "shortName": "Summary of Significant Accounting Policies - Fair Value (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "ctg:EmployeeLifeInsurancePolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:NumberOfIndividualsCoveredUnderInsurancePolicy",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_ctgIndividual",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100360 - Disclosure - Summary of Significant Accounting Policies - Life Insurance Policies (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails",
     "shortName": "Summary of Significant Accounting Policies - Life Insurance Policies (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "ctg:EmployeeLifeInsurancePolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:NumberOfIndividualsCoveredUnderInsurancePolicy",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_ctgIndividual",
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100370 - Disclosure - Summary of Significant Accounting Policies - Schedule of Property, Equipment and Capitalized Software (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
     "shortName": "Summary of Significant Accounting Policies - Schedule of Property, Equipment and Capitalized Software (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100380 - Disclosure - Summary of Significant Accounting Policies - Property, Equipment and Capitalized Software Costs - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails",
     "shortName": "Summary of Significant Accounting Policies - Property, Equipment and Capitalized Software Costs - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100030 - Statement - Condensed Consolidated Statements of Comprehensive Income (Unaudited) (Parenthetical)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnauditedParenthetical",
     "shortName": "Condensed Consolidated Statements of Comprehensive Income (Unaudited) (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:GuaranteesIndemnificationsAndWarrantiesPolicies",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:GuaranteeObligationsCurrentCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100390 - Disclosure - Summary of Significant Accounting Policies - Guarantees (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesGuaranteesDetails",
     "shortName": "Summary of Significant Accounting Policies - Guarantees (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:GuaranteesIndemnificationsAndWarrantiesPolicies",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:GuaranteeObligationsCurrentCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20181231",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100400 - Disclosure - Summary of Significant Accounting Policies - Summary of Changes in Carrying Amount of Goodwill (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of Changes in Carrying Amount of Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:GoodwillAcquiredDuringPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100410 - Disclosure - Summary of Significant Accounting Policies - Summary of Acquired Intangible Assets (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of Acquired Intangible Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100420 - Disclosure - Summary of Significant Accounting Policies - Summary of Estimated Amortization Expense (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of Estimated Amortization Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100430 - Disclosure - Summary of Significant Accounting Policies - Recent Issued Accounting Standards (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails",
     "shortName": "Summary of Significant Accounting Policies - Recent Issued Accounting Standards (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapAdjustmentsForNewAccountingPronouncementsAxis_us-gaapAccountingStandardsUpdate201602Member_20190101",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgTechITPSFSAMember_20190206",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired",
      "reportCount": 1,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100440 - Disclosure - Acquisitions - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
     "shortName": "Acquisitions - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgTechITPSFSAMember_20190206_20190206",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgSoftCompanyMember_20180215_20180215",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100450 - Disclosure - Acquisitions - Summary of Acquisition Date Fair Value of Consideration (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
     "shortName": "Acquisitions - Summary of Acquisition Date Fair Value of Consideration (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgSoftCompanyMember_20180215_20180215",
      "decimals": "-3",
      "lang": null,
      "name": "ctg:BusinessCombinationContingentConsideration",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100460 - Disclosure - Acquisitions - Summary of Allocation of Aggregate Purchase Consideration to Fair Values of Assets Acquired and Liabilities Assumed (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
     "shortName": "Acquisitions - Summary of Allocation of Aggregate Purchase Consideration to Fair Values of Assets Acquired and Liabilities Assumed (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgSoftCompanyMember_20180215",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgSoftCompanyMember_20180215",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100470 - Disclosure - Acquisitions - Summary of Intangible Assets Acquired (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
     "shortName": "Acquisitions - Summary of Intangible Assets Acquired (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapBusinessAcquisitionAxis_ctgSoftCompanyMember_us-gaapFiniteLivedIntangibleAssetsByMajorClassAxis_us-gaapTrademarksMember_20180215",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:WeightedAverageNumberOfSharesOutstandingBasic",
      "reportCount": 1,
      "unitRef": "U_xbrlishares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100480 - Disclosure - Net Income Per Share - Schedule of Basic and Diluted Earnings Per Share (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails",
     "shortName": "Net Income Per Share - Schedule of Basic and Diluted Earnings Per Share (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlishares",
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100040 - Statement - Condensed Consolidated Balance Sheets (Unaudited)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited",
     "shortName": "Condensed Consolidated Balance Sheets (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PrepaidExpenseAndOtherAssetsCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_us-gaapEmployeeStockOptionMember_20190101_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlishares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100490 - Disclosure - Net Income Per Share - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails",
     "shortName": "Net Income Per Share - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:EarningsPerShareTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_us-gaapEmployeeStockOptionMember_20190101_20190329",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlishares",
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:OperatingLeasesMaximumPotentialExistingPaymentIncrease",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100500 - Disclosure - Operating Leases - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails",
     "shortName": "Operating Leases - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:OperatingLeasesMaximumPotentialExistingPaymentIncrease",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100510 - Disclosure - Operating Leases - Summary of Maturities of Lease Liabilities for Operating Liabilities (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails",
     "shortName": "Operating Leases - Summary of Maturities of Lease Liabilities for Operating Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "4",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100530 - Disclosure - Operating Lease - Summary of Weighted Average Remaining Lease Term, Discount Rate and Supplemental Cash Flow Information for All Operating Leases (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeaseSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails",
     "shortName": "Operating Lease - Summary of Weighted Average Remaining Lease Term, Discount Rate and Supplemental Cash Flow Information for All Operating Leases (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "4",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20170101_20171231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LineOfCreditFacilityInitiationDate1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100540 - Disclosure - Debt - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails",
     "shortName": "Debt - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20170101_20171231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LineOfCreditFacilityInitiationDate1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100550 - Disclosure - Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails",
     "shortName": "Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100560 - Disclosure - Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Parenthetical) (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossParentheticalDetails",
     "shortName": "Accumulated Other Comprehensive Loss - Schedule of Accumulated Other Comprehensive Loss (Parenthetical) (Details)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNetBenefitCostsTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100570 - Disclosure - Accumulated Other Comprehensive Loss - Schedule of Net Benefit Costs (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails",
     "shortName": "Accumulated Other Comprehensive Loss - Schedule of Net Benefit Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNetBenefitCostsTableTextBlock",
       "us-gaap:ComprehensiveIncomeNoteTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "3",
      "first": true,
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100580 - Disclosure - Income Taxes - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureIncomeTaxesAdditionalInformationDetails",
     "shortName": "Income Taxes - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "3",
      "first": true,
      "lang": null,
      "name": "us-gaap:EffectiveIncomeTaxRateContinuingOperations",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlipure",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapRetirementPlanNameAxis_ctgFinanciereSoftSASDefinedBenefitPlanMember_20180101_20181231",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredCompensationArrangementWithIndividualDistributionPaid",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100590 - Disclosure - Deferred Compensation and Other Benefits - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
     "shortName": "Deferred Compensation and Other Benefits - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapRetirementPlanNameAxis_ctgFinanciereSoftSASDefinedBenefitPlanMember_20180101_20181231",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredCompensationArrangementWithIndividualDistributionPaid",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100050 - Statement - Condensed Consolidated Balance Sheets (Unaudited) (Parenthetical)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical",
     "shortName": "Condensed Consolidated Balance Sheets (Unaudited) (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapDeferredCompensationArrangementWithIndividualPostretirementBenefitsByTypeOfDeferredCompensationAxis_us-gaapDeferredCompensationArrangementWithIndividualByTypeOfCompensationPensionAndOtherPostretirementBenefitsMember_us-gaapTitleOfIndividualAxis_us-gaapExecutiveOfficerMember_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanServiceCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100600 - Disclosure - Deferred Compensation and Other Benefits - Schedule of Net Periodic Pension Cost (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails",
     "shortName": "Deferred Compensation and Other Benefits - Schedule of Net Periodic Pension Cost (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapDeferredCompensationArrangementWithIndividualPostretirementBenefitsByTypeOfDeferredCompensationAxis_us-gaapDeferredCompensationArrangementWithIndividualByTypeOfCompensationPensionAndOtherPostretirementBenefitsMember_us-gaapTitleOfIndividualAxis_us-gaapExecutiveOfficerMember_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanServiceCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfChangesInFairValueOfPlanAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapRetirementPlanNameAxis_ctgNetherlandsDefinedBenefitPlanNdbpMember_20181231",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanFairValueOfPlanAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100610 - Disclosure - Deferred Compensation and Other Benefits - Schedule of Change in Fair Value of Plan Assets for NDBP (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails",
     "shortName": "Deferred Compensation and Other Benefits - Schedule of Change in Fair Value of Plan Assets for NDBP (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfChangesInFairValueOfPlanAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_us-gaapRetirementPlanNameAxis_ctgNetherlandsDefinedBenefitPlanNdbpMember_20181231",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanFairValueOfPlanAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlishares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100620 - Disclosure - Equity-based Compensation - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails",
     "shortName": "Equity-based Compensation - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_xbrlishares",
      "xsiNil": "false"
     }
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "us-gaap:TreasuryStockTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockRepurchaseProgramAuthorizedAmount1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100630 - Disclosure - Treasury Stock - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails",
     "shortName": "Treasury Stock - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:TreasuryStockTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockRepurchaseProgramAuthorizedAmount1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccountsReceivableNetCurrent",
      "reportCount": 1,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100640 - Disclosure - Significant Customers - Additional Information (Details)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
     "shortName": "Significant Customers - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "us-gaap:ConcentrationRiskDisclosureTextBlock",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190329",
      "decimals": "INF",
      "lang": null,
      "name": "ctg:NumberOfMajorCustomer",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_ctgCustomer",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:ProfitLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100060 - Statement - Condensed Consolidated Statements of Cash Flows (Unaudited)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited",
     "shortName": "Condensed Consolidated Statements of Cash Flows (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:ProfitLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20171231",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100070 - Statement - Condensed Consolidated Statements of Shareholders' Equity (Unaudited)",
     "role": "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited",
     "shortName": "Condensed Consolidated Statements of Shareholders' Equity (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "p",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20171231",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_iso4217USD",
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100080 - Disclosure - Financial Statements",
     "role": "http://www.ctg.com/20190329/taxonomy/role/DisclosureFinancialStatements",
     "shortName": "Financial Statements",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "ctg-10q_20190329.htm",
      "contextRef": "C_0000023111_20190101_20190329",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 60,
   "tag": {
    "ctg_AccumulatedOtherComprehensiveIncomeLossImplementationOfAccountingStandards": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated other comprehensive income (loss), implementation of accounting standards.",
        "label": "Accumulated Other Comprehensive Income Loss Implementation Of Accounting Standards",
        "negatedLabel": "Implementation of accounting standards"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossImplementationOfAccountingStandards",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_AdditionalStockRepurchaseProgramAuthorizedAmount": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Additional stock repurchase program authorized amount.",
        "label": "Additional Stock Repurchase Program Authorized Amount",
        "terseLabel": "Additional stock repurchase program, authorized amount"
       }
      }
     },
     "localname": "AdditionalStockRepurchaseProgramAuthorizedAmount",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_AdjustedLondonInterbankOfferedRateLIBORMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Adjusted London Interbank Offered Rate (LIBOR).",
        "label": "Adjusted London Interbank Offered Rate L I B O R [Member]",
        "terseLabel": "Adjusted London Interbank Offered Rate L I B O R"
       }
      }
     },
     "localname": "AdjustedLondonInterbankOfferedRateLIBORMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_AverageAgeOfFormerEmployeesCoveredUnderInsurancePolicy": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Average age of former employees covered under insurance policy.",
        "label": "Average Age Of Former Employees Covered Under Insurance Policy",
        "terseLabel": "Average age of former employees covered under insurance policies"
       }
      }
     },
     "localname": "AverageAgeOfFormerEmployeesCoveredUnderInsurancePolicy",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "ctg_BelgiumPensionPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Belgium pension plan.",
        "label": "Belgium Pension Plan [Member]",
        "terseLabel": "BDBP [Member]"
       }
      }
     },
     "localname": "BelgiumPensionPlanMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_BillablePeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Billable period.",
        "label": "Billable Period",
        "terseLabel": "Billable days"
       }
      }
     },
     "localname": "BillablePeriod",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureFinancialStatementsAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "ctg_BinomialModelMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Binomial model.",
        "label": "Binomial Model [Member]",
        "terseLabel": "Binomial Model [Member]"
       }
      }
     },
     "localname": "BinomialModelMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_BoardOfDirectorsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Board of directors.",
        "label": "Board Of Directors [Member]",
        "terseLabel": "Board of Directors [Member]"
       }
      }
     },
     "localname": "BoardOfDirectorsMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_BusinessCombinationAcquisitionRelatedCostIncludingAdjustmentOfFairValueLiabilityAndAmortizationOfIntangibleAssets": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Business combination acquisition related cost including adjustment of fair value liability and amortization of intangible assets.",
        "label": "Business Combination Acquisition Related Cost Including Adjustment Of Fair Value Liability And Amortization Of Intangible Assets",
        "terseLabel": "Business combination acquisition related costs including fair value adjustment of earn out liability and amortization of intangible assets"
       }
      }
     },
     "localname": "BusinessCombinationAcquisitionRelatedCostIncludingAdjustmentOfFairValueLiabilityAndAmortizationOfIntangibleAssets",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationContingentConsideration": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Business combination contingent consideration.",
        "label": "Business Combination Contingent Consideration",
        "terseLabel": "Fair value of contingent consideration"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsideration",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationContingentConsiderationEarnOutPayments": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Business combination contingent consideration earn-out payments.",
        "label": "Business Combination Contingent Consideration Earn Out Payments",
        "terseLabel": "Earn-out contingency liability"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationEarnOutPayments",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAccruedCompensation": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10040.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Business combination recognized identifiable assets acquired and liabilities assumed accrued compensation.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Accrued Compensation",
        "terseLabel": "Accrued compensation"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAccruedCompensation",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_CapitalizedSoftwareCostAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "- Capitalized Software Cost [Abstract]",
        "label": "Capitalized Software Cost [Abstract]"
       }
      }
     },
     "localname": "CapitalizedSoftwareCostAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "xbrltype": "stringItemType"
    },
    "ctg_CashPaidForAmountsIncludedInMeasurementOfLeaseLiabilitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Cash paid for amounts included in measurement of lease liabilities.",
        "label": "Cash Paid For Amounts Included In Measurement Of Lease Liabilities [Abstract]",
        "terseLabel": "Cash paid for amounts included in the measurement of lease liabilities:"
       }
      }
     },
     "localname": "CashPaidForAmountsIncludedInMeasurementOfLeaseLiabilitiesAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeaseSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_CashSurrenderValueOfLifeInsuranceGainToBeRecognizedUponDeathOfParticipant": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Cash surrender value of life insurance, gain to be recognized upon death of participant.",
        "label": "Cash Surrender Value Of Life Insurance Gain To Be Recognized Upon Death Of Participant",
        "terseLabel": "Life insurance gain to be recognized upon death of participants"
       }
      }
     },
     "localname": "CashSurrenderValueOfLifeInsuranceGainToBeRecognizedUponDeathOfParticipant",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_CashSurrenderValueOfLifeInsuranceGross": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Cash surrender value of life insurance gross.",
        "label": "Cash Surrender Value Of Life Insurance Gross",
        "verboseLabel": "Gross cash surrender values of life insurance"
       }
      }
     },
     "localname": "CashSurrenderValueOfLifeInsuranceGross",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_ComparableRevenuePercentageChange": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Comparable revenue percentage change.",
        "label": "Comparable Revenue Percentage Change",
        "terseLabel": "Year-over-Year Change"
       }
      }
     },
     "localname": "ComparableRevenuePercentageChange",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_CondensedConsolidatedStatementsofCashFlowsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Condensed Consolidated Statements of Cash Flows [Abstract]",
        "label": "Condensed Consolidated Statementsof Cash Flows [Abstract]"
       }
      }
     },
     "localname": "CondensedConsolidatedStatementsofCashFlowsAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "xbrltype": "stringItemType"
    },
    "ctg_ContractBalancesPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Contract balances.",
        "label": "Contract Balances Policy [Text Block]",
        "terseLabel": "Contract Balances"
       }
      }
     },
     "localname": "ContractBalancesPolicyTextBlock",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_CumulativeNumberOfSharesRepurchasedUnderShareRepurchaseProgram": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Cumulative number of shares repurchased under share repurchase program.",
        "label": "Cumulative Number Of Shares Repurchased Under Share Repurchase Program",
        "terseLabel": "Treasury stock repurchased, shares"
       }
      }
     },
     "localname": "CumulativeNumberOfSharesRepurchasedUnderShareRepurchaseProgram",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "ctg_DebtAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Debt [Abstract]",
        "label": "Debt [Abstract]"
       }
      }
     },
     "localname": "DebtAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "xbrltype": "stringItemType"
    },
    "ctg_DebtCovenantsThresholdLimitToTestFixedChargeCoverageRatio": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Debt covenants threshold limit to test fixed charge coverage ratio.",
        "label": "Debt Covenants Threshold Limit To Test Fixed Charge Coverage Ratio",
        "terseLabel": "Debt covenants threshold limit to test fixed charge coverage ratio"
       }
      }
     },
     "localname": "DebtCovenantsThresholdLimitToTestFixedChargeCoverageRatio",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DefinedBenefitPlanGuaranteedReturn": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Defined benefit plan, guaranteed return.",
        "label": "Defined Benefit Plan Guaranteed Return",
        "terseLabel": "Guaranteed return"
       }
      }
     },
     "localname": "DefinedBenefitPlanGuaranteedReturn",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_DefinedBenefitPlansAndOtherPostretirementBenefitsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Defined benefit plans and other postretirement benefits.",
        "label": "Defined Benefit Plans And Other Postretirement Benefits [Abstract]"
       }
      }
     },
     "localname": "DefinedBenefitPlansAndOtherPostretirementBenefitsAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "xbrltype": "stringItemType"
    },
    "ctg_DocumentAndEntityInformationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Document and entity information.",
        "label": "Document And Entity Information [Abstract]"
       }
      }
     },
     "localname": "DocumentAndEntityInformationAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "xbrltype": "stringItemType"
    },
    "ctg_EmployeeLifeInsurancePolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Employee life insurance.",
        "label": "Employee Life Insurance Policy [Text Block]",
        "terseLabel": "Life Insurance Policies"
       }
      }
     },
     "localname": "EmployeeLifeInsurancePolicyTextBlock",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_EnergyMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Energy.",
        "label": "Energy [Member]",
        "terseLabel": "Energy [Member]"
       }
      }
     },
     "localname": "EnergyMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ExecutiveSupplementalBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Executive supplemental benefit plan.",
        "label": "Executive Supplemental Benefit Plan [Member]",
        "terseLabel": "ESBP [Member]"
       }
      }
     },
     "localname": "ExecutiveSupplementalBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_FinancialServicesMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Financial services.",
        "label": "Financial Services [Member]",
        "terseLabel": "Financial Services [Member]"
       }
      }
     },
     "localname": "FinancialServicesMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_FinanciereSoftSASDefinedBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Financiere Soft SAS defined benefit plan.",
        "label": "Financiere Soft S A S Defined Benefit Plan [Member]",
        "terseLabel": "FDBP [Member]"
       }
      }
     },
     "localname": "FinanciereSoftSASDefinedBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearSix": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10070.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Finite lived intangible assets amortization expense after year six.",
        "label": "Finite Lived Intangible Assets Amortization Expense After Year Six",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearSix",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_FiniteLivedIntangibleAssetsAmortizationExpenseYearSix": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10060.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Finite lived intangible assets amortization expense year six.",
        "label": "Finite Lived Intangible Assets Amortization Expense Year Six",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearSix",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_GeneralMarketsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "General markets.",
        "label": "General Markets [Member]",
        "terseLabel": "General Markets [Member]"
       }
      }
     },
     "localname": "GeneralMarketsMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_IBMMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "IBM.",
        "label": "I B M [Member]",
        "terseLabel": "IBM [Member]"
       }
      }
     },
     "localname": "IBMMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_IncreaseDecreaseInCashSurrenderValueOfLifeInsuranceNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10280.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the cash surrender value of company-owned life insurance policies.",
        "label": "Increase Decrease In Cash Surrender Value Of Life Insurance Noncurrent",
        "negatedLabel": "Cash surrender value of life insurance"
       }
      }
     },
     "localname": "IncreaseDecreaseInCashSurrenderValueOfLifeInsuranceNoncurrent",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_ItAndOtherStaffingMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "It and other staffing.",
        "label": "It And Other Staffing [Member]",
        "verboseLabel": "IT and Other Staffing [Member]"
       }
      }
     },
     "localname": "ItAndOtherStaffingMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ItSolutionsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "IT solutions.",
        "label": "It Solutions [Member]",
        "verboseLabel": "IT Solutions [Member]"
       }
      }
     },
     "localname": "ItSolutionsMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_KeyEmployeeNonQualifiedDeferredCompensationPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Key employee non-qualified deferred compensation plan.",
        "label": "Key Employee Non Qualified Deferred Compensation Plan [Member]",
        "terseLabel": "Key Employee Non Qualified Deferred Compensation Plan [Member]"
       }
      }
     },
     "localname": "KeyEmployeeNonQualifiedDeferredCompensationPlanMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_LesseeOperatingLeaseLeaseNotYetCommencedLeasePayments": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Lessee operating, lease lease not yet commenced, lease payments.",
        "label": "Lessee Operating Lease Lease Not Yet Commenced Lease Payments",
        "terseLabel": "Operating lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLeaseNotYetCommencedLeasePayments",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LineOfCreditFacilityCovenantsEarningsBeforeInterestTaxesDepreciationAndAmortization": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line of credit facility, covenants, earnings before interest, taxes, depreciation and amortization.",
        "label": "Line Of Credit Facility Covenants Earnings Before Interest Taxes Depreciation And Amortization",
        "terseLabel": "Debt covenants, EBITDA"
       }
      }
     },
     "localname": "LineOfCreditFacilityCovenantsEarningsBeforeInterestTaxesDepreciationAndAmortization",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LineOfCreditFacilityCovenantsMaximumExpendituresForEquipmentAndCapitalizedSoftware": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line of credit facility, covenants, maximum expenditures for equipment and capitalized software.",
        "label": "Line Of Credit Facility Covenants Maximum Expenditures For Equipment And Capitalized Software",
        "terseLabel": "Debt covenants, Maximum capital expenditures"
       }
      }
     },
     "localname": "LineOfCreditFacilityCovenantsMaximumExpendituresForEquipmentAndCapitalizedSoftware",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LineOfCreditFacilityCovenantsMaximumLeverageRatio": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line of credit facility, covenants maximum leverage ratio.",
        "label": "Line Of Credit Facility Covenants Maximum Leverage Ratio",
        "terseLabel": "Debt covenants, Maximum leverage ratio"
       }
      }
     },
     "localname": "LineOfCreditFacilityCovenantsMaximumLeverageRatio",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_LineOfCreditFacilityCovenantsMinimumTangibleNetWorth": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line of credit facility, covenants, minimum tangible net worth.",
        "label": "Line Of Credit Facility Covenants Minimum Tangible Net Worth",
        "terseLabel": "Debt covenants, Minimum tangible net worth"
       }
      }
     },
     "localname": "LineOfCreditFacilityCovenantsMinimumTangibleNetWorth",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LineOfCreditFacilityExpirationMonthAndYear": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Line of credit facility expiration month and year.",
        "label": "Line Of Credit Facility Expiration Month And Year",
        "terseLabel": "Line of credit facility, expiration date"
       }
      }
     },
     "localname": "LineOfCreditFacilityExpirationMonthAndYear",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "gYearMonthItemType"
    },
    "ctg_LoanOnCashSurrenderValueOfLifeInsurance": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Loan on cash surrender value of life insurance.",
        "label": "Loan On Cash Surrender Value Of Life Insurance",
        "terseLabel": "Loans on cash surrender value"
       }
      }
     },
     "localname": "LoanOnCashSurrenderValueOfLifeInsurance",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_ManagedSupportContractsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Managed-support Contracts.",
        "label": "Managed Support Contracts [Member]",
        "terseLabel": "Managed-support Contracts [Member]"
       }
      }
     },
     "localname": "ManagedSupportContractsMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ManufacturingMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Manufacturing.",
        "label": "Manufacturing [Member]",
        "terseLabel": "Manufacturing [Member]"
       }
      }
     },
     "localname": "ManufacturingMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NetherlandsDefinedBenefitPlanNdbpMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Netherlands defined-benefit plan.",
        "label": "Netherlands Defined Benefit Plan Ndbp [Member]",
        "terseLabel": "NDBP [Member]"
       }
      }
     },
     "localname": "NetherlandsDefinedBenefitPlanNdbpMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NonEmployeeDirectorDeferredCompensationPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Non-employee director deferred compensation plan.",
        "label": "Non Employee Director Deferred Compensation Plan [Member]",
        "terseLabel": "Non Employee Director Deferred Compensation Plan [Member]"
       }
      }
     },
     "localname": "NonEmployeeDirectorDeferredCompensationPlanMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NonPerformanceSharesMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Non performance shares.",
        "label": "Non Performance Shares [Member]",
        "terseLabel": "Non Performance Shares [Member]"
       }
      }
     },
     "localname": "NonPerformanceSharesMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NumberOfIndividualsCoveredUnderInsurancePolicy": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of individuals covered under insurance policy.",
        "label": "Number Of Individuals Covered Under Insurance Policy",
        "terseLabel": "Number of former employees covered under insurance policies"
       }
      }
     },
     "localname": "NumberOfIndividualsCoveredUnderInsurancePolicy",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "ctg_NumberOfMajorCustomer": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of major customer.",
        "label": "Number Of Major Customer",
        "terseLabel": "Number of major customer"
       }
      }
     },
     "localname": "NumberOfMajorCustomer",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "ctg_NumberOfVerticalMarketFocusAreas": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of vertical market focus areas.",
        "label": "Number Of Vertical Market Focus Areas",
        "terseLabel": "Number of vertical market focus areas"
       }
      }
     },
     "localname": "NumberOfVerticalMarketFocusAreas",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesBasisOfPresentationAndConsolidationDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "ctg_OperatingLeasesMaximumPotentialExistingPaymentIncrease": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Operating leases, maximum potential existing payment increase.",
        "label": "Operating Leases Maximum Potential Existing Payment Increase",
        "terseLabel": "Maximum potential payment increase"
       }
      }
     },
     "localname": "OperatingLeasesMaximumPotentialExistingPaymentIncrease",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_PaymentsToAcquirePropertyPlantEquipmentAndSoftware": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Payments to acquire property, plant, equipment, and software.",
        "label": "Payments To Acquire Property Plant Equipment And Software",
        "terseLabel": "Capital expenditures"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantEquipmentAndSoftware",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_PercentageOfCompletionMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of completion.",
        "label": "Percentage Of Completion [Member]",
        "terseLabel": "Percentage-of-completion [Member]"
       }
      }
     },
     "localname": "PercentageOfCompletionMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ProceedsFromLifeInsuranceLoans": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10080.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Proceeds from life insurance loans.",
        "label": "Proceeds From Life Insurance Loans",
        "terseLabel": "Proceeds from life insurance loans"
       }
      }
     },
     "localname": "ProceedsFromLifeInsuranceLoans",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_ProgressBillingMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Progress billing.",
        "label": "Progress Billing [Member]",
        "terseLabel": "Progress Billing [Member]"
       }
      }
     },
     "localname": "ProgressBillingMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RevenueFromExternalCustomersPercent": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Revenue from external customers, percent.",
        "label": "Revenue From External Customers Percent",
        "verboseLabel": "Revenue percent"
       }
      }
     },
     "localname": "RevenueFromExternalCustomersPercent",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_RevenuesLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Revenues.",
        "label": "Revenues [Line Items]",
        "terseLabel": "Revenues [Line Items]"
       }
      }
     },
     "localname": "RevenuesLineItems",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_ScheduleOfRevenueByContractTypeLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule of revenue by contract type.",
        "label": "Schedule Of Revenue By Contract Type [Line Items]",
        "terseLabel": "Schedule Of Revenue By Contract Type [Line Items]"
       }
      }
     },
     "localname": "ScheduleOfRevenueByContractTypeLineItems",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_ScheduleOfRevenueByContractTypeTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule of revenue by contract type.",
        "label": "Schedule Of Revenue By Contract Type [Table]",
        "terseLabel": "Schedule Of Revenue By Contract Type [Table]"
       }
      }
     },
     "localname": "ScheduleOfRevenueByContractTypeTable",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_ScheduleOfRevenueByContractTypeTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule of revenue by contract type.",
        "label": "Schedule Of Revenue By Contract Type Table [Text Block]",
        "terseLabel": "Revenue by Contract Type"
       }
      }
     },
     "localname": "ScheduleOfRevenueByContractTypeTableTextBlock",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_ScheduleOfRevenuesTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule of revenues.",
        "label": "Schedule Of Revenues [Table]",
        "terseLabel": "Schedule Of Revenues [Table]"
       }
      }
     },
     "localname": "ScheduleOfRevenuesTable",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_ServicesAgreementExpirationDate": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Services agreement expiration date.",
        "label": "Services Agreement Expiration Date",
        "terseLabel": "Services agreement expiration date"
       }
      }
     },
     "localname": "ServicesAgreementExpirationDate",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails"
     ],
     "xbrltype": "dateItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueGranted": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award fair value granted.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Fair Value Granted",
        "terseLabel": "Stock option fair value vested"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueGranted",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueVestingPeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award fair value vesting period.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Fair Value Vesting Period",
        "terseLabel": "Stock option fair value vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueVestingPeriod",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardPercentageOfSharesToBeIncreasedBeforeVestingPeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share-based compensation arrangement by share-based payment award percentage of shares to be increased before vesting period.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Percentage Of Shares To Be Increased Before Vesting Period",
        "terseLabel": "Percentage of shares to be increased before vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardPercentageOfSharesToBeIncreasedBeforeVestingPeriod",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharePerformancePeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share-based compensation arrangement by share-based payment award, share performance period.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Share Performance Period",
        "terseLabel": "Shares performance period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharePerformancePeriod",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharePriceToBeIncreasedBeforeVestingPeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share-based compensation arrangement by share-based payment award, share price to be increased before vesting period..",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Share Price To Be Increased Before Vesting Period",
        "terseLabel": "Share price to be increased before vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharePriceToBeIncreasedBeforeVestingPeriod",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentGrantedUnit": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment granted unit.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Granted Unit",
        "terseLabel": "Granted units"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentGrantedUnit",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "ctg_SignificantCustomerAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Significant customer.",
        "label": "Significant Customer [Abstract]"
       }
      }
     },
     "localname": "SignificantCustomerAbstract",
     "nsuri": "http://www.ctg.com/20190329",
     "xbrltype": "stringItemType"
    },
    "ctg_SignificantJudgmentsPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Significant judgments.",
        "label": "Significant Judgments Policy [Text Block]",
        "terseLabel": "Significant Judgments"
       }
      }
     },
     "localname": "SignificantJudgmentsPolicyTextBlock",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_SoftCompanyMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Soft Company.",
        "label": "Soft Company [Member]",
        "terseLabel": "Soft Company [Member]"
       }
      }
     },
     "localname": "SoftCompanyMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_SwingLineLoansMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Swing line loans.",
        "label": "Swing Line Loans [Member]",
        "terseLabel": "Swing Line Loans [Member]"
       }
      }
     },
     "localname": "SwingLineLoansMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TaxesCollectedFromCustomersPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Taxes collected from customers.",
        "label": "Taxes Collected From Customers Policy [Text Block]",
        "terseLabel": "Taxes Collected from Customers"
       }
      }
     },
     "localname": "TaxesCollectedFromCustomersPolicyTextBlock",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_TechITPSFSAMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tech IT PSF S A.",
        "label": "Tech I T P S F S A [Member]",
        "terseLabel": "Tech-IT PSF S.A. [Member]"
       }
      }
     },
     "localname": "TechITPSFSAMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TechnologyServiceProvidersMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Technology service providers.",
        "label": "Technology Service Providers [Member]",
        "terseLabel": "Technology Service Providers [Member]"
       }
      }
     },
     "localname": "TechnologyServiceProvidersMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TimeAndMaterialMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Time and material.",
        "label": "Time And Material [Member]",
        "terseLabel": "Time-and-material [Member]"
       }
      }
     },
     "localname": "TimeAndMaterialMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Transaction price allocated to remaining performance obligations.",
        "label": "Transaction Price Allocated To Remaining Performance Obligations Policy [Text Block]",
        "terseLabel": "Transaction Price Allocated to Remaining Performance Obligations"
       }
      }
     },
     "localname": "TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_TwoThousandTenEquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "2010 equity award plan.",
        "label": "Two Thousand Ten Equity Award Plan [Member]",
        "terseLabel": "Two Thousand Ten Equity Award Plan"
       }
      }
     },
     "localname": "TwoThousandTenEquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_VestingPeriodOfThreeYearsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Vesting period of 3 years.",
        "label": "Vesting Period Of Three Years [Member]",
        "terseLabel": "Vesting Period of 3 Years [Member]"
       }
      }
     },
     "localname": "VestingPeriodOfThreeYearsMember",
     "nsuri": "http://www.ctg.com/20190329",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "dei_AmendmentFlag": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "If the value is true, then the document is an amendment to previously-filed/accepted document.",
        "label": "Amendment Flag",
        "terseLabel": "Amendment Flag"
       }
      }
     },
     "localname": "AmendmentFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_CurrentFiscalYearEndDate": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "End date of current fiscal year in the format --MM-DD.",
        "label": "Current Fiscal Year End Date",
        "terseLabel": "Current Fiscal Year End Date"
       }
      }
     },
     "localname": "CurrentFiscalYearEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentFiscalPeriodFocus": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This is focus fiscal period of the document report. For a first quarter 2006 quarterly report, which may also provide financial information from prior periods, the first fiscal quarter should be given as the fiscal period focus. Values: FY, Q1, Q2, Q3, Q4, H1, H2, M9, T1, T2, T3, M8, CY.",
        "label": "Document Fiscal Period Focus",
        "terseLabel": "Document Fiscal Period Focus"
       }
      }
     },
     "localname": "DocumentFiscalPeriodFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "fiscalPeriodItemType"
    },
    "dei_DocumentFiscalYearFocus": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This is focus fiscal year of the document report in CCYY format. For a 2006 annual report, which may also provide financial information from prior periods, fiscal 2006 should be given as the fiscal year focus. Example: 2006.",
        "label": "Document Fiscal Year Focus",
        "terseLabel": "Document Fiscal Year Focus"
       }
      }
     },
     "localname": "DocumentFiscalYearFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "gYearItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. The format of the date is CCYY-MM-DD.",
        "label": "Document Period End Date",
        "terseLabel": "Document Period End Date"
       }
      }
     },
     "localname": "DocumentPeriodEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentType": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The type of document being provided (such as 10-K, 10-Q, 485BPOS, etc). The document type is limited to the same value as the supporting SEC submission type, or the word 'Other'.",
        "label": "Document Type",
        "terseLabel": "Document Type"
       }
      }
     },
     "localname": "DocumentType",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "submissionTypeItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r313"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A unique 10-digit SEC-issued value to identify entities that have filed disclosures with the SEC. It is commonly abbreviated as CIK.",
        "label": "Entity Central Index Key",
        "terseLabel": "Entity Central Index Key"
       }
      }
     },
     "localname": "EntityCentralIndexKey",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "centralIndexKeyItemType"
    },
    "dei_EntityCommonStockSharesOutstanding": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate number of shares or other units outstanding of each of registrant's classes of capital or common stock or other ownership interests, if and as stated on cover of related periodic report. Where multiple classes or units exist define each class/interest by adding class of stock items such as Common Class A [Member], Common Class B [Member] or Partnership Interest [Member] onto the Instrument [Domain] of the Entity Listings, Instrument.",
        "label": "Entity Common Stock Shares Outstanding",
        "terseLabel": "Entity Common Stock, Shares Outstanding"
       }
      }
     },
     "localname": "EntityCommonStockSharesOutstanding",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "sharesItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r313"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate if registrant meets the emerging growth company criteria.",
        "label": "Entity Emerging Growth Company",
        "terseLabel": "Entity Emerging Growth Company"
       }
      }
     },
     "localname": "EntityEmergingGrowthCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r313"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicate whether the registrant is one of the following: (1) Large Accelerated Filer, (2) Accelerated Filer, (3) Non-accelerated Filer, (4) Smaller Reporting Company (Non-accelerated), (5) Smaller Reporting Accelerated Filer or (6) Smaller Reporting Company and Large Accelerated Filer. Definitions of these categories are stated in Rule 12b-2 of the Exchange Act. This information should be based on the registrant's current or most recent filing containing the related disclosure.",
        "label": "Entity Filer Category",
        "terseLabel": "Entity Filer Category"
       }
      }
     },
     "localname": "EntityFilerCategory",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "filerCategoryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r313"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The exact name of the entity filing the report as specified in its charter, which is required by forms filed with the SEC.",
        "label": "Entity Registrant Name",
        "terseLabel": "Entity Registrant Name"
       }
      }
     },
     "localname": "EntityRegistrantName",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r313"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Indicates that the company is a smaller reporting company with both a public float and revenues of less than $75 million.",
        "label": "Entity Small Business",
        "terseLabel": "Entity Small Business"
       }
      }
     },
     "localname": "EntitySmallBusiness",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_TradingSymbol": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Trading symbol of an instrument as listed on an exchange.",
        "label": "Trading Symbol",
        "terseLabel": "Trading Symbol"
       }
      }
     },
     "localname": "TradingSymbol",
     "nsuri": "http://xbrl.sec.gov/dei/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Europe [Member]",
        "terseLabel": "Europe [Member]"
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MajorCustomersAxis": {
     "auth_ref": [
      "r122",
      "r164",
      "r168"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Major Customers [Axis]",
        "terseLabel": "Customer"
       }
      }
     },
     "localname": "MajorCustomersAxis",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Maximum [Member]",
        "terseLabel": "Maximum [Member]",
        "verboseLabel": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Minimum [Member]",
        "terseLabel": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_NameOfMajorCustomerDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Name Of Major Customer [Domain]",
        "terseLabel": "Customer"
       }
      }
     },
     "localname": "NameOfMajorCustomerDomain",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_NorthAmericaMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "North America [Member]",
        "terseLabel": "North America [Member]"
       }
      }
     },
     "localname": "NorthAmericaMember",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r119",
      "r164",
      "r166",
      "r308"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Product Or Service [Axis]",
        "terseLabel": "Product and Service"
       }
      }
     },
     "localname": "ProductOrServiceAxis",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Products And Services [Domain]",
        "terseLabel": "Product and Service"
       }
      }
     },
     "localname": "ProductsAndServicesDomain",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Range [Axis]",
        "terseLabel": "Range"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Range [Member]",
        "terseLabel": "Range"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Segment Geographical [Domain]",
        "terseLabel": "Geographical"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r121",
      "r164",
      "r167",
      "r310",
      "r311"
     ],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement Geographical [Axis]",
        "terseLabel": "Geographical"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingPoliciesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Accounting Policies [Abstract]"
       }
      }
     },
     "localname": "AccountingPoliciesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingStandardsUpdate201602Member": {
     "auth_ref": [
      "r278"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accounting Standards Update 2016-02 Leases (Topic 842).",
        "label": "Accounting Standards Update201602 [Member]",
        "terseLabel": "ASU 2016-02 [Member]"
       }
      }
     },
     "localname": "AccountingStandardsUpdate201602Member",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r26"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10140.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Accounts Payable Current",
        "terseLabel": "Accounts payable"
       }
      }
     },
     "localname": "AccountsPayableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r12",
      "r165"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10290.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount due from customers or clients, within one year of the balance sheet date (or the normal operating cycle, whichever is longer), for goods or services (including trade receivables) that have been delivered or sold in the normal course of business, reduced to the estimated net realizable fair value by an allowance established by the entity of the amount it deems uncertain of collection.",
        "label": "Accounts Receivable Net Current",
        "terseLabel": "Accounts receivable, net of allowances of $96 and $104 in 2019 and 2018, respectively",
        "verboseLabel": "Accounts receivable, net"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r24",
      "r143"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of accumulated depreciation, depletion and amortization for physical assets used in the normal conduct of business to produce goods and services.",
        "label": "Accumulated Depreciation Depletion And Amortization Property Plant And Equipment",
        "negatedTerseLabel": "Accumulated depreciation and amortization"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax": {
     "auth_ref": [
      "r39",
      "r44"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": 10030.0,
       "parentTag": "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after tax, of accumulated other comprehensive (income) loss for defined benefit plan, that has not been recognized in net periodic benefit cost (credit).",
        "label": "Accumulated Other Comprehensive Income Loss Defined Benefit Pension And Other Postretirement Plans Net Of Tax",
        "negatedLabel": "Pension loss, net of tax of $0 in both 2019 and 2018"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r38",
      "r41",
      "r43",
      "r44",
      "r275",
      "r276"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated adjustment, net of tax, that results from the process of translating subsidiary financial statements and foreign equity investments into the reporting currency from the functional currency of the reporting entity, net of reclassification of realized foreign currency translation gains or losses.",
        "label": "Accumulated Other Comprehensive Income Loss Foreign Currency Translation Adjustment Net Of Tax",
        "terseLabel": "Foreign currency"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r41",
      "r43",
      "r44"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10070.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated change in equity from transactions and other events and circumstances from non-owner sources, net of tax effect, at period end. Excludes Net Income (Loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners. Includes foreign currency translation items, certain pension adjustments, unrealized gains and losses on certain investments in debt and equity securities, other than temporary impairment (OTTI) losses related to factors other than credit losses on available-for-sale and held-to-maturity debt securities that an entity does not intend to sell and it is not more likely than not that the entity will be required to sell before recovery of the amortized cost basis, as well as changes in the fair value of derivatives related to the effective portion of a designated cash flow hedge.",
        "label": "Accumulated Other Comprehensive Income Loss Net Of Tax",
        "terseLabel": "Accumulated other comprehensive loss",
        "totalLabel": "Accumulated other comprehensive loss"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTaxAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Accumulated Other Comprehensive Income Loss Net Of Tax [Abstract]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossNetOfTaxAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r40",
      "r44",
      "r47",
      "r260"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated increase (decrease) in equity from transactions and other events and circumstances from non-owner sources, attributable to the parent. Excludes net income (loss), and accumulated changes in equity from transactions resulting from investments by owners and distributions to owners.",
        "label": "Accumulated Other Comprehensive Income [Member]",
        "terseLabel": "Accumulated Other Comprehensive Income (loss) [Member]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AcquiredFiniteLivedIntangibleAssetsLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Acquired Finite Lived Intangible Assets [Line Items]",
        "terseLabel": "Acquired Finite Lived Intangible Assets [Line Items]"
       }
      }
     },
     "localname": "AcquiredFiniteLivedIntangibleAssetsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife": {
     "auth_ref": [
      "r136"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Acquired Finite Lived Intangible Assets Weighted Average Useful Life",
        "terseLabel": "Estimated Useful Life"
       }
      }
     },
     "localname": "AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r13"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10040.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value received from shareholders in common stock-related transactions that are in excess of par value or stated value and amounts received from other stock-related transactions. Includes only common stock transactions (excludes preferred stock transactions). May be called contributed capital, capital in excess of par, capital surplus, or paid-in capital.",
        "label": "Additional Paid In Capital Common Stock",
        "terseLabel": "Capital in excess of par value"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Excess of issue price over par or stated value of the entity's capital stock and amounts received from other transactions involving the entity's stock or stockholders.",
        "label": "Additional Paid In Capital [Member]",
        "terseLabel": "Capital in Excess of Par Value [Member]"
       }
      }
     },
     "localname": "AdditionalPaidInCapitalMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentsForNewAccountingPronouncementsAxis": {
     "auth_ref": [
      "r88"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by new accounting pronouncement.",
        "label": "Adjustments For New Accounting Pronouncements [Axis]",
        "terseLabel": "Adjustments for New Accounting Pronouncements"
       }
      }
     },
     "localname": "AdjustmentsForNewAccountingPronouncementsAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Adjustments To Reconcile Net Income Loss To Cash Provided By Used In Operating Activities [Abstract]",
        "terseLabel": "Adjustments to reconcile net income to net cash provided by operating activities:"
       }
      }
     },
     "localname": "AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "auth_ref": [
      "r36",
      "r124"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A valuation allowance for trade and other receivables due to an Entity within one year (or the normal operating cycle, whichever is longer) that are expected to be uncollectible.",
        "label": "Allowance For Doubtful Accounts Receivable Current",
        "terseLabel": "Accounts receivable, allowances"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "auth_ref": [
      "r99"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) or earnings per unit (EPU) in the future that were not included in the computation of diluted EPS or EPU because to do so would increase EPS or EPU amounts or decrease loss per share or unit amounts for the period presented.",
        "label": "Antidilutive Securities Excluded From Computation Of Earnings Per Share Amount",
        "terseLabel": "Antidilutive securities not included in the computation of earnings per share"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis": {
     "auth_ref": [
      "r99"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of antidilutive security.",
        "label": "Antidilutive Securities Excluded From Computation Of Earnings Per Share By Antidilutive Securities [Axis]",
        "terseLabel": "Antidilutive Securities"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Antidilutive Securities Excluded From Computation Of Earnings Per Share [Line Items]",
        "terseLabel": "Antidilutive Securities Excluded From Computation Of Earnings Per Share [Line Items]"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AntidilutiveSecuritiesNameDomain": {
     "auth_ref": [
      "r99"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Incremental common shares attributable to securities that were not included in diluted earnings per share (EPS) because to do so would increase EPS amounts or decrease loss per share amounts for the period presented.",
        "label": "Antidilutive Securities Name [Domain]",
        "terseLabel": "Antidilutive Securities, Name"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r115",
      "r296",
      "r302"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are recognized. Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "Assets",
        "totalLabel": "Total assets"
       }
      }
     },
     "localname": "Assets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Assets [Abstract]",
        "terseLabel": "Assets"
       }
      }
     },
     "localname": "AssetsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r2",
      "r3",
      "r37"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10190.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all assets that are expected to be realized in cash, sold, or consumed within one year (or the normal operating cycle, if longer). Assets are probable future economic benefits obtained or controlled by an entity as a result of past transactions or events.",
        "label": "Assets Current",
        "totalLabel": "Total current assets"
       }
      }
     },
     "localname": "AssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Assets Current [Abstract]",
        "terseLabel": "Current Assets:"
       }
      }
     },
     "localname": "AssetsCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AwardDateAxis": {
     "auth_ref": [
      "r209",
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by date or year of grant, pertaining to equity-based compensation arrangements.",
        "label": "Award Date [Axis]",
        "terseLabel": "Award Date"
       }
      }
     },
     "localname": "AwardDateAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AwardDateDomain": {
     "auth_ref": [
      "r209",
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Date or year of grant of equity-based compensation.",
        "label": "Award Date [Domain]",
        "terseLabel": "Award Date"
       }
      }
     },
     "localname": "AwardDateDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r209",
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by award type pertaining to equity-based compensation.",
        "label": "Award Type [Axis]",
        "terseLabel": "Award Type"
       }
      }
     },
     "localname": "AwardTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BasisOfAccountingPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for basis of accounting, or basis of presentation, used to prepare the financial statements (for example, US Generally Accepted Accounting Principles, Other Comprehensive Basis of Accounting, IFRS).",
        "label": "Basis Of Accounting Policy Policy [Text Block]",
        "terseLabel": "Basis of Presentation and Consolidation"
       }
      }
     },
     "localname": "BasisOfAccountingPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Identification of the acquiree in a material business combination (or series of individually immaterial business combinations), which may include the name or other type of identification of the acquiree.",
        "label": "Business Acquisition Acquiree [Domain]",
        "terseLabel": "Business Acquisition, Acquiree"
       }
      }
     },
     "localname": "BusinessAcquisitionAcquireeDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "auth_ref": [
      "r236",
      "r237"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by business combination or series of individually immaterial business combinations.",
        "label": "Business Acquisition [Axis]",
        "terseLabel": "Business Acquisition"
       }
      }
     },
     "localname": "BusinessAcquisitionAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Business Acquisition [Line Items]",
        "terseLabel": "Business Acquisition [Line Items]"
       }
      }
     },
     "localname": "BusinessAcquisitionLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired": {
     "auth_ref": [
      "r235"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of voting equity interests acquired at the acquisition date in the business combination.",
        "label": "Business Acquisition Percentage Of Voting Interests Acquired",
        "terseLabel": "Business acquisition, percentage acquired"
       }
      }
     },
     "localname": "BusinessAcquisitionPercentageOfVotingInterestsAcquired",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_BusinessCombinationAcquisitionRelatedCosts": {
     "auth_ref": [
      "r234"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This element represents acquisition-related costs incurred to effect a business combination which costs have been expensed during the period. Such costs include finder's fees; advisory, legal, accounting, valuation, and other professional or consulting fees; general administrative costs, including the costs of maintaining an internal acquisitions department; and may include costs of registering and issuing debt and equity securities.",
        "label": "Business Combination Acquisition Related Costs",
        "terseLabel": "Acquisition related costs"
       }
      }
     },
     "localname": "BusinessCombinationAcquisitionRelatedCosts",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r247",
      "r248",
      "r250"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of consideration transferred, consisting of acquisition-date fair value of assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interest issued by the acquirer.",
        "label": "Business Combination Consideration Transferred1",
        "totalLabel": "Fair value of purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferred1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsBasisForAmount": {
     "auth_ref": [
      "r244",
      "r245",
      "r246",
      "r253"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "For contingent consideration arrangements recognized in connection with a business combination, this element represents a description of the basis for determining the amount of the payment recorded.",
        "label": "Business Combination Contingent Consideration Arrangements Basis For Amount",
        "terseLabel": "Earn-out contingency liability, basis for amount"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationArrangementsBasisForAmount",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiability": {
     "auth_ref": [
      "r245",
      "r249",
      "r252"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liability recognized arising from contingent consideration in a business combination.",
        "label": "Business Combination Contingent Consideration Liability",
        "terseLabel": "Earn-out contingency liability"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationLiability",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "auth_ref": [
      "r254"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for a business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities. The disclosure may include leverage buyout transactions (as applicable).",
        "label": "Business Combination Disclosure [Text Block]",
        "terseLabel": "Acquisitions"
       }
      }
     },
     "localname": "BusinessCombinationDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitions"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessCombinationLiabilitiesArisingFromContingenciesAmountRecognized": {
     "auth_ref": [
      "r240"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount, measured at acquisition-date fair value, of all liabilities assumed that arise from contingencies and were recognized by the entity.",
        "label": "Business Combination Liabilities Arising From Contingencies Amount Recognized",
        "terseLabel": "Fair value of the remaining contingent consideration liability"
       }
      }
     },
     "localname": "BusinessCombinationLiabilitiesArisingFromContingenciesAmountRecognized",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of assets acquired at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Assets",
        "totalLabel": "Total assets acquired"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Assets [Abstract]",
        "terseLabel": "Assets Acquired:"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssetsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10080.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions, acquired at the acquisition date. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Cash And Equivalents",
        "terseLabel": "Cash"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10100.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Assets Prepaid Expense And Other Assets",
        "terseLabel": "Prepaids &amp; other"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10090.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Assets Receivables",
        "terseLabel": "Accounts receivable"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10030.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities incurred for goods and services received that are used in an entity's business and related party payables, assumed at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Liabilities Accounts Payable",
        "terseLabel": "Accounts payable"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOther": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10050.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of other liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Liabilities Other",
        "terseLabel": "Other short-term liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOther",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilitiesNoncurrent": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10060.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary difference assumed at the acquisition date that are classified as noncurrent.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Deferred Tax Liabilities Noncurrent",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles": {
     "auth_ref": [
      "r238",
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10120.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of identifiable intangible assets recognized as of the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Intangibles",
        "terseLabel": "Acquired intangibles",
        "verboseLabel": "Fair value of purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities assumed at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Liabilities",
        "totalLabel": "Total liabilities assumed"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Liabilities [Abstract]",
        "terseLabel": "Liabilities Assumed:"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10070.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of other liabilities due after one year or the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Noncurrent Liabilities Other",
        "terseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment": {
     "auth_ref": [
      "r238",
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10110.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of property, plant, and equipment recognized as of the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Property Plant And Equipment",
        "terseLabel": "Property &amp; equipment, net"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet": {
     "auth_ref": [
      "r239"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.",
        "label": "Business Combination Recognized Identifiable Assets Acquired Goodwill And Liabilities Assumed Net",
        "totalLabel": "Net assets acquired"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Business Combinations [Abstract]"
       }
      }
     },
     "localname": "BusinessCombinationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareAccumulatedAmortization": {
     "auth_ref": [
      "r312"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "For each balance sheet presented, the amount of accumulated amortization for capitalized computer software costs.",
        "label": "Capitalized Computer Software Accumulated Amortization",
        "terseLabel": "Capitalized software costs, accumulated amortization"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareAccumulatedAmortization",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareAdditions": {
     "auth_ref": [
      "r135"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Additions made to capitalized computer software costs during the period.",
        "label": "Capitalized Computer Software Additions",
        "terseLabel": "Capitalized computer software, additions"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareAdditions",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r1",
      "r20",
      "r76"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10280.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of currency on hand as well as demand deposits with banks or financial institutions. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates. Excludes cash and cash equivalents within disposal group and discontinued operation.",
        "label": "Cash And Cash Equivalents At Carrying Value",
        "terseLabel": "Cash and cash equivalents"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "auth_ref": [
      "r7",
      "r78",
      "r80",
      "r123"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for cash and cash equivalents, including the policy for determining which items are treated as cash equivalents. Other information that may be disclosed includes (1) the nature of any restrictions on the entity's use of its cash and cash equivalents, (2) whether the entity's cash and cash equivalents are insured or expose the entity to credit risk, (3) the classification of any negative balance accounts (overdrafts), and (4) the carrying basis of cash equivalents (for example, at cost) and whether the carrying amount of cash equivalents approximates fair value.",
        "label": "Cash And Cash Equivalents Policy [Text Block]",
        "terseLabel": "Cash and Cash Equivalents, and Cash Overdrafts"
       }
      }
     },
     "localname": "CashAndCashEquivalentsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r71",
      "r76",
      "r79"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations",
        "periodEndLabel": "Cash and cash equivalents at end of quarter",
        "periodStartLabel": "Cash and cash equivalents at beginning of year"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r71",
      "r274"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in cash, cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; including effect from exchange rate change. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Period Increase Decrease Including Exchange Rate Effect",
        "totalLabel": "Net increase (decrease) in cash and cash equivalents"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashSurrenderValueOfLifeInsurance": {
     "auth_ref": [
      "r4",
      "r25"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10250.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Carrying amount as of the balance sheet date of amounts which could be received based on the terms of the insurance contract upon surrendering life policies owned by the entity.",
        "label": "Cash Surrender Value Of Life Insurance",
        "terseLabel": "Cash surrender value of life insurance, net",
        "verboseLabel": "Net cash surrender values of life insurance"
       }
      }
     },
     "localname": "CashSurrenderValueOfLifeInsurance",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ClassOfStockDisclosuresAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Class Of Stock Disclosures [Abstract]"
       }
      }
     },
     "localname": "ClassOfStockDisclosuresAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Stock that is subordinate to all other stock of the issuer.",
        "label": "Common Stock [Member]",
        "terseLabel": "Common Stock [Member]"
       }
      }
     },
     "localname": "CommonStockMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r11"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Face amount or stated value per share of common stock.",
        "label": "Common Stock Par Or Stated Value Per Share",
        "terseLabel": "Common stock, par value"
       }
      }
     },
     "localname": "CommonStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r11"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The maximum number of common shares permitted to be issued by an entity's charter and bylaws.",
        "label": "Common Stock Shares Authorized",
        "terseLabel": "Common stock, shares authorized"
       }
      }
     },
     "localname": "CommonStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r11"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total number of common shares of an entity that have been sold or granted to shareholders (includes common shares that were issued, repurchased and remain in the treasury). These shares represent capital invested by the firm's shareholders and owners, and may be all or only a portion of the number of shares authorized. Shares issued include shares outstanding and shares held in the treasury.",
        "label": "Common Stock Shares Issued",
        "periodEndLabel": "Balance, shares",
        "periodStartLabel": "Balance, shares",
        "terseLabel": "Common stock, shares issued"
       }
      }
     },
     "localname": "CommonStockSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValue": {
     "auth_ref": [
      "r11"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10030.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate par or stated value of issued nonredeemable common stock (or common stock redeemable solely at the option of the issuer). This item includes treasury stock repurchased by the entity. Note: elements for number of nonredeemable common shares, par value and other disclosure concepts are in another section within stockholders' equity.",
        "label": "Common Stock Value",
        "terseLabel": "Common stock, par value $0.01 per share, 150,000,000 shares authorized; 27,017,824 shares issued in 2019 and 2018"
       }
      }
     },
     "localname": "CommonStockValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CompensationAndRetirementDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Compensation And Retirement Disclosure [Abstract]"
       }
      }
     },
     "localname": "CompensationAndRetirementDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r50",
      "r52",
      "r53"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax of increase (decrease) in equity from transactions and other events and circumstances from net income and other comprehensive income, attributable to parent entity. Excludes changes in equity resulting from investments by owners and distributions to owners.",
        "label": "Comprehensive Income Net Of Tax",
        "totalLabel": "Comprehensive income (loss)"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomeNoteTextBlock": {
     "auth_ref": [
      "r60"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for comprehensive income, which includes, but is not limited to, 1) the amount of income tax expense or benefit allocated to each component of other comprehensive income, including reclassification adjustments, 2) the reclassification adjustments for each classification of other comprehensive income and 3) the ending accumulated balances for each component of comprehensive income.",
        "label": "Comprehensive Income Note [Text Block]",
        "terseLabel": "Accumulated Other Comprehensive Loss"
       }
      }
     },
     "localname": "ComprehensiveIncomeNoteTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLoss"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "auth_ref": [
      "r108",
      "r109",
      "r271",
      "r272"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The denominator in a calculation of a disclosed concentration risk percentage.",
        "label": "Concentration Risk Benchmark [Domain]",
        "terseLabel": "Concentration Risk Benchmark"
       }
      }
     },
     "localname": "ConcentrationRiskBenchmarkDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "auth_ref": [
      "r108",
      "r109",
      "r271",
      "r272",
      "r309"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by benchmark of concentration risk.",
        "label": "Concentration Risk By Benchmark [Axis]",
        "terseLabel": "Concentration Risk Benchmark"
       }
      }
     },
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "auth_ref": [
      "r108",
      "r109",
      "r271",
      "r272",
      "r309"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of concentration risk, for example, but not limited to, asset, liability, net assets, geographic, customer, employees, supplier, lender.",
        "label": "Concentration Risk By Type [Axis]",
        "terseLabel": "Concentration Risk Type"
       }
      }
     },
     "localname": "ConcentrationRiskByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskCreditRisk": {
     "auth_ref": [
      "r103",
      "r300"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for credit risk.",
        "label": "Concentration Risk Credit Risk",
        "terseLabel": "Concentration Risk, Credit Risk"
       }
      }
     },
     "localname": "ConcentrationRiskCreditRisk",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskDisclosureTextBlock": {
     "auth_ref": [
      "r111"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for any concentrations existing at the date of the financial statements that make an entity vulnerable to a reasonably possible, near-term, severe impact. This disclosure informs financial statement users about the general nature of the risk associated with the concentration, and may indicate the percentage of concentration risk as of the balance sheet date.",
        "label": "Concentration Risk Disclosure [Text Block]",
        "terseLabel": "Significant Customers"
       }
      }
     },
     "localname": "ConcentrationRiskDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomers"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Concentration Risk [Line Items]",
        "terseLabel": "Concentration Risk [Line Items]"
       }
      }
     },
     "localname": "ConcentrationRiskLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "auth_ref": [
      "r108",
      "r109",
      "r271",
      "r272"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "For an entity that discloses a concentration risk in relation to quantitative amount, which serves as the \"benchmark\" (or denominator) in the equation, this concept represents the concentration percentage derived from the division.",
        "label": "Concentration Risk Percentage1",
        "positiveLabel": "Revenue percent",
        "terseLabel": "Revenue, percent",
        "verboseLabel": "Total revenue"
       }
      }
     },
     "localname": "ConcentrationRiskPercentage1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ConcentrationRiskTable": {
     "auth_ref": [
      "r104",
      "r108",
      "r109",
      "r110",
      "r271",
      "r273"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Describes the nature of a concentration, a benchmark to which it is compared, and the percentage that the risk is to the benchmark.",
        "label": "Concentration Risk [Table]",
        "terseLabel": "Concentration Risk [Table]"
       }
      }
     },
     "localname": "ConcentrationRiskTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "auth_ref": [
      "r108",
      "r109",
      "r271",
      "r272"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "For an entity that discloses a concentration risk as a percentage of some financial balance or benchmark, identifies the type (for example, asset, liability, net assets, geographic, customer, employees, supplier, lender) of the concentration.",
        "label": "Concentration Risk Type [Domain]",
        "terseLabel": "Concentration Risk Type"
       }
      }
     },
     "localname": "ConcentrationRiskTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure": {
     "auth_ref": [
      "r269"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fair value of contingent consideration in a business combination that is classified in shareholders' equity.",
        "label": "Contingent Consideration Classified As Equity Fair Value Disclosure",
        "terseLabel": "Fair value of acquisition"
       }
      }
     },
     "localname": "ContingentConsiderationClassifiedAsEquityFairValueDisclosure",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ContractWithCustomerBasisOfPricingAxis": {
     "auth_ref": [
      "r164",
      "r169"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by basis of pricing for contract representing right to consideration in exchange for good or service transferred to customer.",
        "label": "Contract With Customer Basis Of Pricing [Axis]",
        "terseLabel": "Contract with Customer, Basis of Pricing"
       }
      }
     },
     "localname": "ContractWithCustomerBasisOfPricingAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ContractWithCustomerBasisOfPricingDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Basis of pricing for contract with customer. Includes, but is not limited to, fixed-price and time-and-materials contracts.",
        "label": "Contract With Customer Basis Of Pricing [Domain]",
        "terseLabel": "Contract with Customer, Basis of Pricing"
       }
      }
     },
     "localname": "ContractWithCustomerBasisOfPricingDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "auth_ref": [
      "r158",
      "r159",
      "r165"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10160.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of obligation to transfer good or service to customer for which consideration has been received or is receivable, classified as current.",
        "label": "Contract With Customer Liability Current",
        "terseLabel": "Advance billings on contracts"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CreditFacilityAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of credit facility. Credit facilities provide capital to borrowers without the need to structure a loan for each borrowing.",
        "label": "Credit Facility [Axis]",
        "terseLabel": "Credit Facility"
       }
      }
     },
     "localname": "CreditFacilityAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CreditFacilityDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Type of credit facility. Credit facilities provide capital to borrowers without the need to structure a loan for each borrowing.",
        "label": "Credit Facility [Domain]",
        "terseLabel": "Credit Facility"
       }
      }
     },
     "localname": "CreditFacilityDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "auth_ref": [
      "r105"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Reflects the percentage that revenues in the period from one or more significant customers is to net revenues, as defined by the entity, such as total net revenues, product line revenues, segment revenues. The risk is the materially adverse effects of loss of a significant customer.",
        "label": "Customer Concentration Risk [Member]",
        "terseLabel": "Customer Concentration Risk [Member]"
       }
      }
     },
     "localname": "CustomerConcentrationRiskMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CustomerRelationshipsMember": {
     "auth_ref": [
      "r243"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships.",
        "label": "Customer Relationships [Member]",
        "terseLabel": "Customer Relationships [Member]"
       }
      }
     },
     "localname": "CustomerRelationshipsMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Debt Disclosure [Abstract]"
       }
      }
     },
     "localname": "DebtDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_DebtDisclosureTextBlock": {
     "auth_ref": [
      "r150"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for information about short-term and long-term debt arrangements, which includes amounts of borrowings under each line of credit, note payable, commercial paper issue, bonds indenture, debenture issue, own-share lending arrangements and any other contractual agreement to repay funds, and about the underlying arrangements, rationale for a classification as long-term, including repayment terms, interest rates, collateral provided, restrictions on use of assets and activities, whether or not in compliance with debt covenants, and other matters important to users of the financial statements, such as the effects of refinancing and noncompliance with debt covenants.",
        "label": "Debt Disclosure [Text Block]",
        "terseLabel": "Debt"
       }
      }
     },
     "localname": "DebtDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebt"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DebtInstrumentBasisSpreadOnVariableRate1": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage points added to the reference rate to compute the variable rate on the debt instrument.",
        "label": "Debt Instrument Basis Spread On Variable Rate1",
        "terseLabel": "Basis spread on variable rate"
       }
      }
     },
     "localname": "DebtInstrumentBasisSpreadOnVariableRate1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualByTypeOfCompensationPensionAndOtherPostretirementBenefitsMember": {
     "auth_ref": [
      "r171",
      "r173",
      "r174",
      "r175"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Deferred compensation arrangement providing pension or other postretirement benefits, to employee or their beneficiary, that are not equivalent to defined benefit plan.",
        "label": "Deferred Compensation Arrangement With Individual By Type Of Compensation Pension And Other Postretirement Benefits [Member]",
        "terseLabel": "Deferred Compensation and Other Benefits [Member]"
       }
      }
     },
     "localname": "DeferredCompensationArrangementWithIndividualByTypeOfCompensationPensionAndOtherPostretirementBenefitsMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualContributionsByEmployer": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of contributions made by employer into fund established for purposes of making future disbursement to individual in accordance with deferred compensation arrangement.",
        "label": "Deferred Compensation Arrangement With Individual Contributions By Employer",
        "terseLabel": "Benefit plan, employer contributions"
       }
      }
     },
     "localname": "DeferredCompensationArrangementWithIndividualContributionsByEmployer",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualDistributionPaid": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of distribution made to individual in accordance with deferred compensation arrangement.",
        "label": "Deferred Compensation Arrangement With Individual Distribution Paid",
        "terseLabel": "Benefit payments"
       }
      }
     },
     "localname": "DeferredCompensationArrangementWithIndividualDistributionPaid",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualExcludingShareBasedPaymentsAndPostretirementBenefitsLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Deferred Compensation Arrangement With Individual Excluding Share Based Payments And Postretirement Benefits [Line Items]",
        "terseLabel": "Deferred Compensation Text Details [Line Items]"
       }
      }
     },
     "localname": "DeferredCompensationArrangementWithIndividualExcludingShareBasedPaymentsAndPostretirementBenefitsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualPostretirementBenefitsByTypeOfDeferredCompensationAxis": {
     "auth_ref": [
      "r173",
      "r174",
      "r175"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of deferred compensation related to other postretirement benefit arrangements that are not equivalent to a defined benefit other postretirement benefit plan. Includes, but is not limited to, employment contracts with one or more selected officers or key employees. Excludes equity-based compensation plans, defined benefit pension plans and defined benefit other postretirement benefit plans.",
        "label": "Deferred Compensation Arrangement With Individual Postretirement Benefits By Type Of Deferred Compensation [Axis]",
        "terseLabel": "Other Postretirement Benefits, Individual Contracts, Type of Deferred Compensation"
       }
      }
     },
     "localname": "DeferredCompensationArrangementWithIndividualPostretirementBenefitsByTypeOfDeferredCompensationAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10100.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate carrying value as of the balance sheet date of the liabilities for all deferred compensation arrangements payable beyond one year (or the operating cycle, if longer).",
        "label": "Deferred Compensation Liability Classified Noncurrent",
        "terseLabel": "Deferred compensation benefits"
       }
      }
     },
     "localname": "DeferredCompensationLiabilityClassifiedNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNetNoncurrent": {
     "auth_ref": [
      "r224",
      "r225",
      "r226",
      "r227",
      "r230"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10220.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards classified as noncurrent.",
        "label": "Deferred Tax Assets Net Noncurrent",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredTaxAssetsNetNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesNoncurrent": {
     "auth_ref": [
      "r224",
      "r226",
      "r227"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10120.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after deferred tax asset, of deferred tax liability attributable to taxable differences, with jurisdictional netting and classified as noncurrent.",
        "label": "Deferred Tax Liabilities Noncurrent",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanActualReturnOnPlanAssets": {
     "auth_ref": [
      "r179",
      "r203"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in plan assets of defined benefit plan from actual return (loss) determined by change in fair value of plan assets adjusted for contributions, benefit payments, and other expenses.",
        "label": "Defined Benefit Plan Actual Return On Plan Assets",
        "terseLabel": "Return on plan assets"
       }
      }
     },
     "localname": "DefinedBenefitPlanActualReturnOnPlanAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanAmortizationOfGainsLosses": {
     "auth_ref": [
      "r189",
      "r201",
      "r203"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 10040.0,
       "parentTag": "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of gain (loss) recognized in net periodic benefit (cost) credit of defined benefit plan.",
        "label": "Defined Benefit Plan Amortization Of Gains Losses",
        "negatedLabel": "Amortization of actuarial loss"
       }
      }
     },
     "localname": "DefinedBenefitPlanAmortizationOfGainsLosses",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets": {
     "auth_ref": [
      "r192"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average rate of return on plan assets, reflecting average rate of earnings expected on existing plan assets and expected contributions, used to determine net periodic benefit cost of defined benefit plan.",
        "label": "Defined Benefit Plan Assumptions Used Calculating Net Periodic Benefit Cost Expected Long Term Return On Assets",
        "terseLabel": "Targeted minimum return"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedBenefitPlanChangeInFairValueOfPlanAssetsRollForward": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A roll forward is a reconciliation of a concept from the beginning of a period to the end of a period.",
        "label": "Defined Benefit Plan Change In Fair Value Of Plan Assets Roll Forward",
        "terseLabel": "Reconciliation of Fair Value of Plan Assets"
       }
      }
     },
     "localname": "DefinedBenefitPlanChangeInFairValueOfPlanAssetsRollForward",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DefinedBenefitPlanContributionsByEmployer": {
     "auth_ref": [
      "r181",
      "r183",
      "r184",
      "r202",
      "r203"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of contribution received by defined benefit plan from employer which increases plan assets.",
        "label": "Defined Benefit Plan Contributions By Employer",
        "terseLabel": "Employer contributions"
       }
      }
     },
     "localname": "DefinedBenefitPlanContributionsByEmployer",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanDisclosureLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Defined Benefit Plan Disclosure [Line Items]",
        "terseLabel": "Defined Benefit Plan Disclosure [Line Items]"
       }
      }
     },
     "localname": "DefinedBenefitPlanDisclosureLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureEmployerContributionsRemainderOfFiscalYear": {
     "auth_ref": [
      "r202"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of contributions expected to be received by defined benefit plan from employer in fiscal year. Excludes contributions paid by employer in current fiscal year.",
        "label": "Defined Benefit Plan Expected Future Employer Contributions Remainder Of Fiscal Year",
        "terseLabel": "Estimated 2019 future employer contributions"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureEmployerContributionsRemainderOfFiscalYear",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedReturnOnPlanAssets": {
     "auth_ref": [
      "r188",
      "r200",
      "r203"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 10030.0,
       "parentTag": "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of expected return (loss) recognized in net periodic benefit (cost) credit, calculated based on expected long-term rate of return and market-related value of plan assets of defined benefit plan.",
        "label": "Defined Benefit Plan Expected Return On Plan Assets",
        "negatedLabel": "Expected return on assets"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedReturnOnPlanAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanFairValueOfPlanAssets": {
     "auth_ref": [
      "r178",
      "r183",
      "r184",
      "r203"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of asset segregated and restricted to provide benefit under defined benefit plan. Asset includes, but is not limited to, stock, bond, other investment, earning from investment, and contribution by employer and employee.",
        "label": "Defined Benefit Plan Fair Value Of Plan Assets",
        "periodEndLabel": "Fair value of plan assets at end of quarter",
        "periodStartLabel": "Fair value of plan assets at beginning of period"
       }
      }
     },
     "localname": "DefinedBenefitPlanFairValueOfPlanAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanInterestCost": {
     "auth_ref": [
      "r177",
      "r187",
      "r199",
      "r203"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cost recognized for passage of time related to defined benefit plan.",
        "label": "Defined Benefit Plan Interest Cost",
        "terseLabel": "Interest cost"
       }
      }
     },
     "localname": "DefinedBenefitPlanInterestCost",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost": {
     "auth_ref": [
      "r185",
      "r197",
      "r203"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of net periodic benefit cost (credit) for defined benefit plan.",
        "label": "Defined Benefit Plan Net Periodic Benefit Cost",
        "totalLabel": "Net periodic pension cost"
       }
      }
     },
     "localname": "DefinedBenefitPlanNetPeriodicBenefitCost",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanPlanAssetsBenefitsPaid": {
     "auth_ref": [
      "r182",
      "r204"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of payment to participant under defined benefit plan which decreases plan assets. For pension plan, payment includes, but is not limited to, pension benefits and death benefits. For other postretirement plan, payment includes, but is not limited to, prescription drug benefits, health care benefits, life insurance benefits, and legal, educational and advisory services.",
        "label": "Defined Benefit Plan Plan Assets Benefits Paid",
        "negatedLabel": "Benefits paid"
       }
      }
     },
     "localname": "DefinedBenefitPlanPlanAssetsBenefitsPaid",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanPlanAssetsForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r180"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) plan assets of defined benefit plan.",
        "label": "Defined Benefit Plan Plan Assets Foreign Currency Translation Gain Loss",
        "terseLabel": "Effect of exchange rate changes"
       }
      }
     },
     "localname": "DefinedBenefitPlanPlanAssetsForeignCurrencyTranslationGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanServiceCost": {
     "auth_ref": [
      "r176",
      "r186",
      "r198",
      "r203"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cost for actuarial present value of benefits attributed to service rendered by employee for defined benefit plan.",
        "label": "Defined Benefit Plan Service Cost",
        "terseLabel": "Service cost"
       }
      }
     },
     "localname": "DefinedBenefitPlanServiceCost",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "auth_ref": [
      "r74",
      "r113"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10200.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate expense recognized in the current period that allocates the cost of tangible assets, intangible assets, or depleting assets to periods that benefit from use of the assets.",
        "label": "Depreciation Depletion And Amortization",
        "terseLabel": "Depreciation and amortization expense"
       }
      }
     },
     "localname": "DepreciationDepletionAndAmortization",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DirectOperatingCosts": {
     "auth_ref": [
      "r56"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10070.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate direct operating costs incurred during the reporting period.",
        "label": "Direct Operating Costs",
        "terseLabel": "Direct costs"
       }
      }
     },
     "localname": "DirectOperatingCosts",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r157",
      "r223"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for compensation-related costs for equity-based compensation, which may include disclosure of policies, compensation plan details, allocation of equity compensation, incentive distributions, equity-based arrangements to obtain goods and services, deferred compensation arrangements, employee stock ownership plan details and employee stock purchase plan details.",
        "label": "Disclosure Of Compensation Related Costs Share Based Payments [Text Block]",
        "terseLabel": "Equity-based Compensation"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Disclosure Of Compensation Related Costs Sharebased Payments [Abstract]"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Earnings Per Share [Abstract]",
        "terseLabel": "Net income per share:"
       }
      }
     },
     "localname": "EarningsPerShareAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r55",
      "r89",
      "r94",
      "r96",
      "r97",
      "r98",
      "r101",
      "r299",
      "r307"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of net income (loss) for the period per each share of common stock or unit outstanding during the reporting period.",
        "label": "Earnings Per Share Basic",
        "terseLabel": "Basic",
        "verboseLabel": "Net income per share, basic"
       }
      }
     },
     "localname": "EarningsPerShareBasic",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r55",
      "r89",
      "r94",
      "r96",
      "r97",
      "r98",
      "r101",
      "r299",
      "r307"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of net income (loss) for the period available to each share of common stock or common unit outstanding during the reporting period and to each share or unit that would have been outstanding assuming the issuance of common shares or units for all dilutive potential common shares or units outstanding during the reporting period.",
        "label": "Earnings Per Share Diluted",
        "terseLabel": "Diluted",
        "verboseLabel": "Net income per share, diluted"
       }
      }
     },
     "localname": "EarningsPerShareDiluted",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r102"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for earnings per share.",
        "label": "Earnings Per Share [Text Block]",
        "terseLabel": "Net Income Per Share"
       }
      }
     },
     "localname": "EarningsPerShareTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShare"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r274"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10040.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) from effect of exchange rate changes on cash and cash equivalents, and cash and cash equivalents restricted to withdrawal or usage; held in foreign currencies; including, but not limited to, disposal group and discontinued operations. Cash includes, but is not limited to, currency on hand, demand deposits with banks or financial institutions, and other accounts with general characteristics of demand deposits. Cash equivalents include, but are not limited to, short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Effect Of Exchange Rate On Cash Cash Equivalents Restricted Cash And Restricted Cash Equivalents Including Disposal Group And Discontinued Operations",
        "terseLabel": "Effect of exchange rates on cash and cash equivalents"
       }
      }
     },
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r85",
      "r228",
      "r229"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "Effective Income Tax Rate Continuing Operations",
        "terseLabel": "Effective income tax rate"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r228",
      "r229",
      "r231"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of domestic federal statutory tax rate applicable to pretax income (loss).",
        "label": "Effective Income Tax Rate Reconciliation At Federal Statutory Income Tax Rate",
        "terseLabel": "Effective income tax rate reconciliation, at federal statutory income tax rate, percent"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "auth_ref": [
      "r29"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10150.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total of the carrying values as of the balance sheet date of obligations incurred through that date and payable for obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Employee Related Liabilities Current",
        "terseLabel": "Accrued compensation"
       }
      }
     },
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "An arrangement whereby an employee is entitled to receive in the future, subject to vesting and other restrictions, a number of shares in the entity at a specified price, as defined in the agreement. Although there are variations, normally, after vesting, when an option is exercised, the employee-holder pays the strike value in cash to the issuing employer-entity and receives equity shares. The equity shares can be sold into the market for cash at the current market price without restriction. Options may be used to attract, retain and incentivize employees, in addition to their regular salary and other benefits.",
        "label": "Employee Stock Option [Member]",
        "terseLabel": "Employee Stock Option [Member]"
       }
      }
     },
     "localname": "EmployeeStockOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r152"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Components of equity are the parts of the total Equity balance including that which is allocated to common, preferred, treasury stock, retained earnings, etc.",
        "label": "Equity Component [Domain]",
        "terseLabel": "Equity Component"
       }
      }
     },
     "localname": "EquityComponentDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ExecutiveOfficerMember": {
     "auth_ref": [
      "r293"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "One of the ranking officers of the entity, appointed to the position by the board of directors.",
        "label": "Executive Officer [Member]",
        "terseLabel": "Executive Officer [Member]"
       }
      }
     },
     "localname": "ExecutiveOfficerMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for fair value measurements of financial and non-financial assets, liabilities and instruments classified in shareholders' equity. Disclosures include, but are not limited to, how an entity that manages a group of financial assets and liabilities on the basis of its net exposure measures the fair value of those assets and liabilities.",
        "label": "Fair Value Measurement Policy Policy [Text Block]",
        "terseLabel": "Fair Value"
       }
      }
     },
     "localname": "FairValueMeasurementPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FederalFundsEffectiveSwapRateMember": {
     "auth_ref": [
      "r264"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fixed rate on a U.S. dollar, constant-notional interest rate swap that has its variable-rate leg referenced to the Federal Funds effective rate with no additional spread over the Federal Funds effective rate on that variable-rate leg. Alternate captions include overnight index swap rate (OIS).",
        "label": "Federal Funds Effective Swap Rate [Member]",
        "terseLabel": "Federal Funds Effective Swap Rate"
       }
      }
     },
     "localname": "FederalFundsEffectiveSwapRateMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Useful life of finite-lived intangible assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Finite Lived Intangible Asset Useful Life",
        "terseLabel": "Estimated Economic Life"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r139"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Accumulated amount of amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Finite Lived Intangible Assets Accumulated Amortization",
        "terseLabel": "Accumulated Amortization"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAccumulatedAmortization",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized in the remainder of the fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "Finite Lived Intangible Assets Amortization Expense Remainder Of Fiscal Year",
        "terseLabel": "2019"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseRemainderOfFiscalYear",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "auth_ref": [
      "r140"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10050.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the fifth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "Finite Lived Intangible Assets Amortization Expense Year Five",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r140"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10040.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the fourth fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "Finite Lived Intangible Assets Amortization Expense Year Four",
        "terseLabel": "2022"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r140"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10030.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the third fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "Finite Lived Intangible Assets Amortization Expense Year Three",
        "terseLabel": "2021"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r140"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of amortization expense for assets, excluding financial assets and goodwill, lacking physical substance with a finite life expected to be recognized during the second fiscal year following the latest fiscal year. Excludes interim and annual periods when interim periods are reported on a rolling approach, from latest balance sheet date.",
        "label": "Finite Lived Intangible Assets Amortization Expense Year Two",
        "terseLabel": "2020"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r135",
      "r137",
      "r139",
      "r141",
      "r294"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by major type or class of finite-lived intangible assets.",
        "label": "Finite Lived Intangible Assets By Major Class [Axis]",
        "terseLabel": "Finite-Lived Intangible Assets by Major Class"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsByMajorClassAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Finite Lived Intangible Assets Foreign Currency Translation Gain Loss",
        "terseLabel": "Foreign Currency Translation"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsForeignCurrencyTranslationGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Finite Lived Intangible Assets Future Amortization Expense [Abstract]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r139",
      "r294"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Finite Lived Intangible Assets Gross",
        "terseLabel": "Gross Carrying Amount"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r135",
      "r138"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The major class of finite-lived intangible asset (for example, patents, trademarks, copyrights, etc.) A major class is composed of intangible assets that can be grouped together because they are similar, either by their nature or by their use in the operations of a company.",
        "label": "Finite Lived Intangible Assets Major Class Name [Domain]",
        "terseLabel": "Finite-Lived Intangible Assets, Major Class Name"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsMajorClassNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r139"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10230.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after amortization of assets, excluding financial assets and goodwill, lacking physical substance with a finite life.",
        "label": "Finite Lived Intangible Assets Net",
        "terseLabel": "Acquired intangibles, net",
        "totalLabel": "Total",
        "verboseLabel": "Net Carrying Amount"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FixedPriceContractMember": {
     "auth_ref": [
      "r164",
      "r169"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Contract with customer in which amount of consideration is fixed.",
        "label": "Fixed Price Contract [Member]",
        "terseLabel": "Fixed-price [Member]"
       }
      }
     },
     "localname": "FixedPriceContractMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ForeignCurrencyExchangeRateTranslation1": {
     "auth_ref": [
      "r277"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Foreign exchange rate used to translate amounts denominated in functional currency to reporting currency.",
        "label": "Foreign Currency Exchange Rate Translation1",
        "terseLabel": "Foreign currency exchange rate"
       }
      }
     },
     "localname": "ForeignCurrencyExchangeRateTranslation1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "pureItemType"
    },
    "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": {
     "auth_ref": [
      "r74"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10240.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, including oil and gas property and timber property.",
        "label": "Gain Loss On Sale Of Property Plant Equipment",
        "negatedLabel": "Gain on the sale of property and equipment"
       }
      }
     },
     "localname": "GainLossOnSaleOfPropertyPlantEquipment",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeographicConcentrationRiskMember": {
     "auth_ref": [
      "r107"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Reflects the percentage that a specified dollar value on the balance sheet or income statement in the period from one or more specified geographic areas is to a corresponding consolidated, segment, or product line amount. Risk is the materially adverse effects of economic decline or antagonistic political actions resulting in loss of assets, sales volume, labor supply, or source of materials and supplies in a US state or a specified country, continent, or region such as EMEA (Europe, Middle East, Africa).",
        "label": "Geographic Concentration Risk [Member]",
        "terseLabel": "Geographic Concentration Risk [Member]"
       }
      }
     },
     "localname": "GeographicConcentrationRiskMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r129",
      "r130"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 10130.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      },
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10240.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after accumulated impairment loss of an asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill",
        "periodEndLabel": "Balance at March 29, 2019",
        "periodStartLabel": "Balance at December 31, 2018",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAcquiredDuringPeriod": {
     "auth_ref": [
      "r131"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.",
        "label": "Goodwill Acquired During Period",
        "terseLabel": "Acquired goodwill"
       }
      }
     },
     "localname": "GoodwillAcquiredDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Goodwill And Intangible Assets Disclosure [Abstract]"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r80",
      "r133"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for goodwill. This accounting policy also may address how an entity assesses and measures impairment of goodwill, how reporting units are determined, how goodwill is allocated to such units, and how the fair values of the reporting units are determined.",
        "label": "Goodwill And Intangible Assets Goodwill Policy",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r132"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which increases (decreases) an asset representing future economic benefits from other assets acquired in a business combination that are not individually identified and separately recognized.",
        "label": "Goodwill Foreign Currency Translation Gain Loss",
        "terseLabel": "Foreign currency translation"
       }
      }
     },
     "localname": "GoodwillForeignCurrencyTranslationGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GuaranteeObligationsCurrentCarryingValue": {
     "auth_ref": [
      "r146"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The current carrying amount of the liability for the freestanding or embedded guarantor's obligations under the guarantee or each group of similar guarantees.",
        "label": "Guarantee Obligations Current Carrying Value",
        "terseLabel": "Current carrying value of guarantees"
       }
      }
     },
     "localname": "GuaranteeObligationsCurrentCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesGuaranteesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GuaranteesIndemnificationsAndWarrantiesPolicies": {
     "auth_ref": [
      "r80",
      "r147"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for guarantees, indemnifications and product warranties, and methodologies used in determining the amount of such liabilities.",
        "label": "Guarantees Indemnifications And Warranties Policies",
        "terseLabel": "Guarantees"
       }
      }
     },
     "localname": "GuaranteesIndemnificationsAndWarrantiesPolicies",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_HealthCareMember": {
     "auth_ref": [
      "r166"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Service provided for prevention, maintenance, diagnosis or treatment of physical and mental health.",
        "label": "Health Care [Member]",
        "terseLabel": "Healthcare [Member]"
       }
      }
     },
     "localname": "HealthCareMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments": {
     "auth_ref": [
      "r84"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10010.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of income (loss) from continuing operations before deduction of income tax expense (benefit) and income (loss) attributable to noncontrolling interest, and addition of income (loss) from equity method investments.",
        "label": "Income Loss From Continuing Operations Before Income Taxes Minority Interest And Income Loss From Equity Method Investments",
        "totalLabel": "Income before income taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeStatementAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "localname": "IncomeStatementAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r145"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by location in the income statement.",
        "label": "Income Statement Location [Axis]",
        "terseLabel": "Income Statement Location"
       }
      }
     },
     "localname": "IncomeStatementLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Location in the income statement.",
        "label": "Income Statement Location [Domain]",
        "terseLabel": "Income Statement Location"
       }
      }
     },
     "localname": "IncomeStatementLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Income Tax Disclosure [Abstract]"
       }
      }
     },
     "localname": "IncomeTaxDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r233"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for income taxes. Disclosures may include net deferred tax liability or asset recognized in an enterprise's statement of financial position, net change during the year in the total valuation allowance, approximate tax effect of each type of temporary difference and carryforward that gives rise to a significant portion of deferred tax liabilities and deferred tax assets, utilization of a tax carryback, and tax uncertainties information.",
        "label": "Income Tax Disclosure [Text Block]",
        "terseLabel": "Income Taxes"
       }
      }
     },
     "localname": "IncomeTaxDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureIncomeTaxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r82",
      "r114",
      "r232"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10020.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) and deferred income tax expense (benefit) pertaining to continuing operations.",
        "label": "Income Tax Expense Benefit",
        "terseLabel": "Provision for income taxes"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReceivable": {
     "auth_ref": [
      "r19",
      "r301"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10310.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Carrying amount as of the balance sheet date of income taxes previously overpaid to tax authorities (such as U.S. Federal, state and local tax authorities) representing refunds of overpayments or recoveries based on agreed-upon resolutions of disputes. Also called income tax refund receivable.",
        "label": "Income Tax Receivable",
        "terseLabel": "Income taxes receivable"
       }
      }
     },
     "localname": "IncomeTaxReceivable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10290.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of liabilities incurred (and for which invoices have typically been received) and payable to vendors for goods and services received that are used in an entity's business.",
        "label": "Increase Decrease In Accounts Payable",
        "terseLabel": "Accounts payable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10250.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in amount due within one year (or one business cycle) from customers for the credit sale of goods and services.",
        "label": "Increase Decrease In Accounts Receivable",
        "negatedLabel": "Accounts receivable"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsReceivable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10320.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in obligation to transfer good or service to customer for which consideration has been received or is receivable.",
        "label": "Increase Decrease In Contract With Customer Liability",
        "terseLabel": "Advance billings on contracts"
       }
      }
     },
     "localname": "IncreaseDecreaseInContractWithCustomerLiability",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredCompensation": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10230.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the obligation created by employee agreements whereby earned compensation will be paid in the future.",
        "label": "Increase Decrease In Deferred Compensation",
        "terseLabel": "Deferred compensation"
       }
      }
     },
     "localname": "IncreaseDecreaseInDeferredCompensation",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredIncomeTaxes": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10220.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the account that represents the temporary difference that results from Income or Loss that is recognized for accounting purposes but not for tax purposes and vice versa.",
        "label": "Increase Decrease In Deferred Income Taxes",
        "negatedLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "IncreaseDecreaseInDeferredIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10300.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the aggregate amount of obligations related to services received from employees, such as accrued salaries and bonuses, payroll taxes and fringe benefits.",
        "label": "Increase Decrease In Employee Related Liabilities",
        "terseLabel": "Accrued compensation"
       }
      }
     },
     "localname": "IncreaseDecreaseInEmployeeRelatedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10310.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The increase (decrease) during the reporting period in the amounts payable to taxing authorities for taxes that are based on the reporting entity's earnings, net of amounts receivable from taxing authorities for refunds of overpayments or recoveries of income taxes.",
        "label": "Increase Decrease In Income Taxes Payable Net Of Income Taxes Receivable",
        "terseLabel": "Income taxes payable / receivable"
       }
      }
     },
     "localname": "IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOperatingCapitalAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Increase Decrease In Operating Capital [Abstract]",
        "terseLabel": "Changes in assets and liabilities that provide (use) cash, excluding the effects of acquisitions:"
       }
      }
     },
     "localname": "IncreaseDecreaseInOperatingCapitalAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherCurrentLiabilities": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10330.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in current liabilities classified as other.",
        "label": "Increase Decrease In Other Current Liabilities",
        "terseLabel": "Other current liabilities"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherCurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherNoncurrentAssets": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10270.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in noncurrent assets classified as other.",
        "label": "Increase Decrease In Other Noncurrent Assets",
        "negatedLabel": "Other long-term assets"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherNoncurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10340.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in noncurrent operating liabilities classified as other.",
        "label": "Increase Decrease In Other Noncurrent Liabilities",
        "terseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "IncreaseDecreaseInOtherNoncurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10260.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase (decrease) in prepaid expenses, and assets classified as other.",
        "label": "Increase Decrease In Prepaid Deferred Expense And Other Assets",
        "negatedLabel": "Prepaid and other current assets"
       }
      }
     },
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [
      "r95",
      "r100"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Additional shares included in the calculation of diluted EPS as a result of the potentially dilutive effect of share based payment arrangements using the treasury stock method.",
        "label": "Incremental Common Shares Attributable To Share Based Payment Arrangements",
        "terseLabel": "Common stock equivalents from incremental shares under equity-based compensation plans"
       }
      }
     },
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_IntangibleAssetsFiniteLivedPolicy": {
     "auth_ref": [
      "r80",
      "r138"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for finite-lived intangible assets. This accounting policy also might address: (1) the amortization method used; (2) the useful lives of such assets; and (3) how the entity assesses and measures impairment of such assets.",
        "label": "Intangible Assets Finite Lived Policy",
        "terseLabel": "Acquired Intangible Assets"
       }
      }
     },
     "localname": "IntangibleAssetsFiniteLivedPolicy",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InterestAndOtherIncome": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10040.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The amount of interest income and other income recognized during the period. Included in this element is interest derived from investments in debt securities, cash and cash equivalents, and other investments which reflect the time value of money or transactions in which the payments are for the use or forbearance of money and other income from ancillary business-related activities (that is, excluding major activities considered part of the normal operations of the business).",
        "label": "Interest And Other Income",
        "terseLabel": "Interest and other income"
       }
      }
     },
     "localname": "InterestAndOtherIncome",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LeaseCostAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Lease Cost [Abstract]"
       }
      }
     },
     "localname": "LeaseCostAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_LeaseCostTableTextBlock": {
     "auth_ref": [
      "r289"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of lessee's lease cost. Includes, but is not limited to, interest expense for finance lease, amortization of right-of-use asset for finance lease, operating lease cost, short-term lease cost, variable lease cost and sublease income.",
        "label": "Lease Cost Table [Text Block]",
        "terseLabel": "Summary of Weighted Average Remaining Lease Term, Discount Rate and Supplemental Cash Flow Information for All Operating Leases"
       }
      }
     },
     "localname": "LeaseCostTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LeasesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Leases [Abstract]"
       }
      }
     },
     "localname": "LeasesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [
      "r290"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of undiscounted cash flows of lessee's operating lease liability. Includes, but is not limited to, reconciliation of undiscounted cash flows to operating lease liability recognized in statement of financial position.",
        "label": "Lessee Operating Lease Liability Maturity Table [Text Block]",
        "terseLabel": "Summary of Maturities of Lease Liabilities for Operating Liabilities"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails2": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease.",
        "label": "Lessee Operating Lease Liability Payments Due",
        "totalLabel": "Total undiscounted operating lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 10060.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due after fifth fiscal year following latest fiscal year.",
        "label": "Lessee Operating Lease Liability Payments Due After Year Five",
        "terseLabel": "2024 &amp; thereafter"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 10050.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in fifth fiscal year following latest fiscal year.",
        "label": "Lessee Operating Lease Liability Payments Due Year Five",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 10040.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in fourth fiscal year following latest fiscal year.",
        "label": "Lessee Operating Lease Liability Payments Due Year Four",
        "terseLabel": "2022"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 10030.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in third fiscal year following latest fiscal year.",
        "label": "Lessee Operating Lease Liability Payments Due Year Three",
        "terseLabel": "2021"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease, due in second fiscal year following latest fiscal year.",
        "label": "Lessee Operating Lease Liability Payments Due Year Two",
        "terseLabel": "2020"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments for operating lease having an initial or remaining lease term in excess of one year due in remainder of fiscal year following latest fiscal year.",
        "label": "Lessee Operating Lease Liability Payments Remainder Of Fiscal Year",
        "terseLabel": "2019 (remaining)"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsRemainderOfFiscalYear",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r290"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails2": {
       "order": 10010.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payments in excess of discounted obligation for lease payments for operating lease.",
        "label": "Lessee Operating Lease Liability Undiscounted Excess Amount",
        "negatedLabel": "Less: Interest"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityUndiscountedExcessAmount",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeasesTextBlock": {
     "auth_ref": [
      "r292"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for operating leases of lessee. Includes, but is not limited to, description of operating lease and maturity analysis of operating lease liability.",
        "label": "Lessee Operating Leases [Text Block]",
        "terseLabel": "Operating Leases"
       }
      }
     },
     "localname": "LesseeOperatingLeasesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LetterOfCreditMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A document typically issued by a financial institution which acts as a guarantee of payment to a beneficiary, or as the source of payment for a specific transaction (for example, wiring funds to a foreign exporter if and when specified merchandise is accepted pursuant to the terms of the letter of credit).",
        "label": "Letter Of Credit [Member]",
        "terseLabel": "Letters of Credit [Member]"
       }
      }
     },
     "localname": "LetterOfCreditMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r28"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10010.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Sum of the carrying amounts as of the balance sheet date of all liabilities that are recognized. Liabilities are probable future sacrifices of economic benefits arising from present obligations of an entity to transfer assets or provide services to other entities in the future.",
        "label": "Liabilities",
        "totalLabel": "Total liabilities"
       }
      }
     },
     "localname": "Liabilities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r17",
      "r297",
      "r304"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities and equity items, including the portion of equity attributable to noncontrolling interests, if any.",
        "label": "Liabilities And Stockholders Equity",
        "totalLabel": "Total liabilities and shareholders\u2019 equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Liabilities And Stockholders Equity [Abstract]",
        "terseLabel": "Liabilities and Shareholders\u2019 Equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r30"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10080.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total obligations incurred as part of normal operations that are expected to be paid during the following twelve months or within one business cycle, if longer.",
        "label": "Liabilities Current",
        "totalLabel": "Total current liabilities"
       }
      }
     },
     "localname": "LiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesCurrentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Liabilities Current [Abstract]",
        "terseLabel": "Current Liabilities:"
       }
      }
     },
     "localname": "LiabilitiesCurrentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LifeInsuranceCorporateOrBankOwnedAmount": {
     "auth_ref": [
      "r21",
      "r126"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "This item represents the amount that could be realized under a life insurance contract or contracts owned by the Entity as of the date of the statement of financial position. Such Entity-owned life insurance policies are commonly known as corporate-owned life insurance (COLI) or bank-owned life insurance (BOLI).",
        "label": "Life Insurance Corporate Or Bank Owned Amount",
        "terseLabel": "Gross death benefit of life insurance contracts"
       }
      }
     },
     "localname": "LifeInsuranceCorporateOrBankOwnedAmount",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LifeSettlementContractsFairValueMethodFaceValue": {
     "auth_ref": [
      "r127"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Face value (death benefits) of the life insurance policies underlying the life settlement contracts accounted for under the fair value method.",
        "label": "Life Settlement Contracts Fair Value Method Face Value",
        "terseLabel": "Life insurance proceeds to be received upon the death of participants"
       }
      }
     },
     "localname": "LifeSettlementContractsFairValueMethodFaceValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityAverageOutstandingAmount": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Average amount borrowed under the credit facility during the period.",
        "label": "Line Of Credit Facility Average Outstanding Amount",
        "terseLabel": "Average amount outstanding"
       }
      }
     },
     "localname": "LineOfCreditFacilityAverageOutstandingAmount",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity": {
     "auth_ref": [
      "r27"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of current borrowing capacity under the credit facility considering any current restrictions on the amount that could be borrowed (for example, borrowings may be limited by the amount of current assets), but without considering any amounts currently outstanding under the facility.",
        "label": "Line Of Credit Facility Current Borrowing Capacity",
        "terseLabel": "Total available borrowings"
       }
      }
     },
     "localname": "LineOfCreditFacilityCurrentBorrowingCapacity",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityExpirationPeriod": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Period remaining on line of credit facility before it terminates, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Line Of Credit Facility Expiration Period",
        "terseLabel": "Revolving credit facility, term"
       }
      }
     },
     "localname": "LineOfCreditFacilityExpirationPeriod",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_LineOfCreditFacilityInitiationDate1": {
     "auth_ref": [
      "r27"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Date the credit facility first became available, in CCYY-MM-DD format.",
        "label": "Line Of Credit Facility Initiation Date1",
        "terseLabel": "Line of Credit Facility, Initiation Date"
       }
      }
     },
     "localname": "LineOfCreditFacilityInitiationDate1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "dateItemType"
    },
    "us-gaap_LineOfCreditFacilityLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Line Of Credit Facility [Line Items]",
        "terseLabel": "Line of Credit Facility [Line Items]"
       }
      }
     },
     "localname": "LineOfCreditFacilityLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LineOfCreditFacilityMaximumAmountOutstandingDuringPeriod": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Maximum amount borrowed under the credit facility at any time during the period.",
        "label": "Line Of Credit Facility Maximum Amount Outstanding During Period",
        "terseLabel": "Maximum amount outstanding"
       }
      }
     },
     "localname": "LineOfCreditFacilityMaximumAmountOutstandingDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity": {
     "auth_ref": [
      "r27"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Maximum borrowing capacity under the credit facility without consideration of any current restrictions on the amount that could be borrowed or the amounts currently outstanding under the facility.",
        "label": "Line Of Credit Facility Maximum Borrowing Capacity",
        "terseLabel": "Line of Credit Facility, Maximum Borrowing Capacity"
       }
      }
     },
     "localname": "LineOfCreditFacilityMaximumBorrowingCapacity",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityTable": {
     "auth_ref": [
      "r27",
      "r83"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A table or schedule providing information pertaining to short-term or long-term contractual arrangements with lenders, including letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line.",
        "label": "Line Of Credit Facility [Table]",
        "terseLabel": "Line Of Credit Facility [Table]"
       }
      }
     },
     "localname": "LineOfCreditFacilityTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LondonInterbankOfferedRateLIBORMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Interest rate at which a bank borrows funds from other banks in the London interbank market.",
        "label": "London Interbank Offered Rate L I B O R [Member]",
        "terseLabel": "London Interbank Offered Rate (LIBOR)"
       }
      }
     },
     "localname": "LondonInterbankOfferedRateLIBORMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LongTermLineOfCredit": {
     "auth_ref": [
      "r31",
      "r148",
      "r149"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10090.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The carrying value as of the balance sheet date of the noncurrent portion of long-term obligations drawn from a line of credit, which is a bank's commitment to make loans up to a specific amount. Examples of items that might be included in the application of this element may consist of letters of credit, standby letters of credit, and revolving credit arrangements, under which borrowings can be made up to a maximum amount as of any point in time conditional on satisfaction of specified terms before, as of and after the date of drawdowns on the line. Includes short-term obligations that would normally be classified as current liabilities but for which (a) postbalance sheet date issuance of a long term obligation to refinance the short term obligation on a long term basis, or (b) the enterprise has entered into a financing agreement that clearly permits the enterprise to refinance the short-term obligation on a long term basis and the following conditions are met (1) the agreement does not expire within 1 year and is not cancelable by the lender except for violation of an objectively determinable provision, (2) no violation exists at the BS date, and (3) the lender has entered into the financing agreement is expected to be financially capable of honoring the agreement.",
        "label": "Long Term Line Of Credit",
        "terseLabel": "Long-term debt"
       }
      }
     },
     "localname": "LongTermLineOfCredit",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongtermDebtWeightedAverageInterestRate": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average interest rate of long-term debt outstanding calculated at point in time.",
        "label": "Longterm Debt Weighted Average Interest Rate",
        "terseLabel": "Weighted-average interest rate"
       }
      }
     },
     "localname": "LongtermDebtWeightedAverageInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_NameOfReportingCategoryDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Name of reporting category or type of financial instrument.",
        "label": "Name Of Reporting Category [Domain]",
        "terseLabel": "Name of Reporting Category"
       }
      }
     },
     "localname": "NameOfReportingCategoryDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r71"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10030.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from financing activities, including discontinued operations. Financing activity cash flows include obtaining resources from owners and providing them with a return on, and a return of, their investment; borrowing money and repaying amounts borrowed, or settling the obligation; and obtaining and paying for other resources obtained from creditors on long-term credit.",
        "label": "Net Cash Provided By Used In Financing Activities",
        "totalLabel": "Net cash provided by financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Net Cash Provided By Used In Financing Activities [Abstract]",
        "terseLabel": "Cash flow from financing activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r71"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10020.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from investing activities, including discontinued operations. Investing activity cash flows include making and collecting loans and acquiring and disposing of debt or equity instruments and property, plant, and equipment and other productive assets.",
        "label": "Net Cash Provided By Used In Investing Activities",
        "totalLabel": "Net cash used in investing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Net Cash Provided By Used In Investing Activities [Abstract]",
        "terseLabel": "Cash flow from investing activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInInvestingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r71",
      "r72",
      "r75"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10010.0,
       "parentTag": "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow (outflow) from operating activities, including discontinued operations. Operating activity cash flows include transactions, adjustments, and changes in value not defined as investing or financing activities.",
        "label": "Net Cash Provided By Used In Operating Activities",
        "totalLabel": "Net cash provided by operating activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivities",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Net Cash Provided By Used In Operating Activities [Abstract]",
        "terseLabel": "Cash flow from operating activities:"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInOperatingActivitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r48",
      "r51",
      "r54",
      "r75",
      "r100",
      "r298",
      "r306"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited": {
       "order": 10010.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      },
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The portion of profit or loss for the period, net of income taxes, which is attributable to the parent.",
        "label": "Net Income Loss",
        "terseLabel": "Net Income",
        "totalLabel": "Net income",
        "verboseLabel": "Net income"
       }
      }
     },
     "localname": "NetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NewAccountingPronouncementOrChangeInAccountingPrincipleEffectOfAdoptionQuantification": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Represents the quantification of the effect of adopting the new accounting standard or change in accounting principle expected by the entity to have a significant effect on the entity's financial statements.",
        "label": "New Accounting Pronouncement Or Change In Accounting Principle Effect Of Adoption Quantification",
        "terseLabel": "Implementation of Accounting Standards"
       }
      }
     },
     "localname": "NewAccountingPronouncementOrChangeInAccountingPrincipleEffectOfAdoptionQuantification",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "New Accounting Pronouncements And Changes In Accounting Principles [Abstract]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsAndChangesInAccountingPrinciplesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "New Accounting Pronouncements Or Change In Accounting Principle [Line Items]",
        "terseLabel": "New Accounting Pronouncements Or Change In Accounting Principle [Line Items]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable": {
     "auth_ref": [
      "r88",
      "r90",
      "r91"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Summarization of the changes in an accounting principle or a new accounting pronouncement, including the line items affected by the change and the financial effects of the change on those particular line items.",
        "label": "New Accounting Pronouncements Or Change In Accounting Principle [Table]",
        "terseLabel": "New Accounting Pronouncements Or Change In Accounting Principle [Table]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsOrChangeInAccountingPrincipleTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy pertaining to new accounting pronouncements that may impact the entity's financial reporting. Includes, but is not limited to, quantification of the expected or actual impact.",
        "label": "New Accounting Pronouncements Policy Policy [Text Block]",
        "terseLabel": "Recently Issued Accounting Standards"
       }
      }
     },
     "localname": "NewAccountingPronouncementsPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NumberOfOperatingSegments": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of operating segments. An operating segment is a component of an enterprise: (a) that engages in business activities from which it may earn revenues and incur expenses (including revenues and expenses relating to transactions with other components of the same enterprise), (b) whose operating results are regularly reviewed by the enterprise's chief operating decision maker to make decisions about resources to be allocated to the segment and assess its performance, and (c) for which discrete financial information is available. An operating segment may engage in business activities for which it has yet to earn revenues, for example, start-up operations may be operating segments before earning revenues.",
        "label": "Number Of Operating Segments",
        "terseLabel": "Number of operating segments"
       }
      }
     },
     "localname": "NumberOfOperatingSegments",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesBasisOfPresentationAndConsolidationDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10030.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The net result for the period of deducting operating expenses from operating revenues.",
        "label": "Operating Income Loss",
        "totalLabel": "Operating income"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseCost": {
     "auth_ref": [
      "r282",
      "r291"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of single lease cost, calculated by allocation of remaining cost of lease over remaining lease term. Includes, but is not limited to, single lease cost, after impairment of right-of-use asset, calculated by amortization of remaining right-of-use asset and accretion of lease liability.",
        "label": "Operating Lease Cost",
        "terseLabel": "Operating lease cost"
       }
      }
     },
     "localname": "OperatingLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilitiesPaymentsDueAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Operating Lease Liabilities Payments Due [Abstract]"
       }
      }
     },
     "localname": "OperatingLeaseLiabilitiesPaymentsDueAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r280"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails2": {
       "order": 10020.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease.",
        "label": "Operating Lease Liability",
        "terseLabel": "Lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r280"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10170.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as current.",
        "label": "Operating Lease Liability Current",
        "terseLabel": "Short-term operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r280"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10110.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Present value of lessee's discounted obligation for lease payments from operating lease, classified as noncurrent.",
        "label": "Operating Lease Liability Noncurrent",
        "terseLabel": "Long-term operating lease liabilities"
       }
      }
     },
     "localname": "OperatingLeaseLiabilityNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r281",
      "r285"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash outflow from operating lease, excluding payments to bring another asset to condition and location necessary for its intended use.",
        "label": "Operating Lease Payments",
        "terseLabel": "Operating cash outflow from operating leases"
       }
      }
     },
     "localname": "OperatingLeasePayments",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeaseSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r279"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10210.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of lessee's right to use underlying asset under operating lease.",
        "label": "Operating Lease Right Of Use Asset",
        "terseLabel": "Operating lease right-of-use assets"
       }
      }
     },
     "localname": "OperatingLeaseRightOfUseAsset",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r288",
      "r291"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average discount rate for operating lease calculated at point in time.",
        "label": "Operating Lease Weighted Average Discount Rate Percent",
        "terseLabel": "Weighted average remaining discount rate"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageDiscountRatePercent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeaseSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r287",
      "r291"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Operating Lease Weighted Average Remaining Lease Term1",
        "terseLabel": "Weighted average remaining lease term (years)"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeaseSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OptionIndexedToIssuersEquityTypeAxis": {
     "auth_ref": [
      "r151",
      "r265",
      "r266",
      "r267"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of freestanding contracts issued by an entity that are indexed to, and potentially settled in, an entity's own stock.",
        "label": "Option Indexed To Issuers Equity Type [Axis]",
        "terseLabel": "Option Indexed to Issuer's Equity, Type"
       }
      }
     },
     "localname": "OptionIndexedToIssuersEquityTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OptionIndexedToIssuersEquityTypeDomain": {
     "auth_ref": [
      "r268"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Description of the type of freestanding contract issued by a Company that is indexed to, and potentially settled in, a Company's own stock. Specifically, the pertinent rights and privileges of the securities outstanding.",
        "label": "Option Indexed To Issuers Equity Type [Domain]",
        "terseLabel": "Option Indexed to Issuer's Equity, Type"
       }
      }
     },
     "localname": "OptionIndexedToIssuersEquityTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Organization Consolidation And Presentation Of Financial Statements [Abstract]"
       }
      }
     },
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock": {
     "auth_ref": [
      "r0",
      "r263"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for organization, consolidation and basis of presentation of financial statements disclosure.",
        "label": "Organization Consolidation And Presentation Of Financial Statements Disclosure [Text Block]",
        "terseLabel": "Financial Statements"
       }
      }
     },
     "localname": "OrganizationConsolidationAndPresentationOfFinancialStatementsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureFinancialStatements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r25"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10260.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of noncurrent assets classified as other.",
        "label": "Other Assets Noncurrent",
        "terseLabel": "Other assets"
       }
      }
     },
     "localname": "OtherAssetsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r39",
      "r41",
      "r255",
      "r259"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited": {
       "order": 10040.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after tax and reclassification adjustment, of (increase) decrease in accumulated other comprehensive income for defined benefit plan, attributable to parent.",
        "label": "Other Comprehensive Income Defined Benefit Plans Adjustment Net Of Tax Portion Attributable To Parent",
        "negatedLabel": "Change in pension gain (loss), net of taxes of $0 and $9 in the 2019 and 2018 first quarters, respectively",
        "negatedTerseLabel": "Pension gain (loss) adjustment, net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax": {
     "auth_ref": [
      "r42"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of tax expense (benefit) for (increase) decrease in value of benefit obligation for change in actuarial assumptions and increase (decrease) in value of plan assets from experience different from that assumed of defined benefit plan, that has not been recognized in net periodic benefit (cost) credit.",
        "label": "Other Comprehensive Income Defined Benefit Plans Net Unamortized Gain Loss Arising During Period Tax",
        "terseLabel": "Tax on pension loss"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfAccumulatedOtherComprehensiveLossParentheticalDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent": {
     "auth_ref": [
      "r255",
      "r256",
      "r259"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after reclassification adjustment, of tax (expense) benefit for (increase) decrease in accumulated other comprehensive income for defined benefit plan, attributable to parent.",
        "label": "Other Comprehensive Income Defined Benefit Plans Tax Portion Attributable To Parent",
        "terseLabel": "Taxes attributable to change in pension loss"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnauditedParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r255",
      "r256",
      "r259"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited": {
       "order": 10030.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax and reclassification adjustments of gain (loss) on foreign currency translation adjustments, foreign currency transactions designated and effective as economic hedges of a net investment in a foreign entity and intra-entity foreign currency transactions that are of a long-term-investment nature, attributable to parent entity.",
        "label": "Other Comprehensive Income Foreign Currency Transaction And Translation Adjustment Net Of Tax Portion Attributable To Parent",
        "terseLabel": "Foreign currency translation adjustment, net of taxes",
        "verboseLabel": "Foreign currency adjustment"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r49",
      "r52",
      "r255",
      "r256",
      "r259"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited": {
       "order": 10020.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after tax of other comprehensive income (loss) attributable to parent entity.",
        "label": "Other Comprehensive Income Loss Net Of Tax Portion Attributable To Parent",
        "totalLabel": "Other comprehensive income (loss)"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfComprehensiveIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax": {
     "auth_ref": [
      "r41",
      "r45",
      "r46"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, before tax, of reclassification adjustment from accumulated other comprehensive (income) loss for net period benefit cost (credit) of defined benefit plan.",
        "label": "Other Comprehensive Income Loss Reclassification Adjustment From A O C I Pension And Other Postretirement Benefit Plans Before Tax",
        "terseLabel": "Amortization of actuarial losses"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansNetOfTax": {
     "auth_ref": [
      "r41",
      "r45",
      "r46",
      "r190"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, after tax, of reclassification adjustment from accumulated other comprehensive (income) loss for net periodic benefit cost (credit) of defined benefit plan.",
        "label": "Other Comprehensive Income Loss Reclassification Adjustment From A O C I Pension And Other Postretirement Benefit Plans Net Of Tax",
        "totalLabel": "Net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansTax": {
     "auth_ref": [
      "r42",
      "r255"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails": {
       "order": 10020.0,
       "parentTag": "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansNetOfTax",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of tax (expense) benefit for reclassification adjustment from accumulated other comprehensive (income) loss of defined benefit plan.",
        "label": "Other Comprehensive Income Loss Reclassification Adjustment From A O C I Pension And Other Postretirement Benefit Plans Tax",
        "negatedLabel": "Income tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossScheduleOfNetBenefitCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesCurrent": {
     "auth_ref": [
      "r5",
      "r6",
      "r29"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10180.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities classified as other, due within one year or the normal operating cycle, if longer.",
        "label": "Other Liabilities Current",
        "terseLabel": "Other current liabilities"
       }
      }
     },
     "localname": "OtherLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r32"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10130.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of liabilities classified as other, due after one year or the normal operating cycle, if longer.",
        "label": "Other Liabilities Noncurrent",
        "terseLabel": "Other long-term liabilities"
       }
      }
     },
     "localname": "OtherLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingExpense": {
     "auth_ref": [
      "r58"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10050.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of expense related to nonoperating activities, classified as other.",
        "label": "Other Nonoperating Expense",
        "terseLabel": "Interest and other expense"
       }
      }
     },
     "localname": "OtherNonoperatingExpense",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherPostretirementBenefitsIndividualContractsTypeOfDeferredCompensationDomain": {
     "auth_ref": [
      "r173",
      "r174",
      "r175"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Deferred compensation related to other postretirement benefit arrangements that are not equivalent to a defined benefit other postretirement benefit plan. Includes, but is not limited to, employment contracts with one or more selected officers or key employees. Excludes equity-based compensation plans, defined benefit pension plans and defined benefit other postretirement benefit plans.",
        "label": "Other Postretirement Benefits Individual Contracts Type Of Deferred Compensation [Domain]",
        "terseLabel": "Other Postretirement Benefits, Individual Contracts, Type of Deferred Compensation"
       }
      }
     },
     "localname": "OtherPostretirementBenefitsIndividualContractsTypeOfDeferredCompensationDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PaymentsForProceedsFromInvestments": {
     "auth_ref": [
      "r86"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10180.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The net cash paid (received) associated with the acquisition or disposal of all investments, including securities and other assets.",
        "label": "Payments For Proceeds From Investments",
        "negatedLabel": "Deferred compensation plan investments, net"
       }
      }
     },
     "localname": "PaymentsForProceedsFromInvestments",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "auth_ref": [
      "r67"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10120.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow to reacquire common stock during the period.",
        "label": "Payments For Repurchase Of Common Stock",
        "negatedLabel": "Purchase of stock for treasury"
       }
      }
     },
     "localname": "PaymentsForRepurchaseOfCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForSoftware": {
     "auth_ref": [
      "r64"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10150.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the development, modification or acquisition of software programs or applications for internal use (that is, not to be sold, leased or otherwise marketed to others) that qualify for capitalization.",
        "label": "Payments For Software",
        "negatedLabel": "Additions to capitalized software"
       }
      }
     },
     "localname": "PaymentsForSoftware",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "auth_ref": [
      "r67",
      "r206"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10090.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash outflow to satisfy an employee's income tax withholding obligation as part of a net-share settlement of a share-based award.",
        "label": "Payments Related To Tax Withholding For Share Based Compensation",
        "negatedLabel": "Taxes remitted for shares withheld from equity-based compensation transactions"
       }
      }
     },
     "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r63",
      "r251"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferred1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of business during the period. The cash portion only of the acquisition price.",
        "label": "Payments To Acquire Businesses Gross",
        "terseLabel": "Payments to acquire business",
        "verboseLabel": "Cash consideration"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesGross",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r63"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10130.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of a business, net of the cash acquired from the purchase.",
        "label": "Payments To Acquire Businesses Net Of Cash Acquired",
        "negatedLabel": "Cash paid for acquisitions, net of cash acquired"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r64"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10140.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow associated with the acquisition of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale; includes cash outflows to pay for construction of self-constructed assets.",
        "label": "Payments To Acquire Property Plant And Equipment",
        "negatedLabel": "Additions to property and equipment"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r205"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for pension and other postretirement benefits.",
        "label": "Pension And Other Postretirement Benefits Disclosure [Text Block]",
        "terseLabel": "Deferred Compensation and Other Benefits"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefits"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PerformanceSharesMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Shares or units awarded to employees for meeting certain performance targets.",
        "label": "Performance Shares [Member]",
        "terseLabel": "Performance Shares [Member]"
       }
      }
     },
     "localname": "PerformanceSharesMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PlanNameAxis": {
     "auth_ref": [
      "r209",
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by plan name pertaining to equity-based compensation arrangements.",
        "label": "Plan Name [Axis]",
        "terseLabel": "Plan Name"
       }
      }
     },
     "localname": "PlanNameAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PlanNameDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Name of the equity-based compensation arrangement plan.",
        "label": "Plan Name [Domain]",
        "terseLabel": "Plan Name"
       }
      }
     },
     "localname": "PlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PostemploymentBenefitsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Postemployment Benefits [Abstract]"
       }
      }
     },
     "localname": "PostemploymentBenefitsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r2",
      "r18",
      "r19"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10300.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of asset related to consideration paid in advance for costs that provide economic benefits in future periods, and amount of other assets that are expected to be realized or consumed within one year or the normal operating cycle, if longer.",
        "label": "Prepaid Expense And Other Assets Current",
        "terseLabel": "Prepaid and other current assets"
       }
      }
     },
     "localname": "PrepaidExpenseAndOtherAssetsCurrent",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrincipleTransactionRevenueDescriptionOfReportingCategoryAxis": {
     "auth_ref": [
      "r295"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by reporting category or type of financial instruments related to a group of items that represent revenue.",
        "label": "Principle Transaction Revenue Description Of Reporting Category [Axis]",
        "terseLabel": "Principal Transaction Revenue, Description of Reporting Category"
       }
      }
     },
     "localname": "PrincipleTransactionRevenueDescriptionOfReportingCategoryAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfLongTermDebt": {
     "auth_ref": [
      "r66"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10050.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow from a debt initially having maturity due after one year or beyond the operating cycle, if longer.",
        "label": "Proceeds From Issuance Of Long Term Debt",
        "terseLabel": "Proceeds from long-term debt"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromLifeInsurancePolicies": {
     "auth_ref": [
      "r62",
      "r70"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10170.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow for proceeds from settlement of corporate-owned life insurance policy, classified as investing activities. Includes, but is not limited to, bank-owned life insurance policy.",
        "label": "Proceeds From Life Insurance Policies",
        "terseLabel": "Proceeds from life insurance"
       }
      }
     },
     "localname": "ProceedsFromLifeInsurancePolicies",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromRepaymentsOfBankOverdrafts": {
     "auth_ref": [
      "r66",
      "r68",
      "r77"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10110.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The net cash inflow or outflow from the excess drawing from an existing cash balance, which will be honored by the bank but reflected as a loan to the drawer.",
        "label": "Proceeds From Repayments Of Bank Overdrafts",
        "terseLabel": "Change in cash overdraft, net"
       }
      }
     },
     "localname": "ProceedsFromRepaymentsOfBankOverdrafts",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment": {
     "auth_ref": [
      "r61"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10160.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow from the sale of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale.",
        "label": "Proceeds From Sale Of Property Plant And Equipment",
        "terseLabel": "Proceeds from the sale of property and equipment"
       }
      }
     },
     "localname": "ProceedsFromSaleOfPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromStockOptionsExercised": {
     "auth_ref": [
      "r65",
      "r221"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10070.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of cash inflow from exercise of stock options granted under share-based compensation arrangement.",
        "label": "Proceeds From Stock Options Exercised",
        "terseLabel": "Proceeds from stock option plan exercises"
       }
      }
     },
     "localname": "ProceedsFromStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromStockPlans": {
     "auth_ref": [
      "r65"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10100.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash inflow associated with the amount received from the stock plan during the period.",
        "label": "Proceeds From Stock Plans",
        "terseLabel": "Proceeds from Employee Stock Purchase Plan"
       }
      }
     },
     "localname": "ProceedsFromStockPlans",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductConcentrationRiskMember": {
     "auth_ref": [
      "r106"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Reflects the percentage that revenues during the period from a specified product are to a specified benchmark, such as total net revenues, segment revenues or product line revenues. May also reflect the percentage contribution the product made to operating results. Risk is materially adverse effects of a loss of sales of a significant product or line of products, which could occur upon loss of rights to sell, distribute or license others; loss of patent or copyright protection; or technological obsolescence.",
        "label": "Product Concentration Risk [Member]",
        "terseLabel": "Product Concentration Risk [Member]"
       }
      }
     },
     "localname": "ProductConcentrationRiskMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ProductInformationLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Product Information [Line Items]",
        "terseLabel": "Product Information [Line Items]"
       }
      }
     },
     "localname": "ProductInformationLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProfitLoss": {
     "auth_ref": [
      "r48",
      "r51",
      "r69",
      "r115",
      "r118",
      "r255",
      "r257",
      "r258",
      "r261",
      "r262"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10190.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The consolidated profit or loss for the period, net of income taxes, including the portion attributable to the noncontrolling interest.",
        "label": "Profit Loss",
        "terseLabel": "Net income"
       }
      }
     },
     "localname": "ProfitLoss",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r24",
      "r144"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of long-lived, physical assets used to produce goods and services and not intended for resale.",
        "label": "Property Plant And Equipment By Type [Axis]",
        "terseLabel": "Property, Plant and Equipment, Type"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r23",
      "r142"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_PropertyPlantAndEquipmentNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount before accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "Property Plant And Equipment Gross",
        "terseLabel": "Property, equipment, and capitalized software",
        "verboseLabel": "Capitalized software developed for internal use"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Property Plant And Equipment [Line Items]",
        "terseLabel": "Property Plant And Equipment [Line Items]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r8",
      "r9",
      "r144",
      "r305"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10200.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount after accumulated depreciation, depletion and amortization of physical assets used in the normal conduct of business to produce goods and services and not intended for resale. Examples include, but are not limited to, land, buildings, machinery and equipment, office equipment, and furniture and fixtures.",
        "label": "Property Plant And Equipment Net",
        "terseLabel": "Property, equipment and capitalized software, net",
        "totalLabel": "Property, equipment and capitalized software, net"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNetByTypeAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Property Plant And Equipment Net By Type [Abstract]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNetByTypeAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r22",
      "r80",
      "r144"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for long-lived, physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, basis of assets, depreciation and depletion methods used, including composite deprecation, estimated useful lives, capitalization policy, accounting treatment for costs incurred for repairs and maintenance, capitalized interest and the method it is calculated, disposals and impairments.",
        "label": "Property Plant And Equipment Policy [Text Block]",
        "terseLabel": "Property, Equipment and Capitalized Software Costs"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r8",
      "r144"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Property Plant And Equipment [Text Block]",
        "terseLabel": "Schedule of Property, Equipment and Capitalized Software"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r8",
      "r142"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Listing of long-lived, physical assets that are used in the normal conduct of business to produce goods and services and not intended for resale. Examples include land, buildings, machinery and equipment, and other types of furniture and equipment including, but not limited to, office equipment, furniture and fixtures, and computer equipment and software.",
        "label": "Property Plant And Equipment Type [Domain]",
        "terseLabel": "Property, Plant and Equipment, Type"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentUsefulLife": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Useful life of long lived, physical assets used in the normal conduct of business and not intended for resale, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days. Examples include, but not limited to, land, buildings, machinery and equipment, office equipment, furniture and fixtures, and computer equipment.",
        "label": "Property Plant And Equipment Useful Life",
        "terseLabel": "Property, equipment and capitalized software, useful life"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_RepaymentsOfLongTermDebt": {
     "auth_ref": [
      "r68"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10060.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cash outflow for debt initially having maturity due after one year or beyond the normal operating cycle, if longer.",
        "label": "Repayments Of Long Term Debt",
        "negatedLabel": "Payments on long-term debt"
       }
      }
     },
     "localname": "RepaymentsOfLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r14",
      "r153",
      "r303"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10050.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings Accumulated Deficit",
        "terseLabel": "Retained earnings"
       }
      }
     },
     "localname": "RetainedEarningsAccumulatedDeficit",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The cumulative amount of the reporting entity's undistributed earnings or deficit.",
        "label": "Retained Earnings [Member]",
        "terseLabel": "Retained Earnings [Member]"
       }
      }
     },
     "localname": "RetainedEarningsMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanNameAxis": {
     "auth_ref": [
      "r194"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by name of plan designed to provide retirement benefits. Includes, but is not limited to, legal name of defined benefit and defined contribution plans.",
        "label": "Retirement Plan Name [Axis]",
        "terseLabel": "Retirement Plan Name"
       }
      }
     },
     "localname": "RetirementPlanNameAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanNameDomain": {
     "auth_ref": [
      "r194"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Name of plan designed to provide retirement benefits. Includes, but is not limited to, legal name of defined benefit and defined contribution plans.",
        "label": "Retirement Plan Name [Domain]",
        "terseLabel": "Retirement Plan Name"
       }
      }
     },
     "localname": "RetirementPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": {
     "auth_ref": [
      "r160",
      "r163",
      "r164"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10060.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, excluding tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value added and excise.",
        "label": "Revenue From Contract With Customer Excluding Assessed Tax",
        "terseLabel": "Revenue"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerExcludingAssessedTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "auth_ref": [
      "r160",
      "r163",
      "r164"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount, including tax collected from customer, of revenue from satisfaction of performance obligation by transferring promised good or service to customer. Tax collected from customer is tax assessed by governmental authority that is both imposed on and concurrent with specific revenue-producing transaction, including, but not limited to, sales, use, value-added and excise.",
        "label": "Revenue From Contract With Customer Including Assessed Tax",
        "terseLabel": "Revenue"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerIncludingAssessedTax",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerPolicyTextBlock": {
     "auth_ref": [
      "r81",
      "r170"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of accounting policy for revenue from contract with customer.",
        "label": "Revenue From Contract With Customer Policy [Text Block]",
        "terseLabel": "Revenue Recognition"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r120"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of revenue from external customers by geographic areas attributed to the entity's country of domicile and to foreign countries from which the entity derives revenue.",
        "label": "Revenue From External Customers By Geographic Areas Table [Text Block]",
        "terseLabel": "Schedule of Revenue by Geographic Location"
       }
      }
     },
     "localname": "RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligation": {
     "auth_ref": [
      "r161"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of transaction price allocated to performance obligation that has not been recognized as revenue.",
        "label": "Revenue Remaining Performance Obligation",
        "terseLabel": "Revenue, remaining performance obligation"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligation",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Revenue Remaining Performance Obligation Expected Timing Of Satisfaction [Line Items]",
        "terseLabel": "Revenue Remaining Performance Obligation Expected Timing Of Satisfaction [Line Items]"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1": {
     "auth_ref": [
      "r162"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Period in which remaining performance obligation is expected to be recognized as revenue, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Period1",
        "terseLabel": "Revenue, remaining performance obligation, expected timing of satisfaction, period"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis": {
     "auth_ref": [
      "r162"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Start date of time band for expected timing of satisfaction of remaining performance obligation, in CCYY-MM-DD format.",
        "label": "Revenue Remaining Performance Obligation Expected Timing Of Satisfaction Start Date [Axis]",
        "terseLabel": "Revenue, Remaining Performance Obligation, Expected Timing of Satisfaction, Start Date"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of information about expected timing for satisfying remaining performance obligation.",
        "label": "Revenue Remaining Performance Obligation Expected Timing Of Satisfaction [Table]",
        "terseLabel": "Revenue Remaining Performance Obligation Expected Timing Of Satisfaction [Table]"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevolvingCreditFacilityMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Arrangement in which loan proceeds can continuously be obtained following repayments, but the total amount borrowed cannot exceed a specified maximum amount.",
        "label": "Revolving Credit Facility [Member]",
        "terseLabel": "Credit and Security Agreement [Member]"
       }
      }
     },
     "localname": "RevolvingCreditFacilityMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "auth_ref": [
      "r286",
      "r291"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of increase in right-of-use asset obtained in exchange for operating lease liability.",
        "label": "Right Of Use Asset Obtained In Exchange For Operating Lease Liability",
        "terseLabel": "Right-of-use assets obtained in exchange for new operating lease liabilities"
       }
      }
     },
     "localname": "RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeaseSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RisksAndUncertaintiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Risks And Uncertainties [Abstract]"
       }
      }
     },
     "localname": "RisksAndUncertaintiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SalesRevenueServicesNetMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate revenue during the period from services rendered in the normal course of business, after deducting returns, allowances and discounts, when it serves as a benchmark in a concentration of risk calculation.",
        "label": "Sales Revenue Services Net [Member]",
        "terseLabel": "Sales Revenue, Services, Net [Member]"
       }
      }
     },
     "localname": "SalesRevenueServicesNetMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r44"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the components of accumulated other comprehensive income (loss).",
        "label": "Schedule Of Accumulated Other Comprehensive Income Loss Table [Text Block]",
        "terseLabel": "Schedule of Accumulated Other Comprehensive Loss"
       }
      }
     },
     "localname": "ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable": {
     "auth_ref": [
      "r135"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the major classes of acquired finite-lived intangible assets showing the amount, any significant residual value, weighted average amortization period, and other characteristics. A major class is composed of intangible assets that can be grouped together because they are similar, either by nature or by their use in the operations of the company.",
        "label": "Schedule Of Acquired Finite Lived Intangible Asset By Major Class [Table]",
        "terseLabel": "Schedule Of Acquired Finite Lived Intangible Asset By Major Class [Table]"
       }
      }
     },
     "localname": "ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock": {
     "auth_ref": [
      "r135"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the characteristics, including initial carrying value, residual amount, weighted average useful life, of finite-lived intangible assets acquired during the period by major class. A major class is composed of intangible assets that can be grouped together because they are similar, either by nature or by their use in the operations of the company.",
        "label": "Schedule Of Acquired Finite Lived Intangible Assets By Major Class [Text Block]",
        "terseLabel": "Summary of Acquired Intangible Assets"
       }
      }
     },
     "localname": "ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable": {
     "auth_ref": [
      "r99"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule for securities (including those issuable pursuant to contingent stock agreements) that could potentially dilute basic earnings per share (EPS) in the future that were not included in the computation of diluted EPS because to do so would increase EPS amounts or decrease loss per share amounts for the period presented, by Antidilutive Securities.",
        "label": "Schedule Of Antidilutive Securities Excluded From Computation Of Earnings Per Share [Table]",
        "terseLabel": "Schedule Of Antidilutive Securities Excluded From Computation Of Earnings Per Share [Table]"
       }
      }
     },
     "localname": "ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": {
     "auth_ref": [
      "r236",
      "r237"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule reflecting each material business combination (or series of individually immaterial business combinations) completed during the period, including background, timing, and recognized assets and liabilities.",
        "label": "Schedule Of Business Acquisitions By Acquisition [Table]",
        "terseLabel": "Schedule Of Business Acquisitions By Acquisition [Table]"
       }
      }
     },
     "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock": {
     "auth_ref": [
      "r236",
      "r237"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of a material business combination completed during the period, including background, timing, and recognized assets and liabilities. This table  does not include leveraged buyouts.",
        "label": "Schedule Of Business Acquisitions By Acquisition [Text Block]",
        "terseLabel": "Summary of Acquisition Date Fair Value of Consideration"
       }
      }
     },
     "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfChangesInFairValueOfPlanAssetsTableTextBlock": {
     "auth_ref": [
      "r178"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the reconciliation of beginning and ending balances of the fair value of plan assets of pension plans and/or other employee benefit plans showing separately, if applicable, the effects during the period attributable to each of the following: actual return on plan assets, foreign currency exchange rate changes, contributions by the employer, contributions by plan participants, benefits paid, business combinations, divestitures, and settlements.",
        "label": "Schedule Of Changes In Fair Value Of Plan Assets Table [Text Block]",
        "terseLabel": "Schedule of Change in Fair Value of Plan Assets"
       }
      }
     },
     "localname": "ScheduleOfChangesInFairValueOfPlanAssetsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredCompensationArrangementWithIndividualExcludingShareBasedPaymentsAndPostretirementBenefitsByTitleOfIndividualAndByTypeOfDeferredCompensationTable": {
     "auth_ref": [
      "r172",
      "r174"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule, table or text reflecting arrangements that are not equity-based payments, or pension and other postretirement benefits, with individual employees. The arrangements (for example, profit sharing, deferred bonuses or certain split-dollar life insurance arrangements) are generally based on employment contracts between the entity and one or more selected officers or key employees, and which contain a promise by the employer to pay certain amounts at designated future dates, sometimes including a period after retirement, upon compliance with stipulated requirements. This type of arrangement is distinguished from broader based employee benefit plans as it is usually tailored to the employee. Disclosure also typically includes the amount of related compensation expense recognized during the reporting period and the carrying amount as of the balance sheet date of the related liability.",
        "label": "Schedule Of Deferred Compensation Arrangement With Individual Excluding Share Based Payments And Postretirement Benefits By Title Of Individual And By Type Of Deferred Compensation [Table]",
        "terseLabel": "Schedule Of Deferred Compensation Arrangement With Individual Excluding Share Based Payments And Postretirement Benefits By Title Of Individual And By Type Of Deferred Compensation [Table]"
       }
      }
     },
     "localname": "ScheduleOfDeferredCompensationArrangementWithIndividualExcludingShareBasedPaymentsAndPostretirementBenefitsByTitleOfIndividualAndByTypeOfDeferredCompensationTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfDefinedBenefitPlansDisclosuresTable": {
     "auth_ref": [
      "r193",
      "r194",
      "r195",
      "r196",
      "r203"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosures about an individual defined benefit pension plan or an other postretirement defined benefit plan. It may be appropriate to group certain similar plans.  Also includes schedule for fair value of plan assets by major categories of plan assets by the level within the fair value hierarchy in which the fair value measurements in their entirety fall, segregating fair value measurements using quoted prices in active markets for identical assets or liabilities (Level 1), Significant other observable inputs (Level 2), and significant unobservable inputs (Level 3).",
        "label": "Schedule Of Defined Benefit Plans Disclosures [Table]",
        "terseLabel": "Schedule Of Defined Benefit Plans Disclosures [Table]"
       }
      }
     },
     "localname": "ScheduleOfDefinedBenefitPlansDisclosuresTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfChangeInFairValueOfPlanAssetsForNDBPDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "auth_ref": [
      "r100"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of an entity's basic and diluted earnings per share calculations, including a reconciliation of numerators and denominators of the basic and diluted per-share computations for income from continuing operations.",
        "label": "Schedule Of Earnings Per Share Basic And Diluted Table [Text Block]",
        "terseLabel": "Basic and Diluted Earning Per Share (EPS)"
       }
      }
     },
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock": {
     "auth_ref": [
      "r119"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of entity-wide revenues from external customers for each product or service or each group of similar products or services if the information is not provided as part of the reportable operating segment information.",
        "label": "Schedule Of Entity Wide Information Revenue From External Customers By Products And Services [Text Block]",
        "terseLabel": "Revenue by Vertical Market as Percentage of Total Revenue"
       }
      }
     },
     "localname": "ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock": {
     "auth_ref": [
      "r135"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of finite-lived intangible assets acquired as part of a business combination or through an asset purchase, by major class and in total, including the value of the asset acquired, any significant residual value (the expected value of the asset at the end of its useful life) and the weighted-average amortization period.",
        "label": "Schedule Of Finite Lived Intangible Assets Acquired As Part Of Business Combination [Text Block]",
        "terseLabel": "Summary of Intangible Assets Acquired"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r133",
      "r134"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.",
        "label": "Schedule Of Goodwill [Text Block]",
        "terseLabel": "Summary of Changes in Carrying Amount of Goodwill"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNetBenefitCostsTableTextBlock": {
     "auth_ref": [
      "r185"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the components of net benefit costs for pension plans and/or other employee benefit plans including service cost, interest cost, expected return on plan assets, gain (loss), prior service cost or credit, transition asset or obligation, and gain (loss) recognized due to settlements or curtailments.",
        "label": "Schedule Of Net Benefit Costs Table [Text Block]",
        "terseLabel": "Schedule of Net Benefit Costs"
       }
      }
     },
     "localname": "ScheduleOfNetBenefitCostsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAccumulatedOtherComprehensiveLossTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock": {
     "auth_ref": [
      "r191"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the amounts related to pension plans and/or other employee benefit plans in accumulated other comprehensive income or loss that have not yet been recognized as components of net periodic benefit cost, such as the net gain (loss), net prior service cost or credit, and net transition asset or obligation.",
        "label": "Schedule Of Net Periodic Benefit Cost Not Yet Recognized Table [Text Block]",
        "terseLabel": "Schedule of Net Periodic Pension Cost"
       }
      }
     },
     "localname": "ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfProductInformationTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule detailing quantitative information concerning products or product lines by product or product line.",
        "label": "Schedule Of Product Information [Table]",
        "terseLabel": "Schedule Of Product Information [Table]"
       }
      }
     },
     "localname": "ScheduleOfProductInformationTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfITSolutionsAndITAndOtherStaffingRevenueAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfProductInformationTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of product information that are included in the discussion of the nature of an entity's operations.",
        "label": "Schedule Of Product Information Table [Text Block]",
        "terseLabel": "Summary of IT Solutions and IT and Other Staffing Revenue as Percentage of Total Revenue"
       }
      }
     },
     "localname": "ScheduleOfProductInformationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": {
     "auth_ref": [
      "r24",
      "r144"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Disclosure of information about physical assets used in the normal conduct of business and not intended for resale. Includes, but is not limited to, balances by class of assets, depreciation and depletion expense and method used, including composite depreciation, and accumulated deprecation.",
        "label": "Schedule Of Property Plant And Equipment [Table]",
        "terseLabel": "Schedule Of Property Plant And Equipment [Table]"
       }
      }
     },
     "localname": "ScheduleOfPropertyPlantAndEquipmentTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock": {
     "auth_ref": [
      "r241"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the amounts recognized as of the acquisition date for each major class of assets acquired and liabilities assumed. May include but not limited to the following: (a) acquired receivables; (b) contingencies recognized at the acquisition date; and (c) the fair value of noncontrolling interests in the acquiree.",
        "label": "Schedule Of Recognized Identified Assets Acquired And Liabilities Assumed Table [Text Block]",
        "terseLabel": "Summary of Allocation of Aggregate Purchase Consideration to Fair Values of Assets Acquired and Liabilities Assumed"
       }
      }
     },
     "localname": "ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTable": {
     "auth_ref": [
      "r112",
      "r115",
      "r116",
      "r117",
      "r133"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "A table disclosing the profit or loss and total assets for each reportable segment of the entity. An entity discloses certain information on each reportable segment if the amounts (a) are included in the measure of segment profit or loss reviewed by the chief operating decision maker or (b) are otherwise regularly provided to the chief operating decision maker, even if not included in that measure of segment profit or loss.",
        "label": "Schedule Of Segment Reporting Information By Segment [Table]",
        "terseLabel": "Schedule Of Segment Reporting Information By Segment [Table]"
       }
      }
     },
     "localname": "ScheduleOfSegmentReportingInformationBySegmentTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": {
     "auth_ref": [
      "r209",
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Components of an equity-based arrangement under which compensation is awarded to employees, typically comprised of compensation expense; changes in the quantity and fair value of the shares (or other type of equity) granted, exercised, forfeited, and issued and outstanding pertaining to that plan; and cash flow effects resulting from the equity-based payment arrangement. Component disclosures are by type of award and plan name.",
        "label": "Schedule Of Share Based Compensation Arrangements By Share Based Payment Award [Table]",
        "terseLabel": "Schedule Of Share Based Compensation Arrangements By Share Based Payment Award [Table]"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r138"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Tabular disclosure of the amount of amortization expense expected to be recorded in succeeding fiscal years for finite-lived intangible assets.",
        "label": "Scheduleof Finite Lived Intangible Assets Future Amortization Expense Table [Text Block]",
        "terseLabel": "Summary of Estimated Amortization Expense"
       }
      }
     },
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentReportingInformationLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Segment Reporting Information [Line Items]",
        "terseLabel": "Segment Reporting Information [Line Items]"
       }
      }
     },
     "localname": "SegmentReportingInformationLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSignificantCustomersAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SellingGeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r57",
      "r128"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited": {
       "order": 10080.0,
       "parentTag": "us-gaap_OperatingIncomeLoss",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate total costs related to selling a firm's product and services, as well as all other general and administrative expenses. Direct selling expenses (for example, credit, warranty, and advertising) are expenses that can be directly linked to the sale of specific products. Indirect selling expenses are expenses that cannot be directly linked to the sale of specific products, for example telephone expenses, Internet, and postal charges. General and administrative expenses include salaries of non-sales personnel, rent, utilities, communication, etc.",
        "label": "Selling General And Administrative Expense",
        "terseLabel": "Selling, general and administrative expenses"
       }
      }
     },
     "localname": "SellingGeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SellingGeneralAndAdministrativeExpensesMember": {
     "auth_ref": [
      "r59"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Primary financial statement caption encompassing selling, general and administrative expense.",
        "label": "Selling General And Administrative Expenses [Member]",
        "terseLabel": "Selling General and Administrative Expenses [Member]"
       }
      }
     },
     "localname": "SellingGeneralAndAdministrativeExpensesMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r73"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited": {
       "order": 10210.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The aggregate amount of noncash, equity-based employee remuneration. This may include the value of stock or unit options, amortization of restricted stock or units, and adjustment for officers' compensation. As noncash, this element is an add back when calculating net cash generated by operating activities using the indirect method.",
        "label": "Share Based Compensation",
        "terseLabel": "Equity-based compensation expense"
       }
      }
     },
     "localname": "ShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfCashFlowsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1": {
     "auth_ref": [
      "r211"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Estimated period over which an employee is required to provide service in exchange for the equity-based payment award, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Award Requisite Service Period1",
        "terseLabel": "Derived services period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardRequisiteServicePeriod1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r211"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Period which an employee's right to exercise an award is no longer contingent on satisfaction of either a service condition, market condition or a performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Award Vesting Period1",
        "terseLabel": "Vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardDescription": {
     "auth_ref": [
      "r207",
      "r210"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "General descriptive information regarding an arrangement under which employees and directors receive: (a) awards of equity shares, equity share options, or other equity instruments; or (b) the entity incurs liabilities to them: (1) in amounts based, at least in part, on the price of the entity's shares or other equity instruments; or (2) that require or may require settlement by issuance of the entity's shares. Such an arrangement is usually provided to employees and directors to compensate them, provide performance incentives to them, and to attract or retain their services. May also include pertinent information particular to a plan that is not elsewhere specified in the taxonomy.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Description",
        "terseLabel": "Vesting period description"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardDescription",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r214"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of grants made during the period on other than stock (or unit) option plans (for example, phantom stock or unit plan, stock or unit appreciation rights plan, performance target plan).",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Equity Instruments Other Than Options Grants In Period",
        "terseLabel": "Restricted stock and stock units, granted"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r218"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The estimated dividend rate (a percentage of the share price) to be paid (expected dividends) to holders of the underlying shares over the option's term.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Dividend Rate",
        "terseLabel": "Expected dividend yield"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r217"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The estimated measure of the percentage by which a share price is expected to fluctuate during a period. Volatility also may be defined as a probability-weighted measure of the dispersion of returns about the mean. The volatility of a share price is the standard deviation of the continuously compounded rates of return on the share over a specified period. That is the same as the standard deviation of the differences in the natural logarithms of the stock prices plus dividends, if any, over the period.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Expected Volatility Rate",
        "terseLabel": "Expected volatility"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r219"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The risk-free interest rate assumption that is used in valuing an option on its own shares.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Fair Value Assumptions Risk Free Interest Rate",
        "terseLabel": "Risk-free rate of return"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award [Line Items]",
        "terseLabel": "Share Based Compensation Arrangement By Share Based Payment Award [Line Items]"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Gross number of share options (or share units) granted during the period.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Gross",
        "terseLabel": "Stock options granted"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r215"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The weighted average grant-date fair value of options granted during the reporting period as calculated by applying the disclosed option pricing methodology.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Options Grants In Period Weighted Average Grant Date Fair Value",
        "terseLabel": "Stock options granted, fair value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward": {
     "auth_ref": [
      "r207",
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The number of shares purchased on the open market during the period for issuance to employees under the plan.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Shares Purchased For Award",
        "terseLabel": "Number of stock units purchased"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r207",
      "r212"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Equity-based compensation award.",
        "label": "Share Based Compensation Arrangements By Share Based Payment Award Award Type And Plan Name [Domain]",
        "terseLabel": "Equity Award"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheOneMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "First portion of share-based compensation award differentiated by a particular vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share Based Compensation Award Tranche One [Member]",
        "terseLabel": "Stock Vesting, One Year From Grant Date [Member]"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheOneMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheThreeMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Third portion of share-based compensation award differentiated by a particular vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share Based Compensation Award Tranche Three [Member]",
        "terseLabel": "Share-based Compensation Award, Tranche Three"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheThreeMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheTwoMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Second portion of share-based compensation award differentiated by a particular vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share Based Compensation Award Tranche Two [Member]",
        "terseLabel": "Stock Vesting, Two Year From Grant Date [Member]"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheTwoMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SharePrice": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Price of a single share of a number of saleable stocks of a company.",
        "label": "Share Price",
        "terseLabel": "Increase in stock price"
       }
      }
     },
     "localname": "SharePrice",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage": {
     "auth_ref": [
      "r211"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Percentage of vesting of share-based compensation awards.",
        "label": "Sharebased Compensation Arrangement By Sharebased Payment Award Award Vesting Rights Percentage",
        "terseLabel": "Shares vesting percentage"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r216",
      "r222"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Expected term of share-based compensation awards, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Sharebased Compensation Arrangement By Sharebased Payment Award Fair Value Assumptions Expected Term1",
        "terseLabel": "Expected term"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Weighted average grant-date fair value of options vested.",
        "label": "Sharebased Compensation Arrangement By Sharebased Payment Award Options Vested Weighted Average Grant Date Fair Value",
        "terseLabel": "Stock option vest, fair value"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShortTermLeaseCost": {
     "auth_ref": [
      "r283",
      "r291"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of short-term lease cost, excluding expense for lease with term of one month or less.",
        "label": "Short Term Lease Cost",
        "terseLabel": "Short-term lease cost"
       }
      }
     },
     "localname": "ShortTermLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r87"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for all significant accounting policies of the reporting entity.",
        "label": "Significant Accounting Policies [Text Block]",
        "terseLabel": "Summary of Significant Accounting Policies"
       }
      }
     },
     "localname": "SignificantAccountingPoliciesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SoftwareDevelopmentMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Internally developed software for sale, licensing or long-term internal use.",
        "label": "Software Development [Member]",
        "terseLabel": "Capitalized Software [Member]"
       }
      }
     },
     "localname": "SoftwareDevelopmentMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r34",
      "r152"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by component of equity.",
        "label": "Statement Equity Components [Axis]",
        "terseLabel": "Equity Components"
       }
      }
     },
     "localname": "StatementEquityComponentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementLineItems": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "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.",
        "label": "Statement [Line Items]",
        "terseLabel": "Statement [Line Items]"
       }
      }
     },
     "localname": "StatementLineItems",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfFinancialPositionAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement Of Financial Position [Abstract]"
       }
      }
     },
     "localname": "StatementOfFinancialPositionAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement Of Income And Comprehensive Income [Abstract]"
       }
      }
     },
     "localname": "StatementOfIncomeAndComprehensiveIncomeAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Statement Of Stockholders Equity [Abstract]"
       }
      }
     },
     "localname": "StatementOfStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Schedule reflecting a Statement of Income, Statement of Cash Flows, Statement of Financial Position, Statement of Shareholders' Equity and Other Comprehensive Income, or other statement as needed.",
        "label": "Statement [Table]",
        "terseLabel": "Statement [Table]"
       }
      }
     },
     "localname": "StatementTable",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesEmployeeBenefitPlan": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares issued during the period to an employee benefit plan, such as a defined contribution or defined benefit plan.",
        "label": "Stock Issued During Period Shares Employee Benefit Plan",
        "negatedLabel": "Deferred compensation plan share issuance, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesEmployeeBenefitPlan",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans": {
     "auth_ref": [
      "r10",
      "r11",
      "r152",
      "r153"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares issued during the period as a result of an employee stock purchase plan.",
        "label": "Stock Issued During Period Shares Employee Stock Purchase Plans",
        "negatedLabel": "Employee Stock Purchase Plan share issuance, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesRestrictedStockAwardNetOfForfeitures": {
     "auth_ref": [
      "r10",
      "r11",
      "r152",
      "r153"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares issued during the period related to Restricted Stock Awards, net of any shares forfeited.",
        "label": "Stock Issued During Period Shares Restricted Stock Award Net Of Forfeitures",
        "terseLabel": "Restricted stock plan share issuance/forfeiture, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesRestrictedStockAwardNetOfForfeitures",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "auth_ref": [
      "r10",
      "r11",
      "r152",
      "r153"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares (or other type of equity) issued during the period as a result of any equity-based compensation plan other than an employee stock ownership plan (ESOP), net of any shares forfeited. Shares issued could result from the issuance of restricted stock, the exercise of stock options, stock issued under employee stock purchase plans, and/or other employee benefit plans.",
        "label": "Stock Issued During Period Shares Share Based Compensation",
        "terseLabel": "Equity-based compensation, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r10",
      "r11",
      "r152",
      "r153",
      "r213"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of share options (or share units) exercised during the current period.",
        "label": "Stock Issued During Period Shares Stock Options Exercised",
        "negatedLabel": "Stock Option Plan share issuance, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesTreasuryStockReissued": {
     "auth_ref": [
      "r11",
      "r152",
      "r153"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of treasury shares (units) reissued during the period, excluding reissuance of shares (units) held in treasury used to satisfy equity-based compensation obligations exercised by the holders of such rights. Upon reissuance of shares (units) from treasury, either the common or preferred stock (unit) reissued is outstanding.",
        "label": "Stock Issued During Period Shares Treasury Stock Reissued",
        "terseLabel": "Issued treasury stock, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesTreasuryStockReissued",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueEmployeeBenefitPlan": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value of shares issued during the period to an employee benefit plan, such as a defined contribution or defined benefit plan.",
        "label": "Stock Issued During Period Value Employee Benefit Plan",
        "terseLabel": "Deferred compensation plan share issuance"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueEmployeeBenefitPlan",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan": {
     "auth_ref": [
      "r10",
      "r11",
      "r152",
      "r153"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Aggregate change in value for stock issued during the period as a result of employee stock purchase plan.",
        "label": "Stock Issued During Period Value Employee Stock Purchase Plan",
        "terseLabel": "Employee Stock Purchase Plan share issuance"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueEmployeeStockPurchasePlan",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardNetOfForfeitures": {
     "auth_ref": [
      "r152",
      "r153"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value of stock related to Restricted Stock Awards issued during the period, net of the stock value of such awards forfeited.",
        "label": "Stock Issued During Period Value Restricted Stock Award Net Of Forfeitures",
        "terseLabel": "Restricted stock plan share issuance/forfeiture"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueRestrictedStockAwardNetOfForfeitures",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": {
     "auth_ref": [
      "r10",
      "r11",
      "r153",
      "r208",
      "r215"
     ],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value of stock (or other type of equity) issued during the period as a result of any equity-based compensation plan other than an employee stock ownership plan (ESOP), net of stock value of such awards forfeited. Stock issued could result from the issuance of restricted stock, the exercise of stock options, stock issued under employee stock purchase plans, and/or other employee benefit plans.",
        "label": "Stock Issued During Period Value Share Based Compensation",
        "terseLabel": "Equity-based compensation"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Value of stock issued as a result of the exercise of stock options, after deduction of related income tax (expense) benefit.",
        "label": "Stock Issued During Period Value Stock Options Exercised Net Of Tax Benefit Expense",
        "terseLabel": "Stock Option Plan share issuance, net"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRedeemedOrCalledDuringPeriodShares": {
     "auth_ref": [
      "r152"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of stock bought back by the entity at the exercise price or redemption price.",
        "label": "Stock Redeemed Or Called During Period Shares",
        "verboseLabel": "Purchase of stock, shares"
       }
      }
     },
     "localname": "StockRedeemedOrCalledDuringPeriodShares",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockRedeemedOrCalledDuringPeriodValue": {
     "auth_ref": [
      "r152"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Equity impact of the value of stock bought back by the entity at the exercise price or redemption price.",
        "label": "Stock Redeemed Or Called During Period Value",
        "negatedLabel": "Purchase of stock"
       }
      }
     },
     "localname": "StockRedeemedOrCalledDuringPeriodValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchaseProgramAuthorizedAmount1": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of stock repurchase plan authorized.",
        "label": "Stock Repurchase Program Authorized Amount1",
        "terseLabel": "Stock repurchase program, authorized amount"
       }
      }
     },
     "localname": "StockRepurchaseProgramAuthorizedAmount1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchaseProgramPeriodInForce1": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Period which shares may be purchased under a stock repurchase plan authorized by an entity's Board of Directors, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Stock Repurchase Program Period In Force1",
        "terseLabel": "Stock repurchase program, period"
       }
      }
     },
     "localname": "StockRepurchaseProgramPeriodInForce1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount remaining of a stock repurchase plan authorized.",
        "label": "Stock Repurchase Program Remaining Authorized Repurchase Amount1",
        "terseLabel": "Shares authorized to repurchase, remaining amount"
       }
      }
     },
     "localname": "StockRepurchaseProgramRemainingAuthorizedRepurchaseAmount1",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r11",
      "r15",
      "r16",
      "r125"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10020.0,
       "parentTag": "us-gaap_LiabilitiesAndStockholdersEquity",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Total of all stockholders' equity (deficit) items, net of receivables from officers, directors, owners, and affiliates of the entity which are attributable to the parent. The amount of the economic entity's stockholders' equity attributable to the parent excludes the amount of stockholders' equity which is allocable to that ownership interest in subsidiary equity which is not attributable to the parent (noncontrolling interest, minority interest). This excludes temporary equity and is sometimes called permanent equity.",
        "label": "Stockholders Equity",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Balance",
        "totalLabel": "Total shareholders\u2019 equity"
       }
      }
     },
     "localname": "StockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Stockholders Equity [Abstract]",
        "terseLabel": "Shareholders\u2019 Equity:"
       }
      }
     },
     "localname": "StockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TitleOfIndividualAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by title of individual or nature of relationship to individual or group of individuals.",
        "label": "Title Of Individual [Axis]",
        "terseLabel": "Title of Individual"
       }
      }
     },
     "localname": "TitleOfIndividualAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TitleOfIndividualWithRelationshipToEntityDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Title of individual, or nature of relationship to individual or group of individuals.",
        "label": "Title Of Individual With Relationship To Entity [Domain]",
        "terseLabel": "Relationship to Entity"
       }
      }
     },
     "localname": "TitleOfIndividualWithRelationshipToEntityDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDeferredCompensationAndOtherBenefitsScheduleOfNetPeriodicPensionCostDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TrademarksMember": {
     "auth_ref": [
      "r242"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Rights acquired through registration of a trademark to gain or protect exclusive use of a business name, symbol or other device or style.",
        "label": "Trademarks [Member]",
        "terseLabel": "Trademarks [Member]"
       }
      }
     },
     "localname": "TrademarksMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TradingSecuritiesEquity": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10270.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Fair value of investments in trading equity securities and other forms of trading securities that provide ownership interests.",
        "label": "Trading Securities Equity",
        "terseLabel": "Investments"
       }
      }
     },
     "localname": "TradingSecuritiesEquity",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TreasuryStockCommonShares": {
     "auth_ref": [
      "r35",
      "r154"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of previously issued common shares repurchased by the issuing entity and held in treasury.",
        "label": "Treasury Stock Common Shares",
        "terseLabel": "Treasury stock, shares"
       }
      }
     },
     "localname": "TreasuryStockCommonShares",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnauditedParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_TreasuryStockCommonValue": {
     "auth_ref": [
      "r35",
      "r154",
      "r155"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited": {
       "order": 10060.0,
       "parentTag": "us-gaap_StockholdersEquity",
       "weight": -1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount allocated to previously issued common shares repurchased by the issuing entity and held in treasury.",
        "label": "Treasury Stock Common Value",
        "negatedLabel": "Less: Treasury stock of 12,740,770 and 12,745,888 shares at cost, in 2019 and 2018, respectively"
       }
      }
     },
     "localname": "TreasuryStockCommonValue",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedBalanceSheetsUnaudited"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TreasuryStockMember": {
     "auth_ref": [
      "r33",
      "r154"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Shares of an entity that have been repurchased by the entity. This stock has no voting rights and receives no dividends. Note that treasury stock may be recorded at its total cost or separately as par (or stated) value and additional paid in capital. Classified within stockholders' equity if nonredeemable or redeemable solely at the option of the issuer. Classified within temporary equity if redemption is outside the control of the issuer.",
        "label": "Treasury Stock [Member]",
        "terseLabel": "Treasury Stock [Member]"
       }
      }
     },
     "localname": "TreasuryStockMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfShareholdersEquityUnaudited"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TreasuryStockSharesAcquired": {
     "auth_ref": [
      "r11",
      "r152",
      "r153"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of shares that have been repurchased during the period and are being held in treasury.",
        "label": "Treasury Stock Shares Acquired",
        "terseLabel": "Treasury stock purchase, shares"
       }
      }
     },
     "localname": "TreasuryStockSharesAcquired",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStockAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_TreasuryStockTextBlock": {
     "auth_ref": [
      "r156"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The entire disclosure for treasury stock, including, but not limited to, average cost per share, description of share repurchase program, shares repurchased, shares held for each class of treasury stock.",
        "label": "Treasury Stock [Text Block]",
        "terseLabel": "Treasury Stock"
       }
      }
     },
     "localname": "TreasuryStockTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureTreasuryStock"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TypeOfAdoptionMember": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Adoption and early adoption of sources of change to generally accepted accounting principles (GAAP) in the United States. The FASB released the FASB Accounting Standards Codification as the authoritative source of literature effective for interim and annual periods ending after September 15, 2009. As part of the Codification process, the FASB issues Accounting Standards Updates to amend the Codification but otherwise the Accounting Standards Updates are not authoritative in their own right. All previous accounting standards (such as FASB Statements of Financial Accounting Standards, FASB Interpretations, FASB Staff Positions, Emerging Issues Task Force Consensuses, other pronouncements of the FASB or other designated bodies, or other forms of GAAP are considered accounting pronouncements) were superseded upon the adoption of the Codification. For an interim period, references to the superseded standards are included to help users transition from the previous accounting hierarchy and will be removed from future versions of this taxonomy.",
        "label": "Type Of Adoption [Member]",
        "terseLabel": "Type of Adoption"
       }
      }
     },
     "localname": "TypeOfAdoptionMember",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureSummaryOfSignificantAccountingPoliciesRecentIssuedAccountingStandardsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationTechniqueAxis": {
     "auth_ref": [
      "r270"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by valuation approach and technique.",
        "label": "Valuation Technique [Axis]",
        "terseLabel": "Valuation Approach and Technique"
       }
      }
     },
     "localname": "ValuationTechniqueAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ValuationTechniqueDomain": {
     "auth_ref": [
      "r270"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Valuation approach and technique.",
        "label": "Valuation Technique [Domain]",
        "terseLabel": "Valuation Approach and Technique"
       }
      }
     },
     "localname": "ValuationTechniqueDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_VariableLeaseCost": {
     "auth_ref": [
      "r284",
      "r291"
     ],
     "crdr": "debit",
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Amount of variable lease cost, excluded from lease liability, recognized when obligation for payment is incurred for finance and operating leases.",
        "label": "Variable Lease Cost",
        "terseLabel": "Variable lease cost"
       }
      }
     },
     "localname": "VariableLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureOperatingLeasesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_VariableRateAxis": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by type of variable rate.",
        "label": "Variable Rate [Axis]",
        "terseLabel": "Variable Rate"
       }
      }
     },
     "localname": "VariableRateAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_VariableRateDomain": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Interest rate that fluctuates over time as a result of an underlying benchmark interest rate or index.",
        "label": "Variable Rate [Domain]",
        "terseLabel": "Variable Rate"
       }
      }
     },
     "localname": "VariableRateDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_VestingAxis": {
     "auth_ref": [
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Information by vesting schedule for share-based compensation.",
        "label": "Vesting [Axis]",
        "terseLabel": "Vesting"
       }
      }
     },
     "localname": "VestingAxis",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_VestingDomain": {
     "auth_ref": [
      "r220"
     ],
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Vesting schedule for share-based compensation.",
        "label": "Vesting [Domain]",
        "terseLabel": "Vesting"
       }
      }
     },
     "localname": "VestingDomain",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r93",
      "r98"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "The average number of shares or units issued and outstanding that are used in calculating diluted EPS or earnings per unit (EPU), determined based on the timing of issuance of shares or units in the period.",
        "label": "Weighted Average Number Of Diluted Shares Outstanding",
        "terseLabel": "Diluted",
        "totalLabel": "Number of shares on which diluted earnings per share is based"
       }
      }
     },
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": {
     "auth_ref": [],
     "lang": {
      "en-US": {
       "role": {
        "label": "Weighted Average Number Of Shares Outstanding [Abstract]",
        "terseLabel": "Weighted average shares outstanding:"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingAbstract",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r92",
      "r98"
     ],
     "calculation": {
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails": {
       "order": 10010.0,
       "parentTag": "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding",
       "weight": 1.0
      }
     },
     "lang": {
      "en-US": {
       "role": {
        "documentation": "Number of [basic] shares or units, after adjustment for contingently issuable shares or units and other shares or units not deemed outstanding, determined by relating the portion of time within a reporting period that common shares or units have been outstanding to the total time in that period.",
        "label": "Weighted Average Number Of Shares Outstanding Basic",
        "terseLabel": "Basic",
        "verboseLabel": "Weighted-average number of shares outstanding during period"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "nsuri": "http://fasb.org/us-gaap/2018-01-31",
     "presentation": [
      "http://www.ctg.com/20190329/taxonomy/role/DisclosureNetIncomePerShareScheduleOfBasicAndDilutedEarningsPerShareDetails",
      "http://www.ctg.com/20190329/taxonomy/role/StatementCondensedConsolidatedStatementsOfIncomeUnaudited"
     ],
     "xbrltype": "sharesItemType"
    }
   },
   "unitCount": 10
  }
 },
 "std_ref": {
  "r0": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "205",
   "URI": "http://asc.fasb.org/topic&trid=2122149"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=82887183&loc=d3e6676-107765"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(28))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109256448&loc=d3e4984-109258"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "http://asc.fasb.org/topic&trid=2144383"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6327-108592"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6404-108592"
  },
  "r11": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(29))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "http://asc.fasb.org/extlink&oid=99393423&loc=d3e6442-108592"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "275",
   "URI": "http://asc.fasb.org/topic&trid=2134479"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8721-108599"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8736-108599"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8813-108599"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8906-108599"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e8933-108599"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9031-108599"
  },
  "r12": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "a",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9038-108599"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9038-108599"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=115929826&loc=d3e9054-108599"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "10",
   "Topic": "305",
   "URI": "http://asc.fasb.org/extlink&oid=6375392&loc=d3e26790-107797"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=84173941&loc=d3e5074-111524"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 4.E)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=27010918&loc=d3e74512-122707"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "325",
   "URI": "http://asc.fasb.org/extlink&oid=6384206&loc=d3e41899-111602"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "325",
   "URI": "http://asc.fasb.org/extlink&oid=73718008&loc=d3e42732-111610"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "10",
   "Topic": "330",
   "URI": "http://asc.fasb.org/extlink&oid=68048583&loc=d3e3636-108311"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=99380562&loc=d3e13770-109266"
  },
  "r13": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=77989000&loc=SL49117168-202975"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13816-109267"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13816-109267"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13816-109267"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=108376223&loc=d3e13854-109267"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r14": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "360",
   "URI": "http://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=115931803&loc=d3e12069-110248"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=99376301&loc=d3e1314-112600"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "470",
   "URI": "http://asc.fasb.org/extlink&oid=99376301&loc=d3e1336-112600"
  },
  "r15": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "470",
   "URI": "http://asc.fasb.org/topic&trid=2208564"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "63",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "480",
   "URI": "http://asc.fasb.org/extlink&oid=109260209&loc=d3e23176-110880"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21463-112644"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=27012166&loc=d3e187085-122770"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=6405813&loc=d3e23239-112655"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=6405834&loc=d3e23315-112656"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "30",
   "Topic": "505",
   "URI": "http://asc.fasb.org/subtopic&trid=2208821"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "50",
   "Topic": "505",
   "URI": "http://asc.fasb.org/subtopic&trid=2208855"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=82913815&loc=SL49130531-203044"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=82913815&loc=SL49130532-203044"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(31))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=109196051&loc=SL49130539-203045"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=109196051&loc=SL49130556-203045"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=109196051&loc=SL49130556-203045"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=109196051&loc=SL49130543-203045"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=109196051&loc=SL49130545-203045"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=109196051&loc=SL49130549-203045"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=108792157&loc=SL49130690-203046-203046"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=108792157&loc=SL49130690-203046-203046"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=108792157&loc=SL49130690-203046-203046"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=108792157&loc=SL49130690-203046-203046"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(32))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "http://asc.fasb.org/topic&trid=49130388"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "15",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "710",
   "URI": "http://asc.fasb.org/extlink&oid=6409656&loc=d3e18908-108359"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "http://asc.fasb.org/extlink&oid=6409733&loc=d3e19524-108361"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "http://asc.fasb.org/extlink&oid=6409733&loc=d3e19512-108361"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "http://asc.fasb.org/extlink&oid=6409875&loc=d3e20015-108363"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "http://asc.fasb.org/extlink&oid=6409961&loc=d3e20487-108367"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(7))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(5)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r19": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(8))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(j)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e1928-114920"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2410-114920"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2417-114920"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2439-114920"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2709-114920"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2709-114920"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2709-114920"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=82887183&loc=d3e6676-107765"
  },
  "r20": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.1)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2709-114920"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2709-114920"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=108410482&loc=d3e2709-114920"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=112275985&loc=d3e4179-114921"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "60",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=6414203&loc=d3e39716-114964"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "http://asc.fasb.org/topic&trid=2235017"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19A",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=107668666&loc=SL79513924-113897"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5047-113901"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5047-113901"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5047-113901"
  },
  "r21": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.12)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a),(g)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r22": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=d3e5070-113901"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=109197908&loc=SL79508275-113901"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.D.2)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=115993241&loc=d3e301413-122809"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "http://asc.fasb.org/topic&trid=2228938"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84176650&loc=d3e31917-109318"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84176650&loc=d3e31928-109318"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84176650&loc=d3e31931-109318"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84176650&loc=d3e31958-109318"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32687-109319"
  },
  "r229": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32698-109319"
  },
  "r23": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.13)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=34349781&loc=d3e330036-122817"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=109238882&loc=d3e38679-109324"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "http://asc.fasb.org/topic&trid=2144680"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=84229725&loc=d3e1043-128460"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=79982066&loc=d3e1486-128463"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "37",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=108330185&loc=d3e2207-128464"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=84161108&loc=d3e4845-128472"
  },
  "r24": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.14)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=84161108&loc=d3e4845-128472"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=84161108&loc=d3e4845-128472"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5263-128473"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=77890550&loc=d3e5333-128473"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6911189&loc=d3e6405-128476"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6911189&loc=d3e6408-128476"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6911189&loc=d3e6411-128476"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=109124213&loc=d3e6578-128477"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=109124213&loc=d3e6613-128477"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=6911338&loc=d3e6819-128478"
  },
  "r25": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.17)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r250": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=35744584&loc=d3e6927-128479"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=35744584&loc=d3e6927-128479"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(1)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=35744584&loc=d3e6927-128479"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(2)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=35744584&loc=d3e6927-128479"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "805",
   "URI": "http://asc.fasb.org/topic&trid=2303972"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=108774443&loc=SL4569616-111683"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=108774443&loc=SL4569643-111683"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r26": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c),(3)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4J",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=84234705&loc=SL4591551-111686"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4K",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=84234705&loc=SL4591552-111686"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "810",
   "URI": "http://asc.fasb.org/topic&trid=2197479"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=109976185&loc=SL5864739-113975"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=6445032&loc=d3e90193-114008"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=6445032&loc=d3e90198-114008"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=6445032&loc=d3e90205-114008"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=109258466&loc=d3e90476-114009"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=99377789&loc=d3e19207-110258"
  },
  "r27": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(b),22(b))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=99377789&loc=d3e19207-110258"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=109250915&loc=d3e13531-108611"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=109250915&loc=d3e13537-108611"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=109250915&loc=d3e13537-108611"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=98513438&loc=d3e33268-110906"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=109240241&loc=d3e32022-110900"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6897108&loc=SL6897125-166521"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=113997351&loc=SL77916155-209984"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888419&loc=SL77918627-209977"
  },
  "r28": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888419&loc=SL77918627-209977"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888419&loc=SL77918643-209977"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(2)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918686-209980"
  },
  "r29": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.20)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888426&loc=SL77918701-209980"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=77888399&loc=SL77918982-209971"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/subtopic&trid=77888251"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "850",
   "URI": "http://asc.fasb.org/extlink&oid=6457730&loc=d3e39599-107864"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "340",
   "Topic": "928",
   "URI": "http://asc.fasb.org/extlink&oid=6473545&loc=d3e61844-108004"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "320",
   "Topic": "940",
   "URI": "http://asc.fasb.org/extlink&oid=35711157&loc=d3e42567-110969"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(11))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=6876686&loc=d3e534808-122878"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(22))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=114873765&loc=SL114874048-224260"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(23))",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=114873765&loc=SL114874048-224260"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=82887183&loc=d3e6801-107765"
  },
  "r30": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.21)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=108315417&loc=d3e61044-112788"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(10))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6879938&loc=d3e572229-122910"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6879938&loc=d3e572229-122910"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6879938&loc=d3e572229-122910"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6879938&loc=d3e572229-122910"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=6879938&loc=d3e572229-122910"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(18))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=114873790&loc=SL114874131-224263"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(19))",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=114873790&loc=SL114874131-224263"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4H",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=99384497&loc=SL65671331-158438"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=99380617&loc=SL75241803-196195"
  },
  "r31": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.22)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "310",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Topic": "948",
   "URI": "http://asc.fasb.org/extlink&oid=6589523&loc=d3e617274-123014"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Topic": "970",
   "URI": "http://asc.fasb.org/extlink&oid=6590653&loc=d3e638233-123024"
  },
  "r312": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "http://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756"
  },
  "r313": {
   "Name": "Regulation 12B",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r32": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.24)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r33": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29,30)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r34": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r35": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.30)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.4)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r37": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.9)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r38": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669646-108580"
  },
  "r39": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(i-k)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669646-108580"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=82887183&loc=d3e6812-107765"
  },
  "r40": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669646-108580"
  },
  "r41": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=d3e637-108580"
  },
  "r42": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=d3e640-108580"
  },
  "r43": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=d3e681-108580"
  },
  "r44": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669686-108580"
  },
  "r45": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=d3e689-108580"
  },
  "r46": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL34724391-108580"
  },
  "r47": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL34724394-108580"
  },
  "r48": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669619-108580"
  },
  "r49": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669619-108580"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=82887183&loc=d3e6904-107765"
  },
  "r50": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669619-108580"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669625-108580"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=SL7669625-108580"
  },
  "r53": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=114867106&loc=d3e557-108580"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(20))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=115205541&loc=SL114868664-224227"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(21))",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=115205541&loc=SL114868664-224227"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.2)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=115205541&loc=SL114868664-224227"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.4)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=115205541&loc=SL114868664-224227"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.9)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=115205541&loc=SL114868664-224227"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=115205541&loc=SL114868664-224227"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=82887183&loc=d3e6911-107765"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "220",
   "URI": "http://asc.fasb.org/topic&trid=2134417"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3179-108585"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3179-108585"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3213-108585"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3213-108585"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3255-108585"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3255-108585"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3291-108585"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3291-108585"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3000-108585"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(1))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21C",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=SL94080552-108585"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3521-108585"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3536-108585"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3602-108585"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3602-108585"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3602-108585"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3044-108585"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=109223946&loc=d3e3098-108585"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=98513485&loc=d3e4273-108586"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=98513485&loc=SL98516268-108586"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(13))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18780-107790"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(e),(f))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h)(1)(i))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h)(2))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e23780-122690"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-04(a))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=26873400&loc=d3e24072-122690"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "http://asc.fasb.org/topic&trid=2122369"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22694-107794"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(14))",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=6877327&loc=d3e13212-122682"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22580-107794"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22583-107794"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109260490&loc=d3e1448-109256"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109260490&loc=d3e1505-109256"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109260490&loc=d3e1252-109256"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109260490&loc=d3e1500-109256"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109260490&loc=SL5780133-109256"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=109260490&loc=d3e1337-109256"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  }
 },
 "version": "2.1"
}
