{
 "instance": {
  "ctg-20221231.htm": {
   "axisCustom": 0,
   "axisStandard": 35,
   "baseTaxonomies": {
    "http://fasb.org/srt/2022": 1,
    "http://fasb.org/us-gaap/2022": 1464,
    "http://xbrl.sec.gov/dei/2022": 38
   },
   "contextCount": 390,
   "dts": {
    "calculationLink": {
     "local": [
      "ctg-20221231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "ctg-20221231_def.xml"
     ]
    },
    "inline": {
     "local": [
      "ctg-20221231.htm"
     ]
    },
    "labelLink": {
     "local": [
      "ctg-20221231_lab.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "ctg-20221231_pre.xml"
     ]
    },
    "schema": {
     "local": [
      "ctg-20221231.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/lrr/role/negated-2009-12-16.xsd",
      "http://www.xbrl.org/lrr/role/reference-2009-12-16.xsd",
      "https://www.xbrl.org/2020/extensible-enumerations-2.0.xsd",
      "https://www.xbrl.org/dtr/type/2020-01-21/types.xsd",
      "https://xbrl.fasb.org/srt/2022/elts/srt-2022.xsd",
      "https://xbrl.fasb.org/srt/2022/elts/srt-roles-2022.xsd",
      "https://xbrl.fasb.org/srt/2022/elts/srt-types-2022.xsd",
      "https://xbrl.fasb.org/us-gaap/2022/elts/us-gaap-2022.xsd",
      "https://xbrl.fasb.org/us-gaap/2022/elts/us-roles-2022.xsd",
      "https://xbrl.fasb.org/us-gaap/2022/elts/us-types-2022.xsd",
      "https://xbrl.sec.gov/country/2022/country-2022.xsd",
      "https://xbrl.sec.gov/dei/2022/dei-2022.xsd"
     ]
    }
   },
   "elementCount": 796,
   "entityCount": 1,
   "hidden": {
    "http://fasb.org/us-gaap/2022": 17,
    "http://www.ctg.com/20221231": 6,
    "http://xbrl.sec.gov/dei/2022": 4,
    "total": 27
   },
   "keyCustom": 77,
   "keyStandard": 428,
   "memberCustom": 57,
   "memberStandard": 45,
   "nsprefix": "ctg",
   "nsuri": "http://www.ctg.com/20221231",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "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",
     "menuCat": "Cover",
     "order": "1",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument",
     "shortName": "Document and Entity Information Document",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100090 - Disclosure - Property, Equipment and Capitalized Software",
     "menuCat": "Notes",
     "order": "10",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftware",
     "shortName": "Property, Equipment and Capitalized Software",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "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",
     "menuCat": "Notes",
     "order": "11",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitions",
     "shortName": "Acquisitions",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100110 - Disclosure - Debt",
     "menuCat": "Notes",
     "order": "12",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebt",
     "shortName": "Debt",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100120 - Disclosure - Income Taxes",
     "menuCat": "Notes",
     "order": "13",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxes",
     "shortName": "Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100130 - Disclosure - Lease Commitments",
     "menuCat": "Notes",
     "order": "14",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitments",
     "shortName": "Lease Commitments",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeasesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100140 - Disclosure - Deferred Compensation Benefits",
     "menuCat": "Notes",
     "order": "15",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefits",
     "shortName": "Deferred Compensation Benefits",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PostemploymentBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100150 - Disclosure - Employee Benefits",
     "menuCat": "Notes",
     "order": "16",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefits",
     "shortName": "Employee Benefits",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PostemploymentBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100160 - Disclosure - Shareholders' Equity",
     "menuCat": "Notes",
     "order": "17",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquity",
     "shortName": "Shareholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "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",
     "menuCat": "Notes",
     "order": "18",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensation",
     "shortName": "Equity-Based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100180 - Disclosure - Significant Clients",
     "menuCat": "Notes",
     "order": "19",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClients",
     "shortName": "Significant Clients",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100010 - Statement - Consolidated Statements of Income",
     "menuCat": "Statements",
     "order": "2",
     "role": "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome",
     "shortName": "Consolidated Statements of Income",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:SellingGeneralAndAdministrativeExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LossContingencyDisclosures",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100190 - Disclosure - Contingencies",
     "menuCat": "Notes",
     "order": "20",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureContingencies",
     "shortName": "Contingencies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LossContingencyDisclosures",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100200 - Disclosure - Segments and Enterprise-Wide Disclosures",
     "menuCat": "Notes",
     "order": "21",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosures",
     "shortName": "Segments and Enterprise-Wide Disclosures",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100210 - Disclosure - Schedule II-Valuation and Qualifying Accounts",
     "menuCat": "Notes",
     "order": "22",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccounts",
     "shortName": "Schedule II-Valuation and Qualifying Accounts",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100220 - Disclosure - Summary of Significant Accounting Policies (Policies)",
     "menuCat": "Policies",
     "order": "23",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies",
     "shortName": "Summary of Significant Accounting Policies (Policies)",
     "subGroupType": "policies",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BasisOfAccountingPolicyPolicyTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:ConcentrationRiskCreditRisk",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100230 - Disclosure - Summary of Significant Accounting Policies (Tables)",
     "menuCat": "Tables",
     "order": "24",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables",
     "shortName": "Summary of Significant Accounting Policies (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:ConcentrationRiskCreditRisk",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100240 - Disclosure - Property, Equipment and Capitalized Software (Tables)",
     "menuCat": "Tables",
     "order": "25",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareTables",
     "shortName": "Property, Equipment and Capitalized Software (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_44ceb4bb-085c-42fb-8a5e-3394d96276af",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100250 - Disclosure - Acquisitions (Tables)",
     "menuCat": "Tables",
     "order": "26",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables",
     "shortName": "Acquisitions (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_44ceb4bb-085c-42fb-8a5e-3394d96276af",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100260 - Disclosure - Income Taxes (Tables)",
     "menuCat": "Tables",
     "order": "27",
     "role": "http://www.ctg.com/20221231/taxonomy/role/DisclosureIncomeTaxesTables",
     "shortName": "Income Taxes (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LeaseCostTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100270 - Disclosure - Lease Commitments (Tables)",
     "menuCat": "Tables",
     "order": "28",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsTables",
     "shortName": "Lease Commitments (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LeaseCostTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100280 - Disclosure - Deferred Compensation Benefits (Tables)",
     "menuCat": "Tables",
     "order": "29",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsTables",
     "shortName": "Deferred Compensation Benefits (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100020 - Statement - Consolidated Statements of Comprehensive Income",
     "menuCat": "Statements",
     "order": "3",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome",
     "shortName": "Consolidated Statements of Comprehensive Income",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100290 - Disclosure - Equity-Based Compensation (Tables)",
     "menuCat": "Tables",
     "order": "30",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables",
     "shortName": "Equity-Based Compensation (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100300 - Disclosure - Segments and Enterprise-Wide Disclosures (Tables)",
     "menuCat": "Tables",
     "order": "31",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresTables",
     "shortName": "Segments and Enterprise-Wide Disclosures (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:ConcentrationRiskCreditRisk",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:NumberOfVerticalMarketFocusAreas",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Market",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100310 - Disclosure - Summary of Significant Accounting Policies - Basis of Presentation and Consolidation (Details)",
     "menuCat": "Details",
     "order": "32",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasisOfPresentationAndConsolidationDetails",
     "shortName": "Summary of Significant Accounting Policies - Basis of Presentation and Consolidation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:ConcentrationRiskCreditRisk",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:NumberOfVerticalMarketFocusAreas",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Market",
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock",
       "div",
       "us-gaap:ConcentrationRiskCreditRisk",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_8d364e68-7910-4d03-814a-c0b3e0a6358c",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100320 - Disclosure - Summary of Significant Accounting Policies - Revenue by Vertical Market as Percentage of Total Revenue (Details)",
     "menuCat": "Details",
     "order": "33",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
     "shortName": "Summary of Significant Accounting Policies - Revenue by Vertical Market as Percentage of Total Revenue (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock",
       "div",
       "us-gaap:ConcentrationRiskCreditRisk",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_8d364e68-7910-4d03-814a-c0b3e0a6358c",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:ScheduleOfRevenueByContractTypeTableTextBlock",
       "div",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:RevenueFromExternalCustomersPercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100330 - Disclosure - Summary of Significant Accounting Policies - Revenue by Contract Type (Details)",
     "menuCat": "Details",
     "order": "34",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails",
     "shortName": "Summary of Significant Accounting Policies - Revenue by Contract Type (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:ScheduleOfRevenueByContractTypeTableTextBlock",
       "div",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:RevenueFromExternalCustomersPercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     }
    },
    "R35": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100340 - Disclosure - Summary of Significant Accounting Policies - Schedule of Revenue by Geographic Location (Details)",
     "menuCat": "Details",
     "order": "35",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
     "shortName": "Summary of Significant Accounting Policies - Schedule of Revenue by Geographic Location (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:RevenueFromExternalCustomersByGeographicAreasTableTextBlock",
       "div",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_142ba257-773c-4373-addc-eb3c058b68f8",
      "decimals": "3",
      "lang": null,
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     }
    },
    "R36": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "ctg:BillableExpenses",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100350 - Disclosure - Summary of Significant Accounting Policies - Billable Expenses (Details)",
     "menuCat": "Details",
     "order": "36",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBillableExpensesDetails",
     "shortName": "Summary of Significant Accounting Policies - Billable Expenses (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:RevenueFromContractWithCustomerPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "ctg:BillableExpenses",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R37": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_eb1eeb8a-e96b-41e6-8dcc-f157814edb85",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100360 - Disclosure - Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details)",
     "menuCat": "Details",
     "order": "37",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
     "shortName": "Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_eb1eeb8a-e96b-41e6-8dcc-f157814edb85",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R38": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_851f8254-ee7c-49ac-ab37-e717a240bbc4",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100370 - Disclosure - Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details 1)",
     "menuCat": "Details",
     "order": "38",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1",
     "shortName": "Summary of Significant Accounting Policies - Transaction Price Allocated to Remaining Performance Obligations (Details 1)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:TransactionPriceAllocatedToRemainingPerformanceObligationsPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_851f8254-ee7c-49ac-ab37-e717a240bbc4",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueRemainingPerformanceObligation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R39": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100380 - Disclosure - Summary of Significant Accounting Policies - Fair Value (Details)",
     "menuCat": "Details",
     "order": "39",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails",
     "shortName": "Summary of Significant Accounting Policies - Fair Value (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:FairValueMeasurementPolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_d380949f-048a-42eb-9f61-36a416f1adfd",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:ContingentConsiderationClassifiedAsEquityFairValueDisclosure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100030 - Statement - Consolidated Statements of Comprehensive Income (Parenthetical)",
     "menuCat": "Statements",
     "order": "4",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncomeParenthetical",
     "shortName": "Consolidated Statements of Comprehensive Income (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:EmployeeLifeInsurancePolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "0",
      "first": true,
      "lang": null,
      "name": "ctg:NumberOfIndividualsCoveredUnderInsurancePolicy",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Individual",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100390 - Disclosure - Summary of Significant Accounting Policies - Life Insurance Policies (Details)",
     "menuCat": "Details",
     "order": "40",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails",
     "shortName": "Summary of Significant Accounting Policies - Life Insurance Policies (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:EmployeeLifeInsurancePolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "0",
      "first": true,
      "lang": null,
      "name": "ctg:NumberOfIndividualsCoveredUnderInsurancePolicy",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Individual",
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_907a53e4-4b87-443e-a7d2-db02dcbad4de",
      "decimals": "0",
      "first": true,
      "lang": null,
      "name": "ctg:CashFDICInsurableLimit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100400 - Disclosure - Summary of Significant Accounting Policies - Cash and Cash Equivalents, and Cash Overdrafts (Details)",
     "menuCat": "Details",
     "order": "41",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
     "shortName": "Summary of Significant Accounting Policies - Cash and Cash Equivalents, and Cash Overdrafts (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_907a53e4-4b87-443e-a7d2-db02dcbad4de",
      "decimals": "0",
      "first": true,
      "lang": null,
      "name": "ctg:CashFDICInsurableLimit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R42": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:TradeAndOtherAccountsReceivablePolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_2e1a87b4-c553-49bf-a1b6-97905df89eba",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccountsReceivableSale",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100410 - Disclosure - Summary of Significant Accounting Policies - Accounts Receivable Factoring (Details)",
     "menuCat": "Details",
     "order": "42",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails",
     "shortName": "Summary of Significant Accounting Policies - Accounts Receivable Factoring (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:TradeAndOtherAccountsReceivablePolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_2e1a87b4-c553-49bf-a1b6-97905df89eba",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccountsReceivableSale",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R43": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:Depreciation",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100420 - Disclosure - Summary of Significant Accounting Policies - Property, Equipment and Capitalized Software Costs (Details)",
     "menuCat": "Details",
     "order": "43",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails",
     "shortName": "Summary of Significant Accounting Policies - Property, Equipment and Capitalized Software Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R44": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "ix:continuation",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_99d66f90-80c4-44b2-80d0-d0ccc701e4ac",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:BuildingsAndImprovementsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100430 - Disclosure - Summary of Significant Accounting Policies - Impairment of Long-lived assets and Long-lived assets to be disposed of (Details)",
     "menuCat": "Details",
     "order": "44",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
     "shortName": "Summary of Significant Accounting Policies - Impairment of Long-lived assets and Long-lived assets to be disposed of (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "ix:continuation",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_99d66f90-80c4-44b2-80d0-d0ccc701e4ac",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:BuildingsAndImprovementsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R45": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:SegmentReportingPolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:NumberOfOperatingSegments",
      "reportCount": 1,
      "unitRef": "U_Segment",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100440 - Disclosure - Summary of Significant Accounting Policies - Segments (Details)",
     "menuCat": "Details",
     "order": "45",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails",
     "shortName": "Summary of Significant Accounting Policies - Segments (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R46": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:GoodwillImpairmentIndicators",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Indicator",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100450 - Disclosure - Summary of Significant Accounting Policies - Goodwill (Details)",
     "menuCat": "Details",
     "order": "46",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails",
     "shortName": "Summary of Significant Accounting Policies - Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:GoodwillImpairmentIndicators",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Indicator",
      "xsiNil": "false"
     }
    },
    "R47": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_ff42fc8e-888f-4705-a17e-541059ad5cfc",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100460 - Disclosure - Summary of Significant Accounting Policies - Summary of Changes in Carrying Amount of Goodwill (Details)",
     "menuCat": "Details",
     "order": "47",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of Changes in Carrying Amount of Goodwill (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "div",
       "us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:GoodwillAcquiredDuringPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R48": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100470 - Disclosure - Summary of Significant Accounting Policies - Summary of Acquired Intangible Assets (Details)",
     "menuCat": "Details",
     "order": "48",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of Acquired Intangible Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R49": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AmortizationOfIntangibleAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100480 - Disclosure - Summary of Significant Accounting Policies - Acquired Intangible Assets (Details)",
     "menuCat": "Details",
     "order": "49",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAcquiredIntangibleAssetsDetails",
     "shortName": "Summary of Significant Accounting Policies - Acquired Intangible Assets (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AmortizationOfIntangibleAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100040 - Statement - Consolidated Balance Sheets",
     "menuCat": "Statements",
     "order": "5",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets",
     "shortName": "Consolidated Balance Sheets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:PrepaidExpenseAndOtherAssetsCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100490 - Disclosure - Summary of Significant Accounting Policies - Summary of Estimated Amortization Expense (Details)",
     "menuCat": "Details",
     "order": "50",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails",
     "shortName": "Summary of Significant Accounting Policies - Summary of Estimated Amortization Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R51": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsValuationAllowance",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100500 - Disclosure - Summary of Significant Accounting Policies - Income Taxes (Details)",
     "menuCat": "Details",
     "order": "51",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
     "shortName": "Summary of Significant Accounting Policies - Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": null
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100510 - Disclosure - Summary of Significant Accounting Policies - Basic and Diluted Earnings Per Share (EPS) (Details)",
     "menuCat": "Details",
     "order": "52",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails",
     "shortName": "Summary of Significant Accounting Policies - Basic and Diluted Earnings Per Share (EPS) (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
       "div",
       "ix:continuation",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "ix:continuation",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3cbdd4fc-8cdb-4f25-8cd3-00801d1e375d",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100520 - Disclosure - Summary of Significant Accounting Policies - Net Income Per Share - Additional Information (Details)",
     "menuCat": "Details",
     "order": "53",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails",
     "shortName": "Summary of Significant Accounting Policies - Net Income Per Share - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "ix:continuation",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3cbdd4fc-8cdb-4f25-8cd3-00801d1e375d",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100530 - Disclosure - Summary of Significant Accounting Policies - Schedule of Accumulated Other Comprehensive Loss (Details)",
     "menuCat": "Details",
     "order": "54",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails",
     "shortName": "Summary of Significant Accounting Policies - Schedule of Accumulated Other Comprehensive Loss (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100540 - Disclosure - Summary of Significant Accounting Policies - Schedule of Accumulated Other Comprehensive Loss (Parenthetical) (Details)",
     "menuCat": "Details",
     "order": "55",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossParentheticalDetails",
     "shortName": "Summary of Significant Accounting Policies - Schedule of Accumulated Other Comprehensive Loss (Parenthetical) (Details)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfNetBenefitCostsTableTextBlock",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100550 - Disclosure - Summary of Significant Accounting Policies - Schedule of Net Benefit Costs (Details)",
     "menuCat": "Details",
     "order": "56",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails",
     "shortName": "Summary of Significant Accounting Policies - Schedule of Net Benefit Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfNetBenefitCostsTableTextBlock",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:GuaranteesIndemnificationsAndWarrantiesPolicies",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:GuaranteeObligationsCurrentCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100560 - Disclosure - Summary of Significant Accounting Policies - Guarantees (Details)",
     "menuCat": "Details",
     "order": "57",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGuaranteesDetails",
     "shortName": "Summary of Significant Accounting Policies - Guarantees (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:GuaranteesIndemnificationsAndWarrantiesPolicies",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:GuaranteeObligationsCurrentCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:CapitalizedSoftwareCostsTableTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100570 - Disclosure - Property, Equipment and Capitalized Software Additional Information (Details)",
     "menuCat": "Details",
     "order": "58",
     "role": "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
     "shortName": "Property, Equipment and Capitalized Software Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "ctg:ScheduleOfCapitalizedSoftwareAmortizationExpenseAndAccumulatedAmortizationTableTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_bd288f5a-7325-4700-95e2-14f79c8b144f",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100580 - Disclosure - Property, Equipment and Capitalized Software - Schedule of Property, Equipment and Capitalized Software (Details)",
     "menuCat": "Details",
     "order": "59",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
     "shortName": "Property, Equipment and Capitalized Software - Schedule of Property, Equipment and Capitalized Software (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100050 - Statement - Consolidated Balance Sheets (Parenthetical)",
     "menuCat": "Statements",
     "order": "6",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheetsParenthetical",
     "shortName": "Consolidated Balance Sheets (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:CommonStockParOrStatedValuePerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_UnitedStatesOfAmericaDollarsShare",
      "xsiNil": "false"
     }
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:PropertyPlantAndEquipmentPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_c8fe025b-39f7-47cb-b929-248876ff77a2",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentUsefulLife",
      "reportCount": 1,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100590 - Disclosure - Property, Equipment and Capitalized Software - Useful Life (Details)",
     "menuCat": "Details",
     "order": "60",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
     "shortName": "Property, Equipment and Capitalized Software - Useful Life (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_844f125d-972b-4e4c-a297-055024b9b3c3",
      "decimals": null,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentUsefulLife",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:CapitalizedSoftwareCostsTableTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_ff42fc8e-888f-4705-a17e-541059ad5cfc",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareNet",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100600 - Disclosure - Property, Equipment and Capitalized Software - Schedule of Capitalized Software Costs (Details)",
     "menuCat": "Details",
     "order": "61",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfCapitalizedSoftwareCostsDetails",
     "shortName": "Property, Equipment and Capitalized Software - Schedule of Capitalized Software Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:CapitalizedSoftwareCostsTableTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "lang": null,
      "name": "ctg:CapitalizedComputerSoftwareForeignCurrencyExchange",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:ScheduleOfCapitalizedSoftwareAmortizationExpenseAndAccumulatedAmortizationTableTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_b12e388a-fce6-4056-bbd0-b23b0f57cc60",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100610 - Disclosure - Property, Equipment and Capitalized Software - Schedule of Amortization Expense and Accumulated Amortization (Details)",
     "menuCat": "Details",
     "order": "62",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
     "shortName": "Property, Equipment and Capitalized Software - Schedule of Amortization Expense and Accumulated Amortization (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ctg:ScheduleOfCapitalizedSoftwareAmortizationExpenseAndAccumulatedAmortizationTableTextBlock",
       "div",
       "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_a18521be-0b0f-4e77-8f80-90ea412df824",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:CapitalizedComputerSoftwareAccumulatedAmortization",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_9e7503a3-70dc-433d-bbe2-9539be3da7d3",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:BusinessAcquisitionPercentageOfVotingInterestsAcquired",
      "reportCount": 1,
      "unitRef": "U_pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100620 - Disclosure - Acquisitions - Additional Information (Details)",
     "menuCat": "Details",
     "order": "63",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
     "shortName": "Acquisitions - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_123c4632-7da0-485b-b9fe-7e70ca3ead70",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:BusinessCombinationConsiderationTransferred1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_123c4632-7da0-485b-b9fe-7e70ca3ead70",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PaymentsToAcquireBusinessesGross",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100630 - Disclosure - Acquisitions - Summary of Acquisition Date Fair Value of Consideration (Details)",
     "menuCat": "Details",
     "order": "64",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
     "shortName": "Acquisitions - Summary of Acquisition Date Fair Value of Consideration (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_123c4632-7da0-485b-b9fe-7e70ca3ead70",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R65": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100640 - Disclosure - Acquisitions - Summary of Allocation of Aggregate Purchase Consideration to Fair Values of Assets Acquired and Liabilities Assumed (Details)",
     "menuCat": "Details",
     "order": "65",
     "role": "http://www.ctg.com/20221231/taxonomy/role/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": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_9e7503a3-70dc-433d-bbe2-9539be3da7d3",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R66": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock",
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_a315e697-480b-49d0-afeb-97f0ab058fe9",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100650 - Disclosure - Acquisitions - Summary of Intangible Assets Acquired (Details)",
     "menuCat": "Details",
     "order": "66",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
     "shortName": "Acquisitions - Summary of Intangible Assets Acquired (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ix:continuation",
       "div",
       "us-gaap:BusinessCombinationDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_1a0cc2df-4749-4a3c-a7d8-efd51157ddd0",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R67": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:LongTermLineOfCredit",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100670 - Disclosure - Debt - Additional Information (Details)",
     "menuCat": "Details",
     "order": "67",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails",
     "shortName": "Debt - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:LineOfCreditFacilityMaximumAmountOutstandingDuringPeriod",
       "span",
       "p",
       "us-gaap:DebtDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-6",
      "lang": null,
      "name": "us-gaap:LineOfCreditFacilityMaximumAmountOutstandingDuringPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R68": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100680 - Disclosure - Income Taxes - Provision for Income Taxes (Details)",
     "menuCat": "Details",
     "order": "68",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails",
     "shortName": "Income Taxes - Provision for Income Taxes (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R69": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100690 - Disclosure - Income Taxes - Deferred Tax Assets and Liabilities (Details)",
     "menuCat": "Details",
     "order": "69",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails",
     "shortName": "Income Taxes - Deferred Tax Assets and Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:ProfitLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100060 - Statement - Consolidated Statements of Cash Flows",
     "menuCat": "Statements",
     "order": "7",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows",
     "shortName": "Consolidated Statements of Cash Flows",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:ProfitLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R70": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "div",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DeferredTaxAssetsValuationAllowance",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100700 - Disclosure - Income Taxes - Additional Information (Details)",
     "menuCat": "Details",
     "order": "70",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
     "shortName": "Income Taxes - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:IncomeTaxDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:IncomeTaxExaminationPenaltiesAndInterestAccrued",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R71": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:OperatingLeasesMaximumPotentialExistingPaymentIncrease",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100720 - Disclosure - Lease Commitments - Additional Information (Details)",
     "menuCat": "Details",
     "order": "71",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsAdditionalInformationDetails",
     "shortName": "Lease Commitments - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "ctg:OperatingLeasesMaximumPotentialExistingPaymentIncrease",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     }
    },
    "R72": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:LeaseCostTableTextBlock",
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100730 - Disclosure - Lease Commitments - Summary of Lease Costs (Details)",
     "menuCat": "Details",
     "order": "72",
     "role": "http://www.ctg.com/20221231/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfLeaseCostsDetails",
     "shortName": "Lease Commitments - Summary of Lease Costs (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:LeaseCostTableTextBlock",
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OperatingLeaseCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R73": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100740 - Disclosure - Lease Commitments - Summary of Maturities of Lease Liabilities for Operating Liabilities (Details)",
     "menuCat": "Details",
     "order": "73",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails",
     "shortName": "Lease Commitments - Summary of Maturities of Lease Liabilities for Operating Liabilities (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R74": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ix:continuation",
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100750 - Disclosure - Lease Commitments - Summary of Weighted Average Remaining Lease Term, Discount Rate and Supplemental Cash Flow Information for All Operating Leases (Details)",
     "menuCat": "Details",
     "order": "74",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails",
     "shortName": "Lease Commitments - Summary of Weighted Average Remaining Lease Term, Discount Rate and Supplemental Cash Flow Information for All Operating Leases (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "ix:continuation",
       "div",
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R75": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100760 - Disclosure - Deferred Compensation Benefits - Additional Information (Details)",
     "menuCat": "Details",
     "order": "75",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
     "shortName": "Deferred Compensation Benefits - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R76": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_07df3a7c-0f57-4133-9914-98d56a62fe83",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanServiceCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100770 - Disclosure - Deferred Compensation Benefits - Schedule of Net Periodic Pension Cost (Details)",
     "menuCat": "Details",
     "order": "76",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails",
     "shortName": "Deferred Compensation Benefits - Schedule of Net Periodic Pension Cost (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_07df3a7c-0f57-4133-9914-98d56a62fe83",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanServiceCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R77": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDefinedBenefitPlansDisclosuresTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_fc6fb2ce-d13e-4e83-bcfb-5174a6f3ff1f",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanBenefitObligation",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100790 - Disclosure - Deferred Compensation Benefits - Deferred Compensation Benefits Change in Benefit Obligation and Reconciliation of Fair Value (Details)",
     "menuCat": "Details",
     "order": "77",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
     "shortName": "Deferred Compensation Benefits - Deferred Compensation Benefits Change in Benefit Obligation and Reconciliation of Fair Value (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDefinedBenefitPlansDisclosuresTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_8967438e-804d-40f8-88eb-ab65c85f319c",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanServiceCost",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R78": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDefinedBenefitPlansDisclosuresTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_686b518c-1be6-47a8-a5e0-283071078eb9",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PensionAndOtherPostretirementDefinedBenefitPlansCurrentLiabilities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100800 - Disclosure - Deferred Compensation Benefits - Schedule of Accrued Benefit Cost (Details)",
     "menuCat": "Details",
     "order": "78",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails",
     "shortName": "Deferred Compensation Benefits - Schedule of Accrued Benefit Cost (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDefinedBenefitPlansDisclosuresTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_686b518c-1be6-47a8-a5e0-283071078eb9",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:PensionAndOtherPostretirementDefinedBenefitPlansCurrentLiabilities",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R79": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfExpectedBenefitPaymentsTableTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_7fa3d72e-421a-4f51-886b-f1175f805010",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanExpectedFutureBenefitPaymentsNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100810 - Disclosure - Deferred Compensation Benefits - Deferred Compensation Benefits Anticipated Benefit Payments (Details)",
     "menuCat": "Details",
     "order": "79",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails",
     "shortName": "Deferred Compensation Benefits - Deferred Compensation Benefits Anticipated Benefit Payments (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfExpectedBenefitPaymentsTableTextBlock",
       "div",
       "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_7fa3d72e-421a-4f51-886b-f1175f805010",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedBenefitPlanExpectedFutureBenefitPaymentsNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_d1eaf36b-4c88-47c5-a849-933baefb163b",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100070 - Statement - Consolidated Statements of Shareholders' Equity",
     "menuCat": "Statements",
     "order": "8",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity",
     "shortName": "Consolidated Statements of Shareholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_d1eaf36b-4c88-47c5-a849-933baefb163b",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R80": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:PostemploymentBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedContributionPlanCostRecognized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100820 - Disclosure - Employee Benefits - Additional Information (Details)",
     "menuCat": "Details",
     "order": "80",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails",
     "shortName": "Employee Benefits - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:PostemploymentBenefitsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-5",
      "first": true,
      "lang": null,
      "name": "us-gaap:DefinedContributionPlanCostRecognized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R81": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "2",
      "first": true,
      "lang": null,
      "name": "ctg:EmployeeStockOwnershipPlanEsopMaximumAnnualContributionPerEmployeePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100830 - Disclosure - Shareholders' Equity - Additional Information (Details)",
     "menuCat": "Details",
     "order": "81",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails",
     "shortName": "Shareholders' Equity - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "2",
      "first": true,
      "lang": null,
      "name": "ctg:EmployeeStockOwnershipPlanEsopMaximumAnnualContributionPerEmployeePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_pure",
      "xsiNil": "false"
     }
    },
    "R82": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100840 - Disclosure - Equity-Based Compensation - Summary of Equity-Based Compensation Expense, the Corresponding Tax Benefit and Net Equity-Based Compensation Expense (Details)",
     "menuCat": "Details",
     "order": "82",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails",
     "shortName": "Equity-Based Compensation - Summary of Equity-Based Compensation Expense, the Corresponding Tax Benefit and Net Equity-Based Compensation Expense (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R83": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6e666776-60ca-4668-9a3d-e7424ab753e2",
      "decimals": "2",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_UnitedStatesOfAmericaDollarsShare",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100850 - Disclosure - Equity-Based Compensation - Additional Information (Details)",
     "menuCat": "Details",
     "order": "83",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
     "shortName": "Equity-Based Compensation - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6e666776-60ca-4668-9a3d-e7424ab753e2",
      "decimals": "2",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_UnitedStatesOfAmericaDollarsShare",
      "xsiNil": "false"
     }
    },
    "R84": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_7d76e2ee-f1b6-4673-9362-7c326f6ada84",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100860 - Disclosure - Equity-Based Compensation - Summary of Weighted-Average Assumptions Used to Estimate Fair Value of Options (Details)",
     "menuCat": "Details",
     "order": "84",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails",
     "shortName": "Equity-Based Compensation - Summary of Weighted-Average Assumptions Used to Estimate Fair Value of Options (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_7d76e2ee-f1b6-4673-9362-7c326f6ada84",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R85": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised",
      "reportCount": 1,
      "unitRef": "U_shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100870 - Disclosure - Equity-Based Compensation - Summary of Stock Option Activity Under the 2020 Plan, 2010 Plan and Equity Plan (Details)",
     "menuCat": "Details",
     "order": "85",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
     "shortName": "Equity-Based Compensation - Summary of Stock Option Activity Under the 2020 Plan, 2010 Plan and Equity Plan (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_14e4a44e-dd38-4801-9e50-d7f6a6245307",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     }
    },
    "R86": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_1e5e2865-6c85-40a0-ad85-67e94e1d3d66",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unitRef": "U_shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100880 - Disclosure - Equity-Based Compensation - Summary of Restricted Stock Activity Under the 2010 Plan, Equity Plan and the 1991 Restricted Stock Plan (Details)",
     "menuCat": "Details",
     "order": "86",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
     "shortName": "Equity-Based Compensation - Summary of Restricted Stock Activity Under the 2010 Plan, Equity Plan and the 1991 Restricted Stock Plan (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_35dd7808-f8e8-4088-98f0-507716a3e727",
      "decimals": "INF",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     }
    },
    "R87": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAndExercisableTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_50b46d48-8a56-4116-94d6-e2de6ca8361a",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100890 - Disclosure - Equity-Based Compensation - Summary of Stock Options Outstanding for the 2020 Plan, 2010 Plan and Equity Plan (Details)",
     "menuCat": "Details",
     "order": "87",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
     "shortName": "Equity-Based Compensation - Summary of Stock Options Outstanding for the 2020 Plan, 2010 Plan and Equity Plan (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAndExercisableTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_50b46d48-8a56-4116-94d6-e2de6ca8361a",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_shares",
      "xsiNil": "false"
     }
    },
    "R88": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_50b46d48-8a56-4116-94d6-e2de6ca8361a",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber",
      "reportCount": 1,
      "unitRef": "U_shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100900 - Disclosure - Equity-Based Compensation - Summary of Stock Options that are Exercisable for the 2020 Plan, 2010 Plan and the Equity Plan (Details)",
     "menuCat": "Details",
     "order": "88",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails",
     "shortName": "Equity-Based Compensation - Summary of Stock Options that are Exercisable for the 2020 Plan, 2010 Plan and the Equity Plan (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableTableTextBlock",
       "div",
       "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_50b46d48-8a56-4116-94d6-e2de6ca8361a",
      "decimals": "2",
      "lang": null,
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_UnitedStatesOfAmericaDollarsShare",
      "xsiNil": "false"
     }
    },
    "R89": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AccountsReceivableNetCurrent",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100910 - Disclosure - Significant Clients - Additional Information (Details)",
     "menuCat": "Details",
     "order": "89",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
     "shortName": "Significant Clients - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:ConcentrationRiskDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "INF",
      "lang": null,
      "name": "ctg:NumberOfMajorClient",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_Client",
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100080 - Disclosure - Summary of Significant Accounting Policies",
     "menuCat": "Notes",
     "order": "9",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPolicies",
     "shortName": "Summary of Significant Accounting Policies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R90": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:SegmentReportingPolicyPolicyTextBlock",
       "div",
       "us-gaap:SignificantAccountingPoliciesTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "INF",
      "first": true,
      "lang": null,
      "name": "us-gaap:NumberOfOperatingSegments",
      "reportCount": 1,
      "unitRef": "U_Segment",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100920 - Disclosure - Segments and Enterprise-Wide Disclosures - Additional Information (Details)",
     "menuCat": "Details",
     "order": "90",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
     "shortName": "Segments and Enterprise-Wide Disclosures - Additional Information (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_151e187e-a42f-415a-90d4-cf8856282a67",
      "decimals": "-5",
      "lang": null,
      "name": "us-gaap:Depreciation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R91": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100930 - Disclosure - Segments and Enterprise-Wide Disclosures - Schedule of Operating Segments (Details)",
     "menuCat": "Details",
     "order": "91",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
     "shortName": "Segments and Enterprise-Wide Disclosures - Schedule of Operating Segments (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfSegmentReportingInformationBySegmentTextBlock",
       "div",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:GrossProfit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R92": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_3413084f-df8a-41be-b555-6cb77de855e1",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100940 - Disclosure - Segments and Enterprise-Wide Disclosures - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Details)",
     "menuCat": "Details",
     "order": "92",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails",
     "shortName": "Segments and Enterprise-Wide Disclosures - Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
       "div",
       "us-gaap:SegmentReportingDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_6099e77f-534a-444a-8aa1-3924dbd16651",
      "decimals": "-3",
      "lang": null,
      "name": "ctg:LongLivedAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    },
    "R93": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_ff42fc8e-888f-4705-a17e-541059ad5cfc",
      "decimals": "-3",
      "first": true,
      "lang": null,
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "reportCount": 1,
      "unitRef": "U_USD",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "100950 - Disclosure - Schedule II-Valuation and Qualifying Accounts - (Details)",
     "menuCat": "Details",
     "order": "93",
     "role": "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails",
     "shortName": "Schedule II-Valuation and Qualifying Accounts - (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "p",
       "td",
       "tr",
       "table",
       "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
       "div",
       "body",
       "html"
      ],
      "baseRef": "ctg-20221231.htm",
      "contextRef": "C_d1eaf36b-4c88-47c5-a849-933baefb163b",
      "decimals": "-3",
      "lang": null,
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "U_USD",
      "xsiNil": "false"
     }
    }
   },
   "segmentCount": 106,
   "tag": {
    "country_BE": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "BELGIUM",
        "terseLabel": "Belgium [Member]"
       }
      }
     },
     "localname": "BE",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_FR": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "FRANCE",
        "terseLabel": "France [Member]"
       }
      }
     },
     "localname": "FR",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_GB": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED KINGDOM",
        "terseLabel": "UNITED KINGDOM [Member]"
       }
      }
     },
     "localname": "GB",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_IN": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "INDIA",
        "terseLabel": "INDIA [Member]"
       }
      }
     },
     "localname": "IN",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_LU": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "LUXEMBOURG",
        "terseLabel": "Luxembourg [Member]"
       }
      }
     },
     "localname": "LU",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_NL": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "NETHERLANDS",
        "terseLabel": "Netherlands [Member]"
       }
      }
     },
     "localname": "NL",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES",
        "terseLabel": "United States [Member]"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_AllowanceForDoubtfulAccountsAdditions": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Allowance for doubtful accounts additions.",
        "label": "Allowance For Doubtful Accounts Additions",
        "terseLabel": "Allowance for credit losses, Additions"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsAdditions",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "ctg_BelgiumDefinedBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Belgium defined benefit plan.",
        "label": "Belgium Defined Benefit Plan [Member]",
        "terseLabel": "BDBP [Member]"
       }
      }
     },
     "localname": "BelgiumDefinedBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_BillableExpenses": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Billable expenses.",
        "label": "Billable Expenses",
        "terseLabel": "Billable expenses"
       }
      }
     },
     "localname": "BillableExpenses",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBillableExpensesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BuffaloNYMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Buffalo, NY",
        "label": "Buffalo N Y [Member]",
        "terseLabel": "Buffalo, NY [Member]"
       }
      }
     },
     "localname": "BuffaloNYMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_BusinessAcquisitionRelatedLegalAndConsultingFeeExpensesRelatedToRetentionBonusesAndAmortizationOfIntangibleAssets": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business acquisition related legal and consulting fee expenses related to retention bonuses and amortization of intangible assets",
        "label": "Business Acquisition Related Legal And Consulting Fee Expenses Related To Retention Bonuses And Amortization Of Intangible Assets",
        "terseLabel": "Business acquisition related legal and consulting fee expenses related to retention bonuses and amortization of intangible assets"
       }
      }
     },
     "localname": "BusinessAcquisitionRelatedLegalAndConsultingFeeExpensesRelatedToRetentionBonusesAndAmortizationOfIntangibleAssets",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationConsiderationTransferredStockOptionIssuance": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferredIncludingEquityInterestInAcquireeHeldPriorToCombination1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination consideration transferred stock option issuance.",
        "label": "Business Combination, Consideration Transferred Stock Option Issuance",
        "terseLabel": "Stock option issuance"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferredStockOptionIssuance",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationContingentConsideration": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferredIncludingEquityInterestInAcquireeHeldPriorToCombination1",
       "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationContingentConsiderationAdditionalLiabilityForEachThresholdLimit": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additional amount of expected liability arising from contingent consideration in a business combination.",
        "label": "Business Combination Contingent Consideration Additional Liability For Each Threshold Limit",
        "terseLabel": "Business Combination Contingent Consideration Additional Liability For Each Threshold Limit"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationAdditionalLiabilityForEachThresholdLimit",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationOfAdditionalTargetEarned": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination of additional target earned.",
        "label": "Business Combination of Additional Target Earned",
        "terseLabel": "Business combination of additional target earned"
       }
      }
     },
     "localname": "BusinessCombinationOfAdditionalTargetEarned",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationOfGrossProfitOrRevenueAchievedTargets": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination of gross profit or revenue achieved targets.",
        "label": "Business Combination of Gross Profit or Revenue Achieved Targets",
        "terseLabel": "Business combination of gross profit or revenue achieved targets"
       }
      }
     },
     "localname": "BusinessCombinationOfGrossProfitOrRevenueAchievedTargets",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAccruedCompensation": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails2": {
       "order": 1.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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesShortTermDebt": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination recognized identifiable assets acquired and liabilities assumed current liabilities short term debt",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Liabilities Short Term Debt",
        "terseLabel": "Short-term debt"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesShortTermDebt",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesTaxPayable": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 7.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination recognized identifiable assets acquired and liabilities assumed current liabilities tax payable.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Current Liabilities Tax Payable",
        "terseLabel": "Taxes payable"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesTaxPayable",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredCompensationBenefits": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination recognized identifiable assets acquired and liabilities assumed deferred compensation benefits",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Deferred Compensation Benefits",
        "terseLabel": "Deferred compensation benefits"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredCompensationBenefits",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredIncomeTaxLiabilitiesNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 8.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination, deferred income tax assets and liabilities, non current.",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Deferred Income Tax Liabilities Noncurrent",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredIncomeTaxLiabilitiesNoncurrent",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedTaxesReceivable": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business combination recognized identifiable assets acquired and liabilities assumed taxes receivable",
        "label": "Business Combination Recognized Identifiable Assets Acquired And Liabilities Assumed Taxes Receivable",
        "terseLabel": "Taxes receivable"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedTaxesReceivable",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_CapitalizedComputerSoftwareForeignCurrencyExchange": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Capitalized Computer Software Foreign Currency Exchange.",
        "label": "Capitalized Computer Software Foreign Currency Exchange",
        "terseLabel": "Foreign currency translation"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareForeignCurrencyExchange",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_CapitalizedComputerSoftwareFullyAmortizedProjects": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Capitalized computer software fully amortized projects.",
        "label": "Capitalized Computer Software Fully Amortized Projects",
        "terseLabel": "Fully Amortized Projects"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareFullyAmortizedProjects",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfCapitalizedSoftwareCostsDetails"
     ],
     "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/20221231",
     "xbrltype": "stringItemType"
    },
    "ctg_CapitalizedSoftwareCostsTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of capitalized software's cost.",
        "label": "Capitalized Software Costs Table [Text Block]",
        "terseLabel": "Summary of Capitalized Software's Costs"
       }
      }
     },
     "localname": "CapitalizedSoftwareCostsTableTextBlock",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_CashFDICInsurableLimit": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cash, FDIC Insurable limit",
        "label": "Cash F D I C Insurable Limit",
        "terseLabel": "Cash, FDIC insurable limit"
       }
      }
     },
     "localname": "CashFDICInsurableLimit",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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",
        "terseLabel": "Gross cash surrender values of life insurance",
        "verboseLabel": "Gross cash surrender values of life insurance"
       }
      }
     },
     "localname": "CashSurrenderValueOfLifeInsuranceGross",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_CasualtyEventsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Casualty Events.",
        "label": "Casualty Events [Member]",
        "terseLabel": "Casualty Events [Member]"
       }
      }
     },
     "localname": "CasualtyEventsMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ChangeInPresentationPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for change in presentation.",
        "label": "Change In Presentation Policy [Text Block]",
        "terseLabel": "Change In Presentation"
       }
      }
     },
     "localname": "ChangeInPresentationPolicyTextBlock",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_Company1991EquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company 1991 equity award plan.",
        "label": "Company1991 Equity Award Plan [Member]",
        "terseLabel": "1991 Equity Award Plan [Member]"
       }
      }
     },
     "localname": "Company1991EquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_Company2000EquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company 2000 equity award plan.",
        "label": "Company2000 Equity Award Plan [Member]",
        "terseLabel": "2000 Equity Award Plan [Member]"
       }
      }
     },
     "localname": "Company2000EquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_Company2010EquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company 2010 equity award plan.",
        "label": "Company2010 Equity Award Plan [Member]",
        "terseLabel": "2010 Equity Award Plan [Member]"
       }
      }
     },
     "localname": "Company2010EquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_Company2020EquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Company 2020 equity award plan.",
        "label": "Company2020 Equity Award Plan [Member]",
        "terseLabel": "2020 Equity Award Plan [Member]"
       }
      }
     },
     "localname": "Company2020EquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_ContributionProfit": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Contribution profit",
        "label": "Contribution Profit",
        "terseLabel": "Contribution profit"
       }
      }
     },
     "localname": "ContributionProfit",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_CreditAgreementMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Credit agreement.",
        "label": "Credit Agreement [Member]",
        "terseLabel": "Credit Agreement"
       }
      }
     },
     "localname": "CreditAgreementMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_DebtAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Debt [Abstract]",
        "label": "Debt [Abstract]"
       }
      }
     },
     "localname": "DebtAbstract",
     "nsuri": "http://www.ctg.com/20221231",
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DeferredPayrollTaxesNonCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 4.0,
       "parentTag": "us-gaap_Liabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred payroll taxes non current.",
        "label": "Deferred Payroll Taxes Non Current",
        "terseLabel": "Deferred payroll taxes"
       }
      }
     },
     "localname": "DeferredPayrollTaxesNonCurrent",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DeferredTaxAssetsLeases": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 7.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred tax assets leases.",
        "label": "Deferred Tax Assets Leases",
        "terseLabel": "Leases"
       }
      }
     },
     "localname": "DeferredTaxAssetsLeases",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DeferredTaxAssetsUnrealizedGain": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred tax assets unrealized gain.",
        "label": "Deferred Tax Assets Unrealized Gain",
        "terseLabel": "Unrealized gain"
       }
      }
     },
     "localname": "DeferredTaxAssetsUnrealizedGain",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DeferredTaxLiabilitiesAmortization": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred tax liabilities amortization.",
        "label": "Deferred Tax Liabilities Amortization",
        "negatedLabel": "Amortization"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesAmortization",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DeferredTaxLiabilitiesLeases": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred tax liabilities leases.",
        "label": "Deferred Tax Liabilities Leases",
        "negatedLabel": "Leases"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesLeases",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRateChange": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Defined benefit plan assumptions used calculating benefit obligation discount rate change.",
        "label": "Defined Benefit Plan Assumptions Used Calculating Benefit Obligation Discount Rate Change",
        "terseLabel": "Change in discount rate"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRateChange",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Defined benefit plan expected future benefit payments total.",
        "label": "Defined Benefit Plan Expected Future Benefit Payments Total",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_EarningsPerShareOnIncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Earnings per share, on incremental common shares attributable to share-based payment arrangements.",
        "label": "Earnings Per Share On Incremental Common Shares Attributable To Share Based Payment Arrangements",
        "terseLabel": "Dilutive effect on basic earnings per share (in dollars per share)"
       }
      }
     },
     "localname": "EarningsPerShareOnIncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "ctg_EleviantDefinedBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Eleviant defined benefit plan.",
        "label": "Eleviant Defined Benefit Plan Member",
        "terseLabel": "IDBP [Member]"
       }
      }
     },
     "localname": "EleviantDefinedBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_EleviantTechnologiesIncEleviantMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Eleviant Technologies, Inc. Eleviant.",
        "label": "Eleviant Technologies, Inc. Eleviant [Member]",
        "terseLabel": "Eleviant Technologies, Inc. (\"Eleviant\") [Member]"
       }
      }
     },
     "localname": "EleviantTechnologiesIncEleviantMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_EmployeeStockOwnershipPlanEsopMaximumAnnualContributionPerEmployeePercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Employee Stock Ownership Plan (ESOP), Maximum Annual Contribution Per Employee Percent",
        "label": "Employee Stock Ownership Plan Esop Maximum Annual Contribution Per Employee Percent",
        "terseLabel": "Employee Stock Purchase Plan (ESPP): Maximum annual contribution per employee"
       }
      }
     },
     "localname": "EmployeeStockOwnershipPlanEsopMaximumAnnualContributionPerEmployeePercent",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_EnergyMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Energy.",
        "label": "Energy [Member]",
        "terseLabel": "Energy [Member]"
       }
      }
     },
     "localname": "EnergyMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_EuropeITSolutionsAndServicesSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Europe IT solutions and services segment member.",
        "label": "Europe I T Solutions And Services Segment [Member]",
        "terseLabel": "Europe I T Solutions And Services Segment",
        "verboseLabel": "Europe IT Solutions and Services Segment [Member]"
       }
      }
     },
     "localname": "EuropeITSolutionsAndServicesSegmentMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ExecutiveSupplementalBenefitsPlanNetherlandsDefinedBenefitsPlanBelgiumDefinedBenefitsPlanFinanciereSoftSASDefinedBenefitsPlanAndStarDustSASDefinedBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Executive supplemental benefits plan, Netherlands defined benefits plan, Belgium defined benefits plan, Financiere Soft SAS defined benefits plan and star dust SAS defined benefit plan [Member.]",
        "label": "Executive Supplemental Benefits Plan Netherlands Defined Benefits Plan Belgium Defined Benefits Plan Financiere Soft S A S Defined Benefits Plan And Star Dust S A S Defined Benefit Plan [Member]",
        "terseLabel": "ESBP, NDBP, BDBP, FDBP and SDBP [Member]"
       }
      }
     },
     "localname": "ExecutiveSupplementalBenefitsPlanNetherlandsDefinedBenefitsPlanBelgiumDefinedBenefitsPlanFinanciereSoftSASDefinedBenefitsPlanAndStarDustSASDefinedBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ExecutiveSupplementalBenefitsPlanNetherlandsDefinedBenefitsPlanBelgiumDefinedBenefitsPlanFinanciereSoftSASDefinedBenefitsPlanStarDustSASDefinedBenefitPlanAndEleviantDefinedBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Executive supplemental benefits plan netherlands defined benefits plan belgium defined benefits plan financiere soft s a s defined benefits plan star dust s a s defined benefit plan and eleviant defined benefit plan.",
        "label": "Executive Supplemental Benefits Plan Netherlands Defined Benefits Plan Belgium Defined Benefits Plan Financiere Soft S A S Defined Benefits Plan Star Dust S A S Defined Benefit Plan And Eleviant Defined Benefit Plan [Member]",
        "terseLabel": "ESBP, NDBP, BDBP, FDBP, SDBP and IDBP [Member]"
       }
      }
     },
     "localname": "ExecutiveSupplementalBenefitsPlanNetherlandsDefinedBenefitsPlanBelgiumDefinedBenefitsPlanFinanciereSoftSASDefinedBenefitsPlanStarDustSASDefinedBenefitPlanAndEleviantDefinedBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ExpectedNonTaxableLifeInsuranceGainUponDeathOfParticipants": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Expected non-taxable life insurance gain upon death of participants.",
        "label": "Expected Non Taxable Life Insurance Gain Upon Death Of Participants",
        "terseLabel": "Expected non-taxable life insurance gain upon death of participants"
       }
      }
     },
     "localname": "ExpectedNonTaxableLifeInsuranceGainUponDeathOfParticipants",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_FactoringAgreementMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Factoring agreement member.",
        "label": "Factoring Agreement [Member]",
        "terseLabel": "Factoring Agreement [Member]"
       }
      }
     },
     "localname": "FactoringAgreementMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_FairValueOfRemainingContingentConsiderationLiability": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of the remaining contingent consideration liability.",
        "label": "Fair Value Of Remaining Contingent Consideration Liability",
        "terseLabel": "Fair value of the remaining contingent consideration liability"
       }
      }
     },
     "localname": "FairValueOfRemainingContingentConsiderationLiability",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_FixedChargeCoverageRatio": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fixed charge coverage ratio.",
        "label": "Fixed Charge Coverage Ratio",
        "terseLabel": "Fixed Charge Coverage Ratio"
       }
      }
     },
     "localname": "FixedChargeCoverageRatio",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "pureItemType"
    },
    "ctg_ForeignCountriesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Foreign countries.",
        "label": "Foreign Countries [Member]",
        "terseLabel": "Foreign Countries [Member]"
       }
      }
     },
     "localname": "ForeignCountriesMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_FranceReportingUnitMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "France reporting unit.",
        "label": "France Reporting Unit [Member]",
        "terseLabel": "France Reporting Unit [Member]"
       }
      }
     },
     "localname": "FranceReportingUnitMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_GoodwillImpairmentIndicators": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Goodwill impairment indicators.",
        "label": "Goodwill Impairment Indicators",
        "terseLabel": "Goodwill impairment indicators"
       }
      }
     },
     "localname": "GoodwillImpairmentIndicators",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_IncomeTaxExpenseMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income tax expense.",
        "label": "Income Tax Expense [Member]",
        "terseLabel": "Income Tax Expense [Member]"
       }
      }
     },
     "localname": "IncomeTaxExpenseMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_IncomeTaxReconciliationGlobalIntangibleLowTaxedIncome": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 8.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income tax reconciliation global intangible low taxed income.",
        "label": "Income Tax Reconciliation Global Intangible Low Taxed Income",
        "terseLabel": "GILTI"
       }
      }
     },
     "localname": "IncomeTaxReconciliationGlobalIntangibleLowTaxedIncome",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_IncomeTaxesDisclosureLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income taxes disclosure.",
        "label": "Income Taxes Disclosure [Line Items]",
        "terseLabel": "Income Taxes Disclosure [Line Items]"
       }
      }
     },
     "localname": "IncomeTaxesDisclosureLineItems",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_IncomeTaxesDisclosureTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income taxes disclosure.",
        "label": "Income Taxes Disclosure [Table]",
        "terseLabel": "Income Taxes Disclosure [Table]"
       }
      }
     },
     "localname": "IncomeTaxesDisclosureTable",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_IncreaseDecreaseInCashSurrenderValueOfLifeInsuranceNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 11.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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_IncreaseDecreaseInDeferredPayrollTaxes": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 15.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Increase decrease in deferred payroll taxes.",
        "label": "Increase Decrease In Deferred Payroll Taxes",
        "negatedLabel": "Deferred payroll taxes"
       }
      }
     },
     "localname": "IncreaseDecreaseInDeferredPayrollTaxes",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "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": "Lessee operating, lease lease not yet commenced, lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLeaseNotYetCommencedLeasePayments",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LineOfCreditFacilityAdditionalBorrowingCapacityPercentage": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Line of credit facility additional borrowing capacity percentage.",
        "label": "Line Of Credit Facility Additional Borrowing Capacity Percentage",
        "terseLabel": "Excess percentage available for total available borrowings"
       }
      }
     },
     "localname": "LineOfCreditFacilityAdditionalBorrowingCapacityPercentage",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LongLivedAssets": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Long-lived assets.",
        "label": "Long Lived Assets",
        "verboseLabel": "Long-lived assets"
       }
      }
     },
     "localname": "LongLivedAssets",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_LuxembourgReportingUnitMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Luxembourg reporting unit.",
        "label": "Luxembourg Reporting Unit [Member]",
        "terseLabel": "Luxembourg Reporting Unit [Member]"
       }
      }
     },
     "localname": "LuxembourgReportingUnitMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NonCashTransactionsAcquisitionShareIssuance": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Non-cash Transactions Acquisition Share Issuance",
        "label": "Non-cash Transactions Acquisition Share Issuance",
        "terseLabel": "Acquisition share issuance"
       }
      }
     },
     "localname": "NonCashTransactionsAcquisitionShareIssuance",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_NonCashTransactionsAcquisitionStockOptionIssuance": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "non-cash Transactions Acquisition Stock Option Issuance",
        "label": "non-cash Transactions Acquisition Stock Option Issuance",
        "terseLabel": "Acquisition stock option issuance"
       }
      }
     },
     "localname": "NonCashTransactionsAcquisitionStockOptionIssuance",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NonQualifiedDefinedBenefitExecutiveSupplementalBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Non-Qualified defined benefit executive supplemental benefit plan.",
        "label": "Non Qualified Defined Benefit Executive Supplemental Benefit Plan [Member]",
        "terseLabel": "Non-Qualified Defined Benefit Executive Supplemental Benefit Plan [Member]"
       }
      }
     },
     "localname": "NonQualifiedDefinedBenefitExecutiveSupplementalBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NonStrategicTechnologyServicesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Non-Strategic technology services member.",
        "label": "Non Strategic Technology Services [Member]",
        "terseLabel": "Non Strategic Technology Services"
       }
      }
     },
     "localname": "NonStrategicTechnologyServicesMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NonTaxableLifeInsuranceGain": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Non-taxable life insurance gain.",
        "label": "Non Taxable Life Insurance Gain",
        "terseLabel": "Non-taxable life insurance gain"
       }
      }
     },
     "localname": "NonTaxableLifeInsuranceGain",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_NontaxableLifeInsuranceIncome": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 7.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Nontaxable life insurance income.",
        "label": "Nontaxable Life Insurance Income",
        "negatedLabel": "Non-taxable life insurance gain",
        "terseLabel": "Non-taxable life insurance gain"
       }
      }
     },
     "localname": "NontaxableLifeInsuranceIncome",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_NorthAmericaITSolutionsAndServicesSegmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "North America IT solutions and services segment member.",
        "label": "North America I T Solutions And Services Segment [Member]",
        "terseLabel": "North America I T Solutions And Services Segment",
        "verboseLabel": "North America IT Solutions and Services Segment [Member]"
       }
      }
     },
     "localname": "NorthAmericaITSolutionsAndServicesSegmentMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_NorthAmericaItSolutionsAndServicesReportingUnitsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "North America IT solutions and services reporting units.",
        "label": "North America IT Solutions And Services Reporting Units [Member]",
        "terseLabel": "North America IT Solutions and Services Reporting Units [Member]"
       }
      }
     },
     "localname": "NorthAmericaItSolutionsAndServicesReportingUnitsMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "ctg_NumberOfMajorClient": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of major client.",
        "label": "Number Of Major Client",
        "terseLabel": "Number of major client"
       }
      }
     },
     "localname": "NumberOfMajorClient",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "ctg_NumberOfPeriodCombinedTarget": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of period combined target.",
        "label": "Number of Period Combined Target",
        "terseLabel": "Number of period combined target"
       }
      }
     },
     "localname": "NumberOfPeriodCombinedTarget",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_OperatingLossCarryforwardsExpirationYear": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Operating loss carryforwards expiration year.",
        "label": "Operating Loss Carryforwards Expiration Year",
        "terseLabel": "Operating loss carryforwards expiration year"
       }
      }
     },
     "localname": "OperatingLossCarryforwardsExpirationYear",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "gYearItemType"
    },
    "ctg_OtherComputerSoftwareIntangibleAssetMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Other computer software intangible asset.",
        "label": "Other Computer Software Intangible Asset [Member]",
        "terseLabel": "Other Software [Member]"
       }
      }
     },
     "localname": "OtherComputerSoftwareIntangibleAssetMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_OtherCountriesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Other countries.",
        "label": "Other Countries [Member]",
        "terseLabel": "Other Countries [Member]"
       }
      }
     },
     "localname": "OtherCountriesMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_PensionAndOtherPostretirementDefinedBenefitPlansIncreaseDecreaseInPlansLiabilities": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Pension and other postretirement defined benefit plans, increase (decrease) in plan's liabilities.",
        "label": "Pension And Other Postretirement Defined Benefit Plans Increase Decrease In Plans Liabilities",
        "terseLabel": "Increase (decrease) in plan liabilities"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementDefinedBenefitPlansIncreaseDecreaseInPlansLiabilities",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_PercentageOfRevenue": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of revenue.",
        "label": "Percentage Of Revenue",
        "terseLabel": "Percentage of revenue"
       }
      }
     },
     "localname": "PercentageOfRevenue",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_PropertyEquipmentAndCapitalizedSoftwareUsefulLivesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Property equipment and capitalized software useful lives.",
        "label": "Property Equipment And Capitalized Software Useful Lives [Abstract]"
       }
      }
     },
     "localname": "PropertyEquipmentAndCapitalizedSoftwareUsefulLivesAbstract",
     "nsuri": "http://www.ctg.com/20221231",
     "xbrltype": "stringItemType"
    },
    "ctg_RangeOfExercisePrices1358To1360Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of exercise prices1358 To1360 member.",
        "label": "Range Of Exercise Prices1358 To1360 [Member]",
        "terseLabel": "Range Of Exercise Prices1358 To1360"
       }
      }
     },
     "localname": "RangeOfExercisePrices1358To1360Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices1358To1375Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of Exercise Prices 1358 to 1375.",
        "label": "Range Of Exercise Prices1358 To1375 [Member]",
        "terseLabel": "Range Of Exercise Prices1358 To1375"
       }
      }
     },
     "localname": "RangeOfExercisePrices1358To1375Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices1504To1693Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of exercise prices $15.04 - $16.93.",
        "label": "Range Of Exercise Prices1504 To1693 [Member]",
        "terseLabel": "Range Of Exercise Prices1504 To1693"
       }
      }
     },
     "localname": "RangeOfExercisePrices1504To1693Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices1590To1693Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of exercise prices1590 To1693 member.",
        "label": "Range Of Exercise Prices1590 To1693 [Member]",
        "terseLabel": "Range Of Exercise Prices1590 To1693"
       }
      }
     },
     "localname": "RangeOfExercisePrices1590To1693Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices2068To2141Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of exercise prices $20.68 - $21.41.",
        "label": "Range Of Exercise Prices2068 To2141 [Member]",
        "terseLabel": "Range Of Exercise Prices2068 To2141"
       }
      }
     },
     "localname": "RangeOfExercisePrices2068To2141Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices420To748Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of exercise prices from $4.20 to $7.48.",
        "label": "Range Of Exercise Prices420 To748 [Member]",
        "terseLabel": "Range Of Exercise Prices420 To748"
       }
      }
     },
     "localname": "RangeOfExercisePrices420To748Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices452To478Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of Exercise Prices 452 to 478.",
        "label": "Range Of Exercise Prices452 To478 [Member]",
        "terseLabel": "Range Of Exercise Prices452 To478"
       }
      }
     },
     "localname": "RangeOfExercisePrices452To478Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices478To478Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range Of Exercise Prices478 To478 [Member]",
        "label": "Range Of Exercise Prices478 To478 [Member]",
        "terseLabel": "Range Of Exercise Prices478To 478"
       }
      }
     },
     "localname": "RangeOfExercisePrices478To478Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices525To718Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range of exercise prices $5.25 - $7.18.",
        "label": "Range Of Exercise Prices525 To718 [Member]",
        "terseLabel": "Range Of Exercise Prices525 To718"
       }
      }
     },
     "localname": "RangeOfExercisePrices525To718Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RangeOfExercisePrices912To917Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Range Of Exercise Prices912 To917 [Member]",
        "label": "Range Of Exercise Prices912 To917 [Member]",
        "terseLabel": "Range Of Exercise Prices912 To917"
       }
      }
     },
     "localname": "RangeOfExercisePrices912To917Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_Rangeofexerciseprices678To678Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Rangeofexerciseprices678To678member.",
        "label": "RangeOfExercisePrices678To678 [Member]",
        "terseLabel": "Range Of Exercise Prices678 To678"
       }
      }
     },
     "localname": "Rangeofexerciseprices678To678Member",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_RevenueFromExternalCustomersPercent": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Revenue from external customers, percent.",
        "label": "Revenue From External Customers Percent",
        "terseLabel": "Revenue percent",
        "verboseLabel": "Revenue percent"
       }
      }
     },
     "localname": "RevenueFromExternalCustomersPercent",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_SalesRevenueServicesNetOneMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sales revenue services net one.",
        "label": "Sales Revenue Services Net One [Member]",
        "terseLabel": "Sales Revenue, Services, Net [Member]"
       }
      }
     },
     "localname": "SalesRevenueServicesNetOneMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ScheduleOfCapitalizedSoftwareAmortizationExpenseAndAccumulatedAmortizationTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of capitalized software's amortization expense and accumulated amortization [Table Text Block]",
        "label": "Schedule Of Capitalized Software Amortization Expense And Accumulated Amortization Table [Text Block]",
        "terseLabel": "Schedule of Capitalized Software's Amortization Expense and Accumulated Amortization"
       }
      }
     },
     "localname": "ScheduleOfCapitalizedSoftwareAmortizationExpenseAndAccumulatedAmortizationTableTextBlock",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_SecuredOvernightFinancingRateMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Secured Overnight Financing Rate.",
        "label": "Secured Overnight Financing Rate [Member]",
        "terseLabel": "SOFR [Member]"
       }
      }
     },
     "localname": "SecuredOvernightFinancingRateMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_SeniorManagementMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Senior management.",
        "label": "Senior Management [Member]",
        "terseLabel": "Senior Management [Member]"
       }
      }
     },
     "localname": "SeniorManagementMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails"
     ],
     "xbrltype": "dateItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriodExpirationDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award award vesting period expiration date.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Award Vesting Period Expiration Date",
        "terseLabel": "Award vesting period expiration date"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriodExpirationDate",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "dateItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfInstallments": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award number of installments.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Number Of Installments",
        "terseLabel": "Years of annual installments in which stock options become exercisable"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfInstallments",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardPercentageOfPerformanceConditionsNeedsToBeMetForSharesToVest": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award percentage of performance conditions need to be met in order for the shares to vest.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Percentage Of Performance Conditions Needs To Be Met For Shares To Vest",
        "terseLabel": "Percentage of shares to be increased before vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardPercentageOfPerformanceConditionsNeedsToBeMetForSharesToVest",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardPerformanceCondition": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award performance condition.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Performance Condition",
        "terseLabel": "Performance conditions"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardPerformanceCondition",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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": "Increase in stock price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharePriceToBeIncreasedBeforeVestingPeriod",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "ctg_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesReleased": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share based compensation arrangement by share based payment award shares released.",
        "label": "Share Based Compensation Arrangement By Share Based Payment Award Shares Released",
        "terseLabel": "Release of shares"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesReleased",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "ctg_ShareBasedCompensationAwardTrancheFourMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fourth 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 Four [Member]",
        "terseLabel": "Stock Vesting, Four Year From Grant Date [Member]"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheFourMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ShortTermDeferredPayrollTaxesCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 4.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Short term deferred payroll taxes current.",
        "label": "Short Term Deferred Payroll Taxes Current",
        "terseLabel": "Short-term deferred payroll taxes"
       }
      }
     },
     "localname": "ShortTermDeferredPayrollTaxesCurrent",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_SignificantCustomerAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Significant customer.",
        "label": "Significant Customer [Abstract]"
       }
      }
     },
     "localname": "SignificantCustomerAbstract",
     "nsuri": "http://www.ctg.com/20221231",
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_StarDustSASDefinedBenefitPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Star Dust SAS defined benefit plan.",
        "label": "Star Dust S A S Defined Benefit Plan [Member]",
        "terseLabel": "SDBP [Member]"
       }
      }
     },
     "localname": "StarDustSASDefinedBenefitPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_StardustMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stardust member.",
        "label": "Stardust [Member]",
        "terseLabel": "Star Dust [Member]"
       }
      }
     },
     "localname": "StardustMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_StardustSASStarDustMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stardust SAS StarDust Member",
        "label": "Stardust S A S Star Dust [Member]",
        "terseLabel": "Stardust SAS (StarDust) [Member]",
        "verboseLabel": "Stardust SAS (StarDust) [Member]"
       }
      }
     },
     "localname": "StardustSASStarDustMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_StockIssuedDuringPeriodValueStockOptionAcquisitions": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock Issued During Period Value Stock Option Acquisitions",
        "label": "Stock Issued During Period Value Stock Option Acquisitions",
        "terseLabel": "Acquisition stock option issuance"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionAcquisitions",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_SupplementaryInformationForCorporateOwnedLifeInsuranceLineItems": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Supplementary information for corporate owned life insurance.",
        "label": "Supplementary Information For Corporate Owned Life Insurance [Line Items]",
        "terseLabel": "Supplementary Information For Corporate Owned Life Insurance [Line Items]"
       }
      }
     },
     "localname": "SupplementaryInformationForCorporateOwnedLifeInsuranceLineItems",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "ctg_SupplementaryInformationForCorporateOwnedLifeInsuranceTable": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Supplementary information for corporate owned life insurance.",
        "label": "Supplementary Information For Corporate Owned Life Insurance [Table]",
        "terseLabel": "Supplementary Information For Corporate Owned Life Insurance [Table]"
       }
      }
     },
     "localname": "SupplementaryInformationForCorporateOwnedLifeInsuranceTable",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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 Clients"
       }
      }
     },
     "localname": "TaxesCollectedFromCustomersPolicyTextBlock",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TechnologyMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Technology-based intangible assets, including, but not limited to, patented technology, unpatented technology, and developed technology rights.",
        "label": "Technology [Member]",
        "terseLabel": "Technology [Member]"
       }
      }
     },
     "localname": "TechnologyMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ThreeMonthVestingMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Three Month Vesting [Member]",
        "label": "Three Month Vesting [Member]",
        "terseLabel": "3-month vest"
       }
      }
     },
     "localname": "ThreeMonthVestingMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ThresholdForLongLivedAssetGeographicDisclosure": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Threshold for long-lived asset geographic disclosure.",
        "label": "Threshold For Long Lived Asset Geographic Disclosure",
        "terseLabel": "Threshold for long-lived asset geographic disclosure"
       }
      }
     },
     "localname": "ThresholdForLongLivedAssetGeographicDisclosure",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_ThresholdForSeparateGeographicDisclosure": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Threshold for separate geographic disclosure.",
        "label": "Threshold For Separate Geographic Disclosure",
        "terseLabel": "Threshold for separate geographic disclosure"
       }
      }
     },
     "localname": "ThresholdForSeparateGeographicDisclosure",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "ctg_ThresholdLimitOfConsolidatedDirectProfitAchievedAboveTarget": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Threshold limit of consolidated direct profit achieved above the target.",
        "label": "Threshold Limit Of Consolidated Direct Profit Achieved Above Target",
        "terseLabel": "Threshold Limit Of Consolidated Direct Profit Achieved Above Target"
       }
      }
     },
     "localname": "ThresholdLimitOfConsolidatedDirectProfitAchievedAboveTarget",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "ctg_TwelveMonthVestingMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Twelve Month Vesting.",
        "label": "Twelve Month Vesting [Member]",
        "terseLabel": "12-month vest"
       }
      }
     },
     "localname": "TwelveMonthVestingMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TwoThousandTenEquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "2010 equity award plan.",
        "label": "Two Thousand Ten Equity Award Plan [Member]",
        "terseLabel": "2010 Equity Award Plan [Member]"
       }
      }
     },
     "localname": "TwoThousandTenEquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_TwoThousandTwentyEquityAwardPlanMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "2020 Equity Award plan [Member]",
        "label": "Two Thousand Twenty Equity Award Plan [Member]",
        "terseLabel": "2020 Equity Award plan [Member]"
       }
      }
     },
     "localname": "TwoThousandTwentyEquityAwardPlanMember",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "ctg_ValuationAllowanceDeferredTaxAssetAdditions": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Valuation allowance deferred tax asset additions.",
        "label": "Valuation Allowance Deferred Tax Asset Additions",
        "terseLabel": "Deferred tax asset valuation allowance, Additions"
       }
      }
     },
     "localname": "ValuationAllowanceDeferredTaxAssetAdditions",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "ctg_ValuationAllowanceDeferredTaxAssetDeduction": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Valuation allowance, deferred tax asset, deduction.",
        "label": "Valuation Allowance Deferred Tax Asset Deduction",
        "negatedLabel": "Deferred tax asset valuation allowance, Deductions"
       }
      }
     },
     "localname": "ValuationAllowanceDeferredTaxAssetDeduction",
     "nsuri": "http://www.ctg.com/20221231",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_AmendmentFlag": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the XBRL content amends previously-filed or accepted submission.",
        "label": "Amendment Flag",
        "terseLabel": "Amendment Flag"
       }
      }
     },
     "localname": "AmendmentFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_AuditorFirmId": {
     "auth_ref": [
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "PCAOB issued Audit Firm Identifier",
        "label": "Auditor Firm ID",
        "terseLabel": "Auditor Firm ID"
       }
      }
     },
     "localname": "AuditorFirmId",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "nonemptySequenceNumberItemType"
    },
    "dei_AuditorLocation": {
     "auth_ref": [
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Location",
        "terseLabel": "Auditor Location"
       }
      }
     },
     "localname": "AuditorLocation",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "internationalNameItemType"
    },
    "dei_AuditorName": {
     "auth_ref": [
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "Auditor Name",
        "terseLabel": "Auditor Name"
       }
      }
     },
     "localname": "AuditorName",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "internationalNameItemType"
    },
    "dei_CityAreaCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Area code of city",
        "label": "City Area Code",
        "terseLabel": "City Area Code"
       }
      }
     },
     "localname": "CityAreaCode",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_CoverAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cover page.",
        "label": "Cover [Abstract]"
       }
      }
     },
     "localname": "CoverAbstract",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "xbrltype": "stringItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentAnnualReport": {
     "auth_ref": [
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as an annual report.",
        "label": "Document Annual Report",
        "terseLabel": "Document Annual Report"
       }
      }
     },
     "localname": "DocumentAnnualReport",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_DocumentFiscalPeriodFocus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fiscal period values are FY, Q1, Q2, and Q3.  1st, 2nd and 3rd quarter 10-Q or 10-QT statements have value Q1, Q2, and Q3 respectively, with 10-K, 10-KT or other fiscal year statements having FY.",
        "label": "Document Fiscal Period Focus",
        "verboseLabel": "Document Fiscal Period Focus"
       }
      }
     },
     "localname": "DocumentFiscalPeriodFocus",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "fiscalPeriodItemType"
    },
    "dei_DocumentFiscalYearFocus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This is focus fiscal year of the document report in YYYY 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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "gYearItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "For the EDGAR submission types of Form 8-K: the date of the report, the date of the earliest event reported; for the EDGAR submission types of Form N-1A: the filing date; for all other submission types: the end of the reporting or transition period.  The format of the date is YYYY-MM-DD.",
        "label": "Document Period End Date",
        "terseLabel": "Document Period End Date"
       }
      }
     },
     "localname": "DocumentPeriodEndDate",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r710"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true only for a form used as a transition report.",
        "label": "Document Transition Report",
        "terseLabel": "Document Transition Report"
       }
      }
     },
     "localname": "DocumentTransitionReport",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "submissionTypeItemType"
    },
    "dei_DocumentsIncorporatedByReferenceTextBlock": {
     "auth_ref": [
      "r705"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Documents incorporated by reference.",
        "label": "Documents Incorporated by Reference [Text Block]",
        "terseLabel": "Documents Incorporated by Reference"
       }
      }
     },
     "localname": "DocumentsIncorporatedByReferenceTextBlock",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "textBlockItemType"
    },
    "dei_EntityAddressAddressLine1": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Address Line 1 such as Attn, Building Name, Street Name",
        "label": "Entity Address, Address Line One",
        "terseLabel": "Entity Address, Address Line One"
       }
      }
     },
     "localname": "EntityAddressAddressLine1",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressAddressLine2": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Address Line 2 such as Street or Suite number",
        "label": "Entity Address, Address Line Two",
        "terseLabel": "Entity Address, Address Line Two"
       }
      }
     },
     "localname": "EntityAddressAddressLine2",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressCityOrTown": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the City or Town",
        "label": "Entity Address, City or Town",
        "terseLabel": "Entity Address, City or Town"
       }
      }
     },
     "localname": "EntityAddressCityOrTown",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressPostalZipCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Code for the postal or zip code",
        "label": "Entity Address, Postal Zip Code",
        "terseLabel": "Entity Address, Postal Zip Code"
       }
      }
     },
     "localname": "EntityAddressPostalZipCode",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityAddressStateOrProvince": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the state or province.",
        "label": "Entity Address, State or Province",
        "terseLabel": "Entity Address, State or Province"
       }
      }
     },
     "localname": "EntityAddressStateOrProvince",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r704"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "sharesItemType"
    },
    "dei_EntityCurrentReportingStatus": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' whether registrants (1) have filed all reports required to be filed by Section 13 or 15(d) of the Securities Exchange Act of 1934 during the preceding 12 months (or for such shorter period that registrants were required to file such reports), and (2) have been subject to such filing requirements for the past 90 days. This information should be based on the registrant's current or most recent filing containing the related disclosure.",
        "label": "Entity Current Reporting Status",
        "terseLabel": "Entity Current Reporting Status"
       }
      }
     },
     "localname": "EntityCurrentReportingStatus",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r704"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityFileNumber": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Commission file number. The field allows up to 17 characters. The prefix may contain 1-3 digits, the sequence number may contain 1-8 digits, the optional suffix may contain 1-4 characters, and the fields are separated with a hyphen.",
        "label": "Securities Act File Number",
        "terseLabel": "Entity File Number"
       }
      }
     },
     "localname": "EntityFileNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r704"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate whether the registrant is one of the following: Large Accelerated Filer, Accelerated Filer, Non-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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "filerCategoryItemType"
    },
    "dei_EntityIncorporationStateCountryCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Two-character EDGAR code representing the state or country of incorporation.",
        "label": "Entity Incorporation, State or Country Code",
        "terseLabel": "Entity Incorporation, State or Country Code"
       }
      }
     },
     "localname": "EntityIncorporationStateCountryCode",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r711"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant has submitted electronically every Interactive Data File required to be submitted pursuant to Rule 405 of Regulation S-T during the preceding 12 months (or for such shorter period that the registrant was required to submit such files).",
        "label": "Entity Interactive Data Current",
        "terseLabel": "Entity Interactive Data Current"
       }
      }
     },
     "localname": "EntityInteractiveDataCurrent",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityPublicFloat": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate market value of the voting and non-voting common equity held by non-affiliates computed by reference to the price at which the common equity was last sold, or the average bid and asked price of such common equity, as of the last business day of the registrant's most recently completed second fiscal quarter.",
        "label": "Entity Public Float",
        "verboseLabel": "Entity Public Float"
       }
      }
     },
     "localname": "EntityPublicFloat",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r704"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r704"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Boolean flag that is true when the registrant is a shell company as defined in Rule 12b-2 of the Exchange Act.",
        "label": "Entity Shell Company",
        "terseLabel": "Entity Shell Company"
       }
      }
     },
     "localname": "EntityShellCompany",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r704"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates that the company is a Smaller Reporting Company (SRC).",
        "label": "Entity Small Business",
        "terseLabel": "Entity Small Business"
       }
      }
     },
     "localname": "EntitySmallBusiness",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r704"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The Tax Identification Number (TIN), also known as an Employer Identification Number (EIN), is a unique 9-digit value assigned by the IRS.",
        "label": "Entity Tax Identification Number",
        "terseLabel": "Entity Tax Identification Number"
       }
      }
     },
     "localname": "EntityTaxIdentificationNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "employerIdItemType"
    },
    "dei_EntityVoluntaryFilers": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is not required to file reports pursuant to Section 13 or Section 15(d) of the Act.",
        "label": "Entity Voluntary Filers",
        "terseLabel": "Entity Voluntary Filers"
       }
      }
     },
     "localname": "EntityVoluntaryFilers",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "auth_ref": [
      "r712"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicate 'Yes' or 'No' if the registrant is a well-known seasoned issuer, as defined in Rule 405 of the Securities Act. Is used on Form Type: 10-K, 10-Q, 8-K, 20-F, 6-K, 10-K/A, 10-Q/A, 20-F/A, 6-K/A, N-CSR, N-Q, N-1A.",
        "label": "Entity Well-known Seasoned Issuer",
        "terseLabel": "Entity Well-known Seasoned Issuer"
       }
      }
     },
     "localname": "EntityWellKnownSeasonedIssuer",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_IcfrAuditorAttestationFlag": {
     "auth_ref": [
      "r707",
      "r708",
      "r709"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ICFR Auditor Attestation Flag",
        "terseLabel": "ICFR Auditor Attestation Flag"
       }
      }
     },
     "localname": "IcfrAuditorAttestationFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_LocalPhoneNumber": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Local phone number for entity.",
        "label": "Local Phone Number",
        "terseLabel": "Local Phone Number"
       }
      }
     },
     "localname": "LocalPhoneNumber",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r703"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Title of a 12(b) registered security.",
        "label": "Title of 12(b) Security",
        "terseLabel": "Title of 12(b) Security"
       }
      }
     },
     "localname": "Security12bTitle",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r706"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Name of the Exchange on which a security is registered.",
        "label": "Security Exchange Name",
        "terseLabel": "Security Exchange Name"
       }
      }
     },
     "localname": "SecurityExchangeName",
     "nsuri": "http://xbrl.sec.gov/dei/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "edgarExchangeCodeItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DocumentDocumentAndEntityInformationDocument"
     ],
     "xbrltype": "tradingSymbolItemType"
    },
    "srt_CommonDomainMembersAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Common Domain Members [Abstract]"
       }
      }
     },
     "localname": "CommonDomainMembersAbstract",
     "nsuri": "http://fasb.org/srt/2022",
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsAxis": {
     "auth_ref": [
      "r242",
      "r275",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r299",
      "r303",
      "r354",
      "r355",
      "r356",
      "r357",
      "r359",
      "r360",
      "r362",
      "r364",
      "r365",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668",
      "r669",
      "r670",
      "r671",
      "r752",
      "r753",
      "r879",
      "r880"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by components, eliminations, non-segment corporate-level activity and reconciling items used in consolidating a parent entity and its subsidiaries or its operating segments.",
        "label": "Consolidation Items [Axis]",
        "terseLabel": "Consolidation Items"
       }
      }
     },
     "localname": "ConsolidationItemsAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ConsolidationItemsDomain": {
     "auth_ref": [
      "r242",
      "r275",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r299",
      "r303",
      "r354",
      "r355",
      "r356",
      "r357",
      "r359",
      "r360",
      "r362",
      "r364",
      "r365",
      "r663",
      "r664",
      "r665",
      "r666",
      "r667",
      "r668",
      "r669",
      "r670",
      "r671",
      "r752",
      "r753",
      "r879",
      "r880"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Components, elimination, non-segment corporate-level activity and reconciling items used in consolidating a parent entity and its subsidiaries or its operating segments.",
        "label": "Consolidation Items [Domain]",
        "terseLabel": "Consolidation Items"
       }
      }
     },
     "localname": "ConsolidationItemsDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_EuropeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Continent of Europe.",
        "label": "Europe [Member]",
        "terseLabel": "Europe [Member]"
       }
      }
     },
     "localname": "EuropeMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ExecutiveOfficerMember": {
     "auth_ref": [
      "r734"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Person with designation of executive officer.",
        "label": "Executive Officer [Member]",
        "terseLabel": "Executive Officer [Member]"
       }
      }
     },
     "localname": "ExecutiveOfficerMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MajorCustomersAxis": {
     "auth_ref": [
      "r309",
      "r684",
      "r755",
      "r876"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by name or description of a single external customer or a group of external customers.",
        "label": "Customer [Axis]",
        "terseLabel": "Customer"
       }
      }
     },
     "localname": "MajorCustomersAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [
      "r346",
      "r348",
      "r349",
      "r350",
      "r489",
      "r610",
      "r627",
      "r649",
      "r650",
      "r681",
      "r692",
      "r702",
      "r754",
      "r869",
      "r870",
      "r871",
      "r872",
      "r873",
      "r874"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Upper limit of the provided range.",
        "label": "Maximum [Member]",
        "terseLabel": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MinimumMember": {
     "auth_ref": [
      "r346",
      "r348",
      "r349",
      "r350",
      "r489",
      "r610",
      "r627",
      "r649",
      "r650",
      "r681",
      "r692",
      "r702",
      "r754",
      "r869",
      "r870",
      "r871",
      "r872",
      "r873",
      "r874"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Lower limit of the provided range.",
        "label": "Minimum [Member]",
        "terseLabel": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_NameOfMajorCustomerDomain": {
     "auth_ref": [
      "r309",
      "r684",
      "r755",
      "r876"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Single external customer or group of external customers.",
        "label": "Customer [Domain]",
        "terseLabel": "Customer"
       }
      }
     },
     "localname": "NameOfMajorCustomerDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_NorthAmericaMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Continent of North America.",
        "label": "North America [Member]",
        "terseLabel": "North America [Member]"
       }
      }
     },
     "localname": "NorthAmericaMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r305",
      "r615",
      "r682",
      "r700",
      "r750",
      "r751",
      "r755",
      "r875"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by product and service, or group of similar products and similar services.",
        "label": "Product and Service [Axis]",
        "terseLabel": "Product and Service"
       }
      }
     },
     "localname": "ProductOrServiceAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [
      "r305",
      "r615",
      "r682",
      "r700",
      "r750",
      "r751",
      "r755",
      "r875"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Product or service, or a group of similar products or similar services.",
        "label": "Product and Service [Domain]",
        "terseLabel": "Product and Service"
       }
      }
     },
     "localname": "ProductsAndServicesDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [
      "r346",
      "r348",
      "r349",
      "r350",
      "r436",
      "r489",
      "r525",
      "r526",
      "r527",
      "r609",
      "r610",
      "r627",
      "r649",
      "r650",
      "r681",
      "r692",
      "r702",
      "r749",
      "r754",
      "r870",
      "r871",
      "r872",
      "r873",
      "r874"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median.",
        "label": "Statistical Measurement [Axis]",
        "terseLabel": "Statistical Measurement"
       }
      }
     },
     "localname": "RangeAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RangeMember": {
     "auth_ref": [
      "r346",
      "r348",
      "r349",
      "r350",
      "r436",
      "r489",
      "r525",
      "r526",
      "r527",
      "r609",
      "r610",
      "r627",
      "r649",
      "r650",
      "r681",
      "r692",
      "r702",
      "r749",
      "r754",
      "r870",
      "r871",
      "r872",
      "r873",
      "r874"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Statistical measurement. Includes, but is not limited to, minimum, maximum, weighted average, arithmetic average, and median.",
        "label": "Statistical Measurement [Domain]",
        "terseLabel": "Statistical Measurement"
       }
      }
     },
     "localname": "RangeMember",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock": {
     "auth_ref": [
      "r243",
      "r662"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for valuation and qualifying accounts and reserves.",
        "label": "SEC Schedule, 12-09, Schedule of Valuation and Qualifying Accounts Disclosure [Text Block]",
        "terseLabel": "Schedule II-Valuation and Qualifying Accounts"
       }
      }
     },
     "localname": "ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccounts"
     ],
     "xbrltype": "textBlockItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [
      "r306",
      "r307",
      "r640",
      "r641",
      "r642",
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r648",
      "r652",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r683",
      "r701",
      "r755"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Geographical area.",
        "label": "Geographical [Domain]",
        "terseLabel": "Geographical"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r306",
      "r307",
      "r635",
      "r640",
      "r641",
      "r642",
      "r643",
      "r644",
      "r645",
      "r646",
      "r647",
      "r648",
      "r652",
      "r653",
      "r683",
      "r701",
      "r755"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by geographical components.",
        "label": "Geographical [Axis]",
        "terseLabel": "Geographical"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_TitleOfIndividualAxis": {
     "auth_ref": [
      "r734",
      "r866"
     ],
     "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/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_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 [Domain]",
        "terseLabel": "Title of Individual"
       }
      }
     },
     "localname": "TitleOfIndividualWithRelationshipToEntityDomain",
     "nsuri": "http://fasb.org/srt/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ValuationAndQualifyingAccountsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "SEC Schedule, 12-09, Valuation and Qualifying Accounts [Abstract]"
       }
      }
     },
     "localname": "ValuationAndQualifyingAccountsAbstract",
     "nsuri": "http://fasb.org/srt/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountingPoliciesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Accounting Policies [Abstract]"
       }
      }
     },
     "localname": "AccountingPoliciesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsNotesAndLoansReceivableLineItems": {
     "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": "Accounts, Notes, Loans and Financing Receivable [Line Items]",
        "terseLabel": "Accounts Notes And Loans Receivable [Line Items]"
       }
      }
     },
     "localname": "AccountsNotesAndLoansReceivableLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis": {
     "auth_ref": [
      "r22"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of receivable.",
        "label": "Receivable Type [Axis]",
        "terseLabel": "Receivable Type"
       }
      }
     },
     "localname": "AccountsNotesLoansAndFinancingReceivableByReceivableTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r12",
      "r699"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 0.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",
        "totalLabel": "Accounts Payable, Current, Total"
       }
      }
     },
     "localname": "AccountsPayableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsPayableMember": {
     "auth_ref": [
      "r0"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Obligations incurred and payable to vendors for goods and services received.",
        "label": "Accounts Payable [Member]",
        "terseLabel": "Accounts Payable"
       }
      }
     },
     "localname": "AccountsPayableMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r311",
      "r312"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 1.0,
       "parentTag": "us-gaap_AssetsCurrent",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allowance for credit loss, of right to consideration from customer for product sold and service rendered in normal course of business, classified as current.",
        "label": "Accounts Receivable, after Allowance for Credit Loss, Current",
        "terseLabel": "Accounts receivable, net of allowances of $397 and $561 in 2022 and 2021, respectively",
        "totalLabel": "Accounts Receivable, after Allowance for Credit Loss, Current, Total",
        "verboseLabel": "Accounts receivable, net"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableSale": {
     "auth_ref": [
      "r320"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of decrease from sale of accounts receivable.",
        "label": "Accounts Receivable, Sale",
        "terseLabel": "Accounts Receivable, Sold"
       }
      }
     },
     "localname": "AccountsReceivableSale",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r93",
      "r208"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails": {
       "order": 1.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",
        "negatedLabel": "Accumulated depreciation and amortization",
        "periodEndLabel": "Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment, Ending Balance",
        "periodStartLabel": "Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment, Beginning Balance",
        "totalLabel": "Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment, Total"
       }
      }
     },
     "localname": "AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax": {
     "auth_ref": [
      "r24",
      "r29",
      "r798"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": 1.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 Plan, after Tax",
        "negatedLabel": "Pension loss, net of tax of $755 in 2022 and $819 in 2021",
        "negatedTerseLabel": "Amounts not recognized as net periodic benefit, net of tax",
        "totalLabel": "Accumulated Other Comprehensive (Income) Loss, Defined Benefit Plan, after Tax, Total"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossDefinedBenefitPensionAndOtherPostretirementPlansNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r216",
      "r217",
      "r218",
      "r219",
      "r584"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": 0.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",
        "periodEndLabel": "Accumulated Other Comprehensive Income (Loss), Foreign Currency Translation Adjustment, Net of Tax, Ending Balance",
        "periodStartLabel": "Accumulated Other Comprehensive Income (Loss), Foreign Currency Translation Adjustment, Net of Tax, Beginning Balance",
        "terseLabel": "Foreign currency translation adjustment"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r26",
      "r28",
      "r29",
      "r213",
      "r623",
      "r632",
      "r633"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 4.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "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/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r25",
      "r29",
      "r165",
      "r608",
      "r628",
      "r629",
      "r717",
      "r718",
      "r719",
      "r728",
      "r729",
      "r730"
     ],
     "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": "AOCI Attributable to Parent [Member]",
        "terseLabel": "Accumulated Other Comprehensive Income (loss) [Member]"
       }
      }
     },
     "localname": "AccumulatedOtherComprehensiveIncomeMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife": {
     "auth_ref": [
      "r84"
     ],
     "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 Economic Life"
       }
      }
     },
     "localname": "AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r7"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 1.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [
      "r534",
      "r535",
      "r536",
      "r728",
      "r729",
      "r730",
      "r859"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r529"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_AllocatedShareBasedCompensationExpenseNetOfTax",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense for award under share-based payment arrangement. Excludes amount capitalized.",
        "label": "Share-Based Payment Arrangement, Expense",
        "terseLabel": "Equity-based compensation expense"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpenseNetOfTax": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after tax, of expense for award under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Expense, after Tax",
        "totalLabel": "Net equity-based compensation expense"
       }
      }
     },
     "localname": "AllocatedShareBasedCompensationExpenseNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent": {
     "auth_ref": [
      "r214",
      "r315",
      "r319"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of allowance for credit loss on accounts receivable, classified as current.",
        "label": "Accounts Receivable, Allowance for Credit Loss, Current",
        "periodEndLabel": "Allowance for credit losses, Balance at December 31",
        "periodStartLabel": "Allowance for credit losses, Balance at January 1",
        "terseLabel": "Accounts receivable, allowances"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs": {
     "auth_ref": [
      "r321"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of direct write-downs of accounts receivable charged against the allowance.",
        "label": "Accounts Receivable, Allowance for Credit Loss, Writeoff",
        "negatedLabel": "Allowance for credit losses, Deductions"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableWriteOffs",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "auth_ref": [
      "r56",
      "r82",
      "r87"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate expense charged against earnings to allocate the cost of intangible assets (nonphysical assets not used in production) in a systematic and rational manner to the periods expected to benefit from such assets. As a noncash expense, this element is added back to net income when calculating cash provided by or used in operations using the indirect method.",
        "label": "Amortization of Intangible Assets",
        "terseLabel": "Amortization of intangible assets"
       }
      }
     },
     "localname": "AmortizationOfIntangibleAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "auth_ref": [
      "r267"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis": {
     "auth_ref": [
      "r63"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of antidilutive security.",
        "label": "Antidilutive Securities [Axis]",
        "terseLabel": "Antidilutive Securities"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AntidilutiveSecuritiesNameDomain": {
     "auth_ref": [
      "r63"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ArrangementsAndNonarrangementTransactionsMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations.",
        "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Domain]",
        "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative"
       }
      }
     },
     "localname": "ArrangementsAndNonarrangementTransactionsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r178",
      "r187",
      "r212",
      "r238",
      "r283",
      "r295",
      "r301",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r574",
      "r578",
      "r585",
      "r699",
      "r752",
      "r753",
      "r867"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AssetsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Assets [Abstract]",
        "terseLabel": "Assets"
       }
      }
     },
     "localname": "AssetsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r203",
      "r215",
      "r238",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r574",
      "r578",
      "r585",
      "r699",
      "r752",
      "r753",
      "r867"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r500",
      "r501",
      "r502",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r509",
      "r510",
      "r511",
      "r512",
      "r513",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r524",
      "r525",
      "r526",
      "r527",
      "r528"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by type of award under share-based payment arrangement.",
        "label": "Award Type [Axis]",
        "terseLabel": "Award Type"
       }
      }
     },
     "localname": "AwardTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location on balance sheet (statement of financial position).",
        "label": "Balance Sheet Location [Axis]",
        "terseLabel": "Balance Sheet Location"
       }
      }
     },
     "localname": "BalanceSheetLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationDomain": {
     "auth_ref": [
      "r166",
      "r167"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location in the balance sheet (statement of financial position).",
        "label": "Balance Sheet Location [Domain]",
        "terseLabel": "Balance Sheet Location"
       }
      }
     },
     "localname": "BalanceSheetLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BuildingMember": {
     "auth_ref": [
      "r92"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Facility held for productive use including, but not limited to, office, production, storage and distribution facilities.",
        "label": "Building [Member]",
        "terseLabel": "Building"
       }
      }
     },
     "localname": "BuildingMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingsAndImprovementsGross": {
     "auth_ref": [
      "r92"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation of building structures held for productive use including addition, improvement, or renovation to the structure, including, but not limited to, interior masonry, interior flooring, electrical, and plumbing.",
        "label": "Buildings and Improvements, Gross",
        "terseLabel": "Carrying value of property"
       }
      }
     },
     "localname": "BuildingsAndImprovementsGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [
      "r569",
      "r690",
      "r691"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAxis": {
     "auth_ref": [
      "r144",
      "r145",
      "r569",
      "r690",
      "r691"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionEquityInterestIssuedOrIssuableValueAssigned": {
     "auth_ref": [
      "r159"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of equity interests (such as common shares, preferred shares, or partnership interest) issued or issuable to acquire the entity.",
        "label": "Business Acquisition, Equity Interest Issued or Issuable, Value Assigned",
        "terseLabel": "Business combination common stock value"
       }
      }
     },
     "localname": "BusinessAcquisitionEquityInterestIssuedOrIssuableValueAssigned",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued": {
     "auth_ref": [
      "r159"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of equity interests issued or issuable to acquire entity.",
        "label": "Business Acquisition, Equity Interest Issued or Issuable, Number of Shares",
        "terseLabel": "Number of common shares issued"
       }
      }
     },
     "localname": "BusinessAcquisitionEquityInterestsIssuedOrIssuableNumberOfSharesIssued",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionPercentageOfVotingInterestsAcquired": {
     "auth_ref": [
      "r142"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r155",
      "r156",
      "r158"
     ],
     "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 Transferred",
        "terseLabel": "Business combination, acquired equity amount including cash on hand",
        "totalLabel": "Fair value of purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferred1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable": {
     "auth_ref": [
      "r155",
      "r156"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferredIncludingEquityInterestInAcquireeHeldPriorToCombination1",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of equity interests of the acquirer, including instruments or interests issued or issuable in consideration for the business combination.",
        "label": "Business Combination, Consideration Transferred, Equity Interests Issued and Issuable",
        "terseLabel": "Share issuance"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferredEquityInterestsIssuedAndIssuable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferredIncludingEquityInterestInAcquireeHeldPriorToCombination1": {
     "auth_ref": [
      "r143",
      "r158"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value at acquisition-date of the assets transferred by the acquirer, liabilities incurred by the acquirer, and equity interests issued by the acquirer, including but not limited to, instruments or interests issued or issuable in consideration for the business combination.",
        "label": "Business Combination, Consideration Transferred, Including Equity Interest in Acquiree Held Prior to Combination",
        "totalLabel": "Fair value of purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationConsiderationTransferredIncludingEquityInterestInAcquireeHeldPriorToCombination1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsBasisForAmount": {
     "auth_ref": [
      "r152",
      "r153",
      "r154",
      "r160"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiability": {
     "auth_ref": [
      "r153",
      "r157",
      "r572"
     ],
     "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",
        "totalLabel": "Business Combination, Contingent Consideration, Liability, Total"
       }
      }
     },
     "localname": "BusinessCombinationContingentConsiderationLiability",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "auth_ref": [
      "r161",
      "r570"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitions"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessCombinationLiabilitiesArisingFromContingenciesAmountRecognized": {
     "auth_ref": [
      "r148"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 2.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 1.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails2": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOther": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails2": {
       "order": 2.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 liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesOther",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails2": {
       "order": 3.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences assumed at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Deferred Tax Liabilities",
        "terseLabel": "Deferred tax liability"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles": {
     "auth_ref": [
      "r146",
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 5.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, Finite-Lived Intangibles",
        "terseLabel": "Acquired intangibles",
        "verboseLabel": "Fair value of purchase consideration"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibles",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails2": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesLongTermDebt": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of long-term debt 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, Long-Term Debt",
        "terseLabel": "Long-term debt"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment": {
     "auth_ref": [
      "r146",
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 3.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",
        "totalLabel": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Property, Plant, and Equipment, Total"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet": {
     "auth_ref": [
      "r147"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareAccumulatedAmortization": {
     "auth_ref": [
      "r878"
     ],
     "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",
        "periodEndLabel": "Accumulated amortization, ending balance",
        "periodStartLabel": "Accumulated amortization, beginning balance"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareAccumulatedAmortization",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareAdditions": {
     "auth_ref": [
      "r83"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additions made to capitalized computer software costs during the period.",
        "label": "Capitalized Computer Software, Additions",
        "terseLabel": "Additions"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareAdditions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareAmortization1": {
     "auth_ref": [
      "r193",
      "r195"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of expense for amortization of capitalized computer software costs.",
        "label": "Capitalized Computer Software, Amortization",
        "terseLabel": "Amortization expense"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareAmortization1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareImpairments1": {
     "auth_ref": [
      "r194",
      "r195"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 6.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of impairment loss from capitalized computer software costs.",
        "label": "Capitalized Computer Software, Impairments",
        "negatedLabel": "Impairment",
        "terseLabel": "Impairment of capitalized software"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareImpairments1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CapitalizedComputerSoftwareNet": {
     "auth_ref": [
      "r651"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The carrying amount of capitalized computer software costs net of accumulated amortization as of the balance sheet date.",
        "label": "Capitalized Computer Software, Net",
        "periodEndLabel": "Capitalized software, ending balance",
        "periodStartLabel": "Capitalized software, beginning balance",
        "terseLabel": "Capitalized costs",
        "totalLabel": "Capitalized Computer Software, Net, Total"
       }
      }
     },
     "localname": "CapitalizedComputerSoftwareNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r58",
      "r205",
      "r672"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 0.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",
        "totalLabel": "Cash and Cash Equivalents, at Carrying Value, Total"
       }
      }
     },
     "localname": "CashAndCashEquivalentsAtCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "auth_ref": [
      "r59"
     ],
     "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 [Policy Text Block]",
        "terseLabel": "Cash and Cash Equivalents, and Cash Overdrafts"
       }
      }
     },
     "localname": "CashAndCashEquivalentsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r53",
      "r58",
      "r61"
     ],
     "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 year",
        "periodStartLabel": "Cash and cash equivalents at beginning of year",
        "totalLabel": "Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations, Total"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r53",
      "r175"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "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 (decrease) increase in cash and cash equivalents"
       }
      }
     },
     "localname": "CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashSurrenderValueOfLifeInsurance": {
     "auth_ref": [
      "r714"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 6.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",
        "verboseLabel": "Net cash surrender values of life insurance"
       }
      }
     },
     "localname": "CashSurrenderValueOfLifeInsurance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Commitments and Contingencies Disclosure [Abstract]"
       }
      }
     },
     "localname": "CommitmentsAndContingenciesDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [
      "r728",
      "r729",
      "r859"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r6"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r6"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r6"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheetsParenthetical",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValue": {
     "auth_ref": [
      "r6",
      "r699"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 0.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, Issued",
        "terseLabel": "Common stock, par value $0.01 per share, 150,000,000 shares authorized; 27,017,824 shares issued in both periods"
       }
      }
     },
     "localname": "CommonStockValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CompensationAndRetirementDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Retirement Benefits [Abstract]"
       }
      }
     },
     "localname": "CompensationAndRetirementDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r31",
      "r223",
      "r225",
      "r230",
      "r619",
      "r624"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome": {
       "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 (Loss), Net of Tax, Attributable to Parent",
        "totalLabel": "Comprehensive income"
       }
      }
     },
     "localname": "ComprehensiveIncomeNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ComprehensiveIncomePolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for comprehensive income.",
        "label": "Comprehensive Income, Policy [Policy Text Block]",
        "terseLabel": "Accumulated Other Comprehensive Loss"
       }
      }
     },
     "localname": "ComprehensiveIncomePolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "auth_ref": [
      "r68",
      "r69",
      "r172",
      "r173",
      "r309",
      "r636"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "auth_ref": [
      "r68",
      "r69",
      "r172",
      "r173",
      "r309",
      "r634",
      "r636"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by benchmark of concentration risk.",
        "label": "Concentration Risk Benchmark [Axis]",
        "terseLabel": "Concentration Risk Benchmark"
       }
      }
     },
     "localname": "ConcentrationRiskByBenchmarkAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "auth_ref": [
      "r68",
      "r69",
      "r172",
      "r173",
      "r309",
      "r636",
      "r877"
     ],
     "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 Type [Axis]",
        "terseLabel": "Concentration Risk Type"
       }
      }
     },
     "localname": "ConcentrationRiskByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskCreditRisk": {
     "auth_ref": [
      "r183",
      "r270"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for credit risk.",
        "label": "Concentration Risk, Credit Risk, Policy [Policy Text Block]",
        "terseLabel": "Concentration Risk, Credit Risk"
       }
      }
     },
     "localname": "ConcentrationRiskCreditRisk",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskDisclosureTextBlock": {
     "auth_ref": [
      "r71"
     ],
     "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 Clients"
       }
      }
     },
     "localname": "ConcentrationRiskDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClients"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "auth_ref": [
      "r68",
      "r69",
      "r172",
      "r173",
      "r309"
     ],
     "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, Percentage",
        "terseLabel": "Revenue, percent",
        "verboseLabel": "Total revenue"
       }
      }
     },
     "localname": "ConcentrationRiskPercentage1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ConcentrationRiskTable": {
     "auth_ref": [
      "r65",
      "r68",
      "r69",
      "r70",
      "r172",
      "r174",
      "r636"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "auth_ref": [
      "r68",
      "r69",
      "r172",
      "r173",
      "r309",
      "r636"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure": {
     "auth_ref": [
      "r171"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ContractWithCustomerBasisOfPricingAxis": {
     "auth_ref": [
      "r685",
      "r755"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ContractWithCustomerBasisOfPricingDomain": {
     "auth_ref": [
      "r685",
      "r755"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "auth_ref": [
      "r394",
      "r395",
      "r408"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 2.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "auth_ref": [
      "r727",
      "r855",
      "r857"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current national tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Current Federal Tax Expense (Benefit)",
        "terseLabel": "Current U.S. federal"
       }
      }
     },
     "localname": "CurrentFederalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "auth_ref": [
      "r727",
      "r855"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Current Foreign Tax Expense (Benefit)",
        "terseLabel": "Current Foreign"
       }
      }
     },
     "localname": "CurrentForeignTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r141",
      "r554",
      "r562",
      "r727"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current income tax expense (benefit) pertaining to taxable income (loss) from continuing operations.",
        "label": "Current Income Tax Expense (Benefit)",
        "totalLabel": "Current Total current tax"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Current Income Tax Expense (Benefit), Continuing Operations [Abstract]",
        "terseLabel": "Current Income Tax Expense (Benefit), Continuing Operations [Abstract]"
       }
      }
     },
     "localname": "CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "auth_ref": [
      "r727",
      "r855",
      "r857"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_CurrentIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of current state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, current regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Current State and Local Tax Expense (Benefit)",
        "terseLabel": "Current U.S. state and local"
       }
      }
     },
     "localname": "CurrentStateAndLocalTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "auth_ref": [
      "r66",
      "r309"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CustomerRelationshipsMember": {
     "auth_ref": [
      "r151"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_DebtDisclosureTextBlock": {
     "auth_ref": [
      "r102",
      "r236",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r374",
      "r376",
      "r377",
      "r378"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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 Rate",
        "terseLabel": "Basis spread on variable rate"
       }
      }
     },
     "localname": "DebtInstrumentBasisSpreadOnVariableRate1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualByTypeOfCompensationPensionAndOtherPostretirementBenefitsMember": {
     "auth_ref": [
      "r110",
      "r111"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredCompensationArrangementWithIndividualPostretirementBenefitsByTypeOfDeferredCompensationAxis": {
     "auth_ref": [
      "r110",
      "r111"
     ],
     "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": "Other Postretirement Benefits, Individual Contracts, Type of Deferred Compensation [Axis]",
        "terseLabel": "Other Postretirement Benefits, Individual Contracts, Type of Deferred Compensation"
       }
      }
     },
     "localname": "DeferredCompensationArrangementWithIndividualPostretirementBenefitsByTypeOfDeferredCompensationAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredCompensationLiabilityClassifiedNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 2.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",
        "totalLabel": "Deferred Compensation Liability, Classified, Noncurrent, Total"
       }
      }
     },
     "localname": "DeferredCompensationLiabilityClassifiedNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r727",
      "r856",
      "r857"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred federal tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred national tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Deferred Federal Income Tax Expense (Benefit)",
        "terseLabel": "Deferred U.S. federal"
       }
      }
     },
     "localname": "DeferredFederalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r141",
      "r727",
      "r856"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred foreign income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred Foreign Income Tax Expense (Benefit)",
        "terseLabel": "Deferred Foreign"
       }
      }
     },
     "localname": "DeferredForeignIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "auth_ref": [
      "r541",
      "r542"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 3.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, with jurisdictional netting.",
        "label": "Deferred tax assets, net of valuation allowance",
        "terseLabel": "Deferred income taxes",
        "verboseLabel": "Net non-current assets"
       }
      }
     },
     "localname": "DeferredIncomeTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r56",
      "r141",
      "r555",
      "r561",
      "r562",
      "r727"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred income tax expense (benefit) pertaining to income (loss) from continuing operations.",
        "label": "Deferred Income Tax Expense (Benefit)",
        "totalLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Deferred Income Tax Expense (Benefit), Continuing Operations [Abstract]",
        "terseLabel": "Deferred tax:"
       }
      }
     },
     "localname": "DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "auth_ref": [
      "r3",
      "r4",
      "r179",
      "r185",
      "r548"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsLiabilitiesNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences.",
        "label": "Deferred Tax Liabilities, Gross",
        "negatedTotalLabel": "Gross deferred tax liabilities",
        "totalLabel": "Deferred Tax Liabilities, Gross, Total"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "auth_ref": [
      "r541",
      "r542"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 5.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.",
        "label": "Deferred Income Tax Liabilities, Net",
        "negatedLabel": "Net non-current liabilities",
        "terseLabel": "Deferred income taxes"
       }
      }
     },
     "localname": "DeferredIncomeTaxLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r727",
      "r856",
      "r857"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredIncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred state and local tax expense (benefit) attributable to income (loss) from continuing operations. Includes, but is not limited to, deferred regional, territorial, and provincial tax expense (benefit) for non-US (United States of America) jurisdiction.",
        "label": "Deferred State and Local Income Tax Expense (Benefit)",
        "terseLabel": "Deferred U.S. state and local"
       }
      }
     },
     "localname": "DeferredStateAndLocalIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGross": {
     "auth_ref": [
      "r549"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences and carryforwards.",
        "label": "Deferred Tax Assets, Gross",
        "totalLabel": "Gross deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsInProcessResearchAndDevelopment": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from in-process research and development costs expensed in connection with a business combination.",
        "label": "Deferred Tax Assets, in Process Research and Development",
        "terseLabel": "Research and development expenses"
       }
      }
     },
     "localname": "DeferredTaxAssetsInProcessResearchAndDevelopment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsLiabilitiesNet": {
     "auth_ref": [
      "r853"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, after allocation of valuation allowances and deferred tax liability, of deferred tax asset attributable to deductible differences and carryforwards, without jurisdictional netting.",
        "label": "Net deferred tax assets (liabilities)",
        "terseLabel": "Net deferred tax assets (liabilities)",
        "totalLabel": "Net deferred tax assets (liabilities)"
       }
      }
     },
     "localname": "DeferredTaxAssetsLiabilitiesNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsNet": {
     "auth_ref": [
      "r853"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxAssetsLiabilitiesNet",
       "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.",
        "label": "Deferred Tax Assets, Net of Valuation Allowance",
        "totalLabel": "Gross deferred tax assets less valuation allowance"
       }
      }
     },
     "localname": "DeferredTaxAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwards": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible operating loss carryforwards.",
        "label": "Deferred Tax Assets, Operating Loss Carryforwards",
        "terseLabel": "Loss and credit carryforwards",
        "totalLabel": "Deferred Tax Assets, Operating Loss Carryforwards, Total"
       }
      }
     },
     "localname": "DeferredTaxAssetsOperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOther": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 8.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount, before allocation of valuation allowance, of deferred tax asset attributable to deductible temporary differences, classified as other.",
        "label": "Deferred Tax Assets, Other",
        "terseLabel": "Other"
       }
      }
     },
     "localname": "DeferredTaxAssetsOther",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsPropertyPlantAndEquipment": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from property, plant, and equipment.",
        "label": "Deferred Tax Assets, Property, Plant and Equipment",
        "terseLabel": "Depreciation"
       }
      }
     },
     "localname": "DeferredTaxAssetsPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsStateTaxes": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from state taxes.",
        "label": "Deferred Tax Assets, State Taxes",
        "terseLabel": "State taxes"
       }
      }
     },
     "localname": "DeferredTaxAssetsStateTaxes",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from share-based compensation.",
        "label": "Deferred Tax Assets, Tax Deferred Expense, Compensation and Benefits, Share-Based Compensation Cost",
        "terseLabel": "Deferred compensation"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_DeferredTaxAssetsGross",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before allocation of valuation allowances of deferred tax asset attributable to deductible temporary differences from reserves and accruals.",
        "label": "Deferred Tax Assets, Tax Deferred Expense, Reserves and Accruals",
        "terseLabel": "Accruals deductible for tax purposes when paid",
        "totalLabel": "Deferred Tax Assets, Tax Deferred Expense, Reserves and Accruals, Total"
       }
      }
     },
     "localname": "DeferredTaxAssetsTaxDeferredExpenseReservesAndAccruals",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r550"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredTaxAssetsNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax assets for which it is more likely than not that a tax benefit will not be realized.",
        "label": "Deferred Tax Assets, Valuation Allowance",
        "negatedLabel": "Deferred tax asset valuation allowance",
        "periodEndLabel": "Deferred tax asset valuation allowance, Balance at December 31",
        "periodStartLabel": "Deferred tax asset valuation allowance, Balance at January 1",
        "terseLabel": "Deferred tax asset valuation allowance"
       }
      }
     },
     "localname": "DeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureScheduleIIValuationAndQualifyingAccountsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesDeferredExpense": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from capitalized costs.",
        "label": "Deferred Tax Liabilities, Deferred Expense",
        "negatedLabel": "Deferred compensation",
        "totalLabel": "Deferred Tax Liabilities, Deferred Expense, Total"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesDeferredExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesPropertyPlantAndEquipment": {
     "auth_ref": [
      "r139",
      "r854"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DeferredIncomeTaxLiabilities",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences from property, plant, and equipment.",
        "label": "Deferred Tax Liabilities, Property, Plant and Equipment",
        "negatedLabel": "Depreciation"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanActualReturnOnPlanAssets": {
     "auth_ref": [
      "r427",
      "r688"
     ],
     "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, Plan Assets, Increase (Decrease) for Actual Return (Loss)",
        "terseLabel": "Actual return on plan assets"
       }
      }
     },
     "localname": "DefinedBenefitPlanActualReturnOnPlanAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanActuarialGainLoss": {
     "auth_ref": [
      "r420"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of gain (loss) from change in actuarial assumptions which (increases) decreases benefit obligation of defined benefit plan. Assumptions include, but are not limited to, interest, mortality, employee turnover, salary, and temporary deviation from substantive plan.",
        "label": "Defined Benefit Plan, Benefit Obligation, Actuarial Gain (Loss)",
        "terseLabel": "Actuarial loss"
       }
      }
     },
     "localname": "DefinedBenefitPlanActuarialGainLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanAmortizationOfGainsLosses": {
     "auth_ref": [
      "r414",
      "r452",
      "r476",
      "r688",
      "r689"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 3.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 Gain (Loss)",
        "negatedLabel": "Amortization of actuarial loss"
       }
      }
     },
     "localname": "DefinedBenefitPlanAmortizationOfGainsLosses",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent": {
     "auth_ref": [
      "r177",
      "r186",
      "r412",
      "r413",
      "r435",
      "r688"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of asset, recognized in statement of financial position, for overfunded defined benefit pension and other postretirement plans.",
        "label": "Assets for Plan Benefits, Defined Benefit Plan",
        "terseLabel": "Non-current assets"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssetsForPlanBenefitsNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate": {
     "auth_ref": [
      "r458"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average rate for present value of future retirement benefits cash flows, used to determine benefit obligation of defined benefit plan.",
        "label": "Defined Benefit Plan, Assumptions Used Calculating Benefit Obligation, Discount Rate",
        "terseLabel": "Benefit obligation",
        "verboseLabel": "Discount rate"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingBenefitObligationDiscountRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostDiscountRate": {
     "auth_ref": [
      "r458"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average rate for present value of future retirement benefits cash flows, used to determine net periodic benefit cost of defined benefit plan.",
        "label": "Defined Benefit Plan, Assumptions Used Calculating Net Periodic Benefit Cost, Discount Rate",
        "terseLabel": "Net periodic pension cost"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostDiscountRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets": {
     "auth_ref": [
      "r460",
      "r481"
     ],
     "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 Rate of Return on Plan Assets",
        "terseLabel": "Expected return on plan assets",
        "verboseLabel": "Targeted minimum return"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostExpectedLongTermReturnOnAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostRateOfCompensationIncrease": {
     "auth_ref": [
      "r459"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average rate of compensation increase used to determine net periodic benefit cost of defined benefit plan. Plan includes, but is not limited to, pay-related defined benefit plan.",
        "label": "Defined Benefit Plan, Assumptions Used Calculating Net Periodic Benefit Cost, Rate of Compensation Increase",
        "terseLabel": "Salary increase rate"
       }
      }
     },
     "localname": "DefinedBenefitPlanAssumptionsUsedCalculatingNetPeriodicBenefitCostRateOfCompensationIncrease",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_DefinedBenefitPlanBenefitObligation": {
     "auth_ref": [
      "r415"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_DefinedBenefitPlanFundedStatusOfPlan",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of actuarial present value of benefits attributed to service rendered by employee for defined benefit plan.",
        "label": "Defined Benefit Plan, Benefit Obligation",
        "periodEndLabel": "Benefit obligation at end of period",
        "periodStartLabel": "Benefit obligation at beginning of period",
        "terseLabel": "Benefit obligation"
       }
      }
     },
     "localname": "DefinedBenefitPlanBenefitObligation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanBenefitObligationBenefitsPaid": {
     "auth_ref": [
      "r422",
      "r484"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of payment to participant of defined benefit plan which decreases benefit obligation. 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, Benefit Obligation, Benefits Paid",
        "negatedLabel": "Benefits paid"
       }
      }
     },
     "localname": "DefinedBenefitPlanBenefitObligationBenefitsPaid",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanBusinessCombinationsAndAcquisitionsBenefitObligation": {
     "auth_ref": [
      "r424"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in benefit obligation of defined benefit plan from business combination.",
        "label": "Defined Benefit Plan, Benefit Obligation, Business Combination",
        "terseLabel": "Acquisition"
       }
      }
     },
     "localname": "DefinedBenefitPlanBusinessCombinationsAndAcquisitionsBenefitObligation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanChangeInBenefitObligationRollForward": {
     "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 Benefit Obligation [Roll Forward]",
        "terseLabel": "Changes in Benefit Obligation"
       }
      }
     },
     "localname": "DefinedBenefitPlanChangeInBenefitObligationRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DefinedBenefitPlanContributionsByEmployer": {
     "auth_ref": [
      "r429",
      "r439",
      "r480",
      "r686",
      "r687",
      "r688",
      "r689"
     ],
     "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, Plan Assets, Contributions by Employer",
        "terseLabel": "Employer contributions"
       }
      }
     },
     "localname": "DefinedBenefitPlanContributionsByEmployer",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "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]",
        "verboseLabel": "Defined Benefit Plan Disclosure [Line Items]"
       }
      }
     },
     "localname": "DefinedBenefitPlanDisclosureLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedAmortizationOfGainLossNextFiscalYear": {
     "auth_ref": [
      "r805"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount included in accumulated other comprehensive income (loss) for gain (loss) of defined benefit plan expected to be recognized in net periodic benefit (cost) credit for fiscal year following most recent annual statement of financial position.",
        "label": "Defined Benefit Plan, Expected Amortization of Gain (Loss), Next Fiscal Year",
        "terseLabel": "Amount to be recognized as components of net periodic benefit in next year"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedAmortizationOfGainLossNextFiscalYear",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureBenefitPaymentsFiveFiscalYearsThereafter": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": 5.0,
       "parentTag": "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of benefit for defined benefit plan expected to be paid in five fiscal years after fifth fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Benefit Payment, after Year Five for Next Five Years",
        "terseLabel": "2028 - 2032"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsFiveFiscalYearsThereafter",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureBenefitPaymentsNextTwelveMonths": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": 0.0,
       "parentTag": "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of benefit for defined benefit plan expected to be paid in next fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Benefit Payment, Year One",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureBenefitPaymentsYearFive": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": 4.0,
       "parentTag": "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of benefit for defined benefit plan expected to be paid in fifth fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Benefit Payment, Year Five",
        "terseLabel": "2027"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsYearFive",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureBenefitPaymentsYearFour": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": 3.0,
       "parentTag": "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of benefit for defined benefit plan expected to be paid in fourth fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Benefit Payment, Year Four",
        "terseLabel": "2026"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsYearFour",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureBenefitPaymentsYearThree": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": 2.0,
       "parentTag": "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of benefit for defined benefit plan expected to be paid in third fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Benefit Payment, Year Three",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsYearThree",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureBenefitPaymentsYearTwo": {
     "auth_ref": [
      "r446"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails": {
       "order": 1.0,
       "parentTag": "ctg_DefinedBenefitPlanExpectedFutureBenefitPaymentsTotal",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of benefit for defined benefit plan expected to be paid in second fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Benefit Payment, Year Two",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureBenefitPaymentsYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedFutureEmployerContributionsNextFiscalYear": {
     "auth_ref": [
      "r447",
      "r689"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of contribution expected to be received by defined benefit plan from employer in next fiscal year following current fiscal year.",
        "label": "Defined Benefit Plan, Expected Future Employer Contributions, Next Fiscal Year",
        "terseLabel": "Estimated future employer contributions, next year"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedFutureEmployerContributionsNextFiscalYear",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanExpectedReturnOnPlanAssets": {
     "auth_ref": [
      "r414",
      "r451",
      "r475",
      "r688",
      "r689"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 2.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 (Loss) on Plan Assets",
        "negatedLabel": "Expected return on assets"
       }
      }
     },
     "localname": "DefinedBenefitPlanExpectedReturnOnPlanAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanFairValueOfPlanAssets": {
     "auth_ref": [
      "r426",
      "r437",
      "r439",
      "r440",
      "r686",
      "r687",
      "r688"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_DefinedBenefitPlanFundedStatusOfPlan",
       "weight": 1.0
      }
     },
     "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, Plan Assets, Amount",
        "periodEndLabel": "Fair value of plan assets at end of period",
        "periodStartLabel": "Fair value of plan assets at beginning of period"
       }
      }
     },
     "localname": "DefinedBenefitPlanFairValueOfPlanAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanForeignCurrencyExchangeRateChangesBenefitObligation": {
     "auth_ref": [
      "r421"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of foreign currency translation gain (loss) which (increases) decreases benefit obligation of defined benefit plan.",
        "label": "Defined Benefit Plan, Benefit Obligation, Foreign Currency Translation Gain (Loss)",
        "terseLabel": "Effect of exchange rate changes"
       }
      }
     },
     "localname": "DefinedBenefitPlanForeignCurrencyExchangeRateChangesBenefitObligation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanFundedStatusOfPlan": {
     "auth_ref": [
      "r412",
      "r435",
      "r688"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of funded (unfunded) status of defined benefit plan, measured as difference between fair value of plan assets and benefit obligation. Includes, but is not limited to, overfunded (underfunded) status.",
        "label": "Defined Benefit Plan, Funded (Unfunded) Status of Plan",
        "negatedTotalLabel": "Accrued benefit cost",
        "totalLabel": "Defined Benefit Plan, Funded (Unfunded) Status of Plan, Total"
       }
      }
     },
     "localname": "DefinedBenefitPlanFundedStatusOfPlan",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanInterestCost": {
     "auth_ref": [
      "r414",
      "r418",
      "r450",
      "r474",
      "r688",
      "r689"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 1.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCost": {
     "auth_ref": [
      "r448",
      "r472",
      "r688",
      "r689"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "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 (Credit)",
        "totalLabel": "Net periodic pension cost"
       }
      }
     },
     "localname": "DefinedBenefitPlanNetPeriodicBenefitCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCostCreditAmortizationOfGainLossStatementOfIncomeOrComprehensiveIncomeExtensibleList": {
     "auth_ref": [
      "r448",
      "r472"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates line item in statement of income or comprehensive income that includes amortization of gain (loss) component of net periodic benefit (cost) credit for defined benefit plan.",
        "label": "Defined Benefit Plan, Net Periodic Benefit (Cost) Credit, Amortization of Gain (Loss), Statement of Income or Comprehensive Income [Extensible Enumeration]"
       }
      }
     },
     "localname": "DefinedBenefitPlanNetPeriodicBenefitCostCreditAmortizationOfGainLossStatementOfIncomeOrComprehensiveIncomeExtensibleList",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "enumerationSetItemType"
    },
    "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCostCreditExpectedReturnLossStatementOfIncomeOrComprehensiveIncomeExtensibleList": {
     "auth_ref": [
      "r448",
      "r472"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates line item in statement of income or comprehensive income that includes expected return (loss) on plan asset component of net periodic benefit (cost) credit for defined benefit plan.",
        "label": "Defined Benefit Plan, Net Periodic Benefit (Cost) Credit, Expected Return (Loss), Statement of Income or Comprehensive Income [Extensible Enumeration]"
       }
      }
     },
     "localname": "DefinedBenefitPlanNetPeriodicBenefitCostCreditExpectedReturnLossStatementOfIncomeOrComprehensiveIncomeExtensibleList",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "enumerationSetItemType"
    },
    "us-gaap_DefinedBenefitPlanNetPeriodicBenefitCostCreditInterestCostStatementOfIncomeOrComprehensiveIncomeExtensibleList": {
     "auth_ref": [
      "r448",
      "r472"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Indicates line item in statement of income or comprehensive income that includes interest cost component of net periodic benefit cost (credit) for defined benefit plan.",
        "label": "Defined Benefit Plan, Net Periodic Benefit Cost (Credit), Interest Cost, Statement of Income or Comprehensive Income [Extensible Enumeration]"
       }
      }
     },
     "localname": "DefinedBenefitPlanNetPeriodicBenefitCostCreditInterestCostStatementOfIncomeOrComprehensiveIncomeExtensibleList",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "enumerationSetItemType"
    },
    "us-gaap_DefinedBenefitPlanPlanAssetsBenefitsPaid": {
     "auth_ref": [
      "r431",
      "r819"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanPlanAssetsForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r428"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedBenefitPlanServiceCost": {
     "auth_ref": [
      "r416",
      "r449",
      "r473",
      "r688",
      "r689"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanCostRecognized": {
     "auth_ref": [
      "r485"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost for defined contribution plan.",
        "label": "Defined Contribution Plan, Cost",
        "terseLabel": "Defined contribution plan, cost recognized"
       }
      }
     },
     "localname": "DefinedContributionPlanCostRecognized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Depreciation": {
     "auth_ref": [
      "r56",
      "r91"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of expense recognized in the current period that reflects the allocation of the cost of tangible assets over the assets' useful lives. Includes production and non-production related depreciation.",
        "label": "Depreciation",
        "terseLabel": "Depreciation",
        "totalLabel": "Depreciation, Total"
       }
      }
     },
     "localname": "Depreciation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DepreciationDepletionAndAmortization": {
     "auth_ref": [
      "r56",
      "r278"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 1.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",
        "totalLabel": "Depreciation, Depletion and Amortization, Total"
       }
      }
     },
     "localname": "DepreciationDepletionAndAmortization",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DirectOperatingCosts": {
     "auth_ref": [
      "r37"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 1.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",
        "totalLabel": "Direct Operating Costs, Total"
       }
      }
     },
     "localname": "DirectOperatingCosts",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r499",
      "r530",
      "r531",
      "r533",
      "r538",
      "r693"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement [Text Block]",
        "terseLabel": "Equity-Based Compensation"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Payment Arrangement [Abstract]"
       }
      }
     },
     "localname": "DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarliestTaxYearMember": {
     "auth_ref": [
      "r852"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Earliest identified tax year.",
        "label": "Earliest Tax Year [Member]",
        "terseLabel": "Earliest Tax Year [Member]"
       }
      }
     },
     "localname": "EarliestTaxYearMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r231",
      "r249",
      "r250",
      "r251",
      "r252",
      "r253",
      "r257",
      "r259",
      "r264",
      "r265",
      "r266",
      "r268",
      "r582",
      "r583",
      "r620",
      "r625",
      "r675"
     ],
     "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",
        "totalLabel": "Earnings Per Share, Basic, Total"
       }
      }
     },
     "localname": "EarningsPerShareBasic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r231",
      "r249",
      "r250",
      "r251",
      "r252",
      "r253",
      "r259",
      "r264",
      "r265",
      "r266",
      "r268",
      "r582",
      "r583",
      "r620",
      "r625",
      "r675"
     ],
     "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",
        "totalLabel": "Earnings Per Share, Diluted, Total"
       }
      }
     },
     "localname": "EarningsPerShareDiluted",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EarningsPerSharePolicyTextBlock": {
     "auth_ref": [
      "r63",
      "r64"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for computing basic and diluted earnings or loss per share for each class of common stock and participating security. Addresses all significant policy factors, including any antidilutive items that have been excluded from the computation and takes into account stock dividends, splits and reverse splits that occur after the balance sheet date of the latest reporting period but before the issuance of the financial statements.",
        "label": "Earnings Per Share, Policy [Policy Text Block]",
        "terseLabel": "Net Income Per Share"
       }
      }
     },
     "localname": "EarningsPerSharePolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations": {
     "auth_ref": [
      "r861"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 3.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",
        "totalLabel": "Effect of Exchange Rate on Cash, Cash Equivalents, Restricted Cash, and Restricted Cash Equivalents, Including Disposal Group and Discontinued Operations, Total"
       }
      }
     },
     "localname": "EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsIncludingDisposalGroupAndDiscontinuedOperations",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r544"
     ],
     "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 Reconciliation, Percent",
        "terseLabel": "Effective income tax rate",
        "totalLabel": "Effective Income Tax Rate Reconciliation, Percent, Total"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateContinuingOperations",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EmployeeRelatedLiabilitiesCurrent": {
     "auth_ref": [
      "r16"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 1.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",
        "totalLabel": "Employee-related Liabilities, Current, Total"
       }
      }
     },
     "localname": "EmployeeRelatedLiabilitiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized": {
     "auth_ref": [
      "r532"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cost not yet recognized for nonvested award under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount",
        "terseLabel": "Stock-based compensation expense for non-vested equity-based compensation",
        "totalLabel": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount, Total"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r532"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted-average period over which cost not yet recognized is expected to be recognized for award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Period for Recognition",
        "terseLabel": "Stock based compensation expense, recognition period"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense": {
     "auth_ref": [
      "r529"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_AllocatedShareBasedCompensationExpenseNetOfTax",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax benefit for recognition of expense of award under share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Expense, Tax Benefit",
        "negatedLabel": "Tax benefit"
       }
      }
     },
     "localname": "EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfEquityBasedCompensationExpenseCorrespondingTaxBenefitAndNetEquityBasedCompensationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based payment arrangement granting right, subject to vesting and other restrictions, to purchase or sell certain number of shares at predetermined price for specified period of time.",
        "label": "Share-Based Payment Arrangement, Option [Member]",
        "terseLabel": "Share-based Payment Arrangement, Option",
        "verboseLabel": "Employee Stock Option [Member]"
       }
      }
     },
     "localname": "EmployeeStockOptionMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EmployeeStockOwnershipPlanESOPSharesInESOP": {
     "auth_ref": [
      "r135"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Sum of the allocated, committed-to-be-released and suspense shares of the entity held by the plan.",
        "label": "Employee Stock Ownership Plan (ESOP), Shares in ESOP",
        "terseLabel": "Employee Stock Purchase Plan (ESPP), Shares in ESPP",
        "totalLabel": "Employee Stock Ownership Plan (ESOP), Shares in ESOP, Total"
       }
      }
     },
     "localname": "EmployeeStockOwnershipPlanESOPSharesInESOP",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_EmployeeStockOwnershipPlanESOPWeightedAveragePurchasePriceOfSharesPurchased": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average purchase price of capital shares purchased through an employee stock ownership plan.",
        "label": "Employee Stock Ownership Plan (ESOP), Weighted Average Purchase Price of Shares Purchased",
        "terseLabel": "Employee Stock Purchase Plan (ESPP), Weighted average purchase price"
       }
      }
     },
     "localname": "EmployeeStockOwnershipPlanESOPWeightedAveragePurchasePriceOfSharesPurchased",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_EquipmentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tangible personal property used to produce goods and services.",
        "label": "Equipment [Member]",
        "terseLabel": "Equipment [Member]"
       }
      }
     },
     "localname": "EquipmentMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r104",
      "r200",
      "r227",
      "r228",
      "r229",
      "r244",
      "r245",
      "r246",
      "r248",
      "r254",
      "r256",
      "r269",
      "r318",
      "r393",
      "r534",
      "r535",
      "r536",
      "r557",
      "r558",
      "r581",
      "r586",
      "r587",
      "r588",
      "r589",
      "r590",
      "r591",
      "r608",
      "r628",
      "r629",
      "r630"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ExtinguishmentOfDebtAxis": {
     "auth_ref": [
      "r101"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information pertaining to the debt extinguished including the amount of gain (loss), the income tax effect on the gain (loss), and the amount of gain (loss), net or the related income tax, by debt instrument.",
        "label": "Extinguishment of Debt [Axis]"
       }
      }
     },
     "localname": "ExtinguishmentOfDebtAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ExtinguishmentOfDebtTypeDomain": {
     "auth_ref": [
      "r101"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Type of debt extinguished.",
        "label": "Extinguishment of Debt, Type [Domain]"
       }
      }
     },
     "localname": "ExtinguishmentOfDebtTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r210",
      "r337"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for asset, excluding financial asset and goodwill, lacking physical substance with finite life expected to be recognized after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, after Year Five",
        "terseLabel": "Thereafter"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "auth_ref": [
      "r88"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, Year One",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "auth_ref": [
      "r88"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Five",
        "terseLabel": "2027"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r88"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Four",
        "terseLabel": "2026"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r88"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Three",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r88"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_FiniteLivedIntangibleAssetsNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of amortization for assets, excluding financial assets and goodwill, lacking physical substance with finite life expected to be recognized in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Finite-Lived Intangible Asset, Expected Amortization, Year Two",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r335",
      "r336",
      "r337",
      "r338",
      "r616",
      "r617"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Finite-Lived Intangible Assets, Net, Amortization Expense, Fiscal Year Maturity [Abstract]"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsFutureAmortizationExpenseAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r86",
      "r617"
     ],
     "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",
        "totalLabel": "Finite-Lived Intangible Assets, Gross, Total"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r83",
      "r85"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r86",
      "r616"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 4.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",
        "periodEndLabel": "Finite-Lived Intangible Assets, Net, Ending Balance",
        "periodStartLabel": "Finite-Lived Intangible Assets, Net, Beginning Balance",
        "terseLabel": "Acquired intangibles, net",
        "totalLabel": "Total",
        "verboseLabel": "Net Carrying Amount"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfEstimatedAmortizationExpenseDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FixedPriceContractMember": {
     "auth_ref": [
      "r685"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ForeignCurrencyExchangeRateTranslation1": {
     "auth_ref": [
      "r592",
      "r593"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Foreign exchange rate used to translate amounts denominated in functional currency to reporting currency.",
        "label": "Foreign Currency Exchange Rate, Translation",
        "terseLabel": "Foreign currency exchange rate"
       }
      }
     },
     "localname": "ForeignCurrencyExchangeRateTranslation1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "pureItemType"
    },
    "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": {
     "auth_ref": [
      "r594"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for (1) transactions denominated in a currency other than the reporting enterprise's functional currency, (2) translating foreign currency financial statements that are incorporated into the financial statements of the reporting enterprise by consolidation, combination, or the equity method of accounting, and (3) remeasurement of the financial statements of a foreign reporting enterprise in a hyperinflationary economy.",
        "label": "Foreign Currency Transactions and Translations Policy [Policy Text Block]",
        "terseLabel": "Foreign Currency"
       }
      }
     },
     "localname": "ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ForeignPlanMember": {
     "auth_ref": [
      "r820",
      "r821",
      "r822"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location of employer sponsoring plan, designed to provide retirement benefits, not determined as principal place of business. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Foreign Plan [Member]",
        "terseLabel": "Foreign Plan [Member]"
       }
      }
     },
     "localname": "ForeignPlanMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FurnitureAndFixturesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Equipment commonly used in offices and stores that have no permanent connection to the structure of a building or utilities. Examples include, but are not limited to, desks, chairs, tables, and bookcases.",
        "label": "Furniture and Fixtures [Member]",
        "terseLabel": "Furniture [Member]"
       }
      }
     },
     "localname": "FurnitureAndFixturesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_GainLossOnDispositionOfAssets": {
     "auth_ref": [
      "r723",
      "r747",
      "r748"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of gain (loss) on sale or disposal of property, plant and equipment assets, excluding oil and gas property and timber property.",
        "label": "Gain (Loss) on Disposition of Property Plant Equipment, Excluding Oil and Gas Property and Timber Property",
        "terseLabel": "Gain on sale of building"
       }
      }
     },
     "localname": "GainLossOnDispositionOfAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GainLossOnSaleOfProperties": {
     "auth_ref": [
      "r723",
      "r747",
      "r748"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The difference between the carrying value and the sale price of real estate or properties that were intended to be sold or held for capital appreciation or rental income. This element refers to the gain (loss) included in earnings and not to the cash proceeds of the sale. This element is a noncash adjustment to net income when calculating net cash generated by operating activities using the indirect method.",
        "label": "Gain (Loss) on Sale of Properties",
        "terseLabel": "Gain on sale of building"
       }
      }
     },
     "localname": "GainLossOnSaleOfProperties",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": {
     "auth_ref": [
      "r56"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 5.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 Disposition of Property Plant Equipment",
        "negatedLabel": "Loss (gain) on the sale/disposal of property and equipment",
        "totalLabel": "Gain (Loss) on Disposition of Property Plant Equipment, Total"
       }
      }
     },
     "localname": "GainLossOnSaleOfPropertyPlantEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r38"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate total of expenses of managing and administering the affairs of an entity, including affiliates of the reporting entity, which are not directly or indirectly associated with the manufacture, sale or creation of a product or product line.",
        "label": "General and Administrative Expense",
        "terseLabel": "General and administrative expenses",
        "totalLabel": "General and Administrative Expense, Total"
       }
      }
     },
     "localname": "GeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GeographicConcentrationRiskMember": {
     "auth_ref": [
      "r67",
      "r636"
     ],
     "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"
       }
      }
     },
     "localname": "GeographicConcentrationRiskMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r209",
      "r322",
      "r618",
      "r678",
      "r699",
      "r736",
      "r743"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedAssets",
       "weight": 1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 5.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 the End of period",
        "periodStartLabel": "Balance at the Beginning of period",
        "terseLabel": "Goodwill",
        "totalLabel": "Goodwill, Total"
       }
      }
     },
     "localname": "Goodwill",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAcquiredDuringPeriod": {
     "auth_ref": [
      "r324",
      "r678"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r333",
      "r334",
      "r678"
     ],
     "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 [Policy Text Block]",
        "terseLabel": "Goodwill"
       }
      }
     },
     "localname": "GoodwillAndIntangibleAssetsGoodwillPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r328"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfChangesInCarryingAmountOfGoodwillDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillLineItems": {
     "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": "Goodwill [Line Items]",
        "terseLabel": "Goodwill [Line Items]"
       }
      }
     },
     "localname": "GoodwillLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r36",
      "r238",
      "r283",
      "r294",
      "r300",
      "r303",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r585",
      "r677",
      "r752"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate revenue less cost of goods and services sold or operating expenses directly attributable to the revenue generation activity.",
        "label": "Gross Profit",
        "terseLabel": "Gross profit",
        "totalLabel": "Gross Profit, Total"
       }
      }
     },
     "localname": "GrossProfit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GuaranteeObligationsCurrentCarryingValue": {
     "auth_ref": [
      "r97"
     ],
     "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": "Guarantor Obligations, Current Carrying Value",
        "terseLabel": "Current carrying value of guarantees"
       }
      }
     },
     "localname": "GuaranteeObligationsCurrentCarryingValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGuaranteesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GuaranteesIndemnificationsAndWarrantiesPolicies": {
     "auth_ref": [
      "r98"
     ],
     "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 [Policy Text Block]",
        "terseLabel": "Guarantees"
       }
      }
     },
     "localname": "GuaranteesIndemnificationsAndWarrantiesPolicies",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_HealthCareMember": {
     "auth_ref": [
      "r756"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByVerticalMarketAsPercentageOfTotalRevenueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ImpairmentOfLongLivedAssetsToBeDisposedOf": {
     "auth_ref": [
      "r56",
      "r90"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The aggregate amount of write-downs for impairments recognized during the period for long-lived assets held for abandonment, exchange or sale.",
        "label": "Impairment of Long-Lived Assets to be Disposed of",
        "terseLabel": "Adjustment to reduce capital software"
       }
      }
     },
     "localname": "ImpairmentOfLongLivedAssetsToBeDisposedOf",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock": {
     "auth_ref": [
      "r89",
      "r95"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for recognizing and measuring the impairment of long-lived assets. An entity also may disclose its accounting policy for long-lived assets to be sold. This policy excludes goodwill and intangible assets.",
        "label": "Impairment or Disposal of Long-Lived Assets, Policy [Policy Text Block]",
        "terseLabel": "Impairment of Long-Lived Assets and Long-Lived Assets to Be Disposed Of"
       }
      }
     },
     "localname": "ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "auth_ref": [
      "r239",
      "r563"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to domestic operations.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Domestic",
        "terseLabel": "Domestic"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest": {
     "auth_ref": [
      "r33",
      "r176",
      "r181",
      "r192",
      "r283",
      "r294",
      "r300",
      "r303",
      "r621",
      "r677"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 0.0,
       "parentTag": "us-gaap_NetIncomeLoss",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income (loss) from continuing operations, including income (loss) from equity method investments, before deduction of income tax expense (benefit), and income (loss) attributable to noncontrolling interest.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest",
        "totalLabel": "Income before income taxes"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "auth_ref": [
      "r239",
      "r563"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The portion of earnings or loss from continuing operations before income taxes that is attributable to foreign operations, which is defined as Income or Loss generated from operations located outside the entity's country of domicile.",
        "label": "Income (Loss) from Continuing Operations before Income Taxes, Foreign",
        "terseLabel": "Foreign"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeStatementAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Statement [Abstract]"
       }
      }
     },
     "localname": "IncomeStatementAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r339",
      "r341"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [
      "r341"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxAuthorityAxis": {
     "auth_ref": [
      "r136"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by tax jurisdiction.",
        "label": "Income Tax Authority [Axis]",
        "terseLabel": "Income Tax Authority"
       }
      }
     },
     "localname": "IncomeTaxAuthorityAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxAuthorityDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Agency, division or body classification that levies income taxes, examines tax returns for compliance, or grants exemptions from or makes other decisions pertaining to income taxes.",
        "label": "Income Tax Authority [Domain]",
        "terseLabel": "Income Tax Authority"
       }
      }
     },
     "localname": "IncomeTaxAuthorityDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Disclosure [Abstract]"
       }
      }
     },
     "localname": "IncomeTaxDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r240",
      "r545",
      "r546",
      "r553",
      "r559",
      "r564",
      "r566",
      "r567",
      "r568"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExaminationPenaltiesAndInterestAccrued": {
     "auth_ref": [
      "r851"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of estimated penalties and interest accrued as of the balance sheet date arising from income tax examinations.",
        "label": "Income Tax Examination, Penalties and Interest Accrued",
        "terseLabel": "Penalties and interest accrued",
        "totalLabel": "Income Tax Examination, Penalties and Interest Accrued, Total"
       }
      }
     },
     "localname": "IncomeTaxExaminationPenaltiesAndInterestAccrued",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r241",
      "r255",
      "r256",
      "r281",
      "r543",
      "r560",
      "r565",
      "r626"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 1.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 (benefit) for income taxes",
        "totalLabel": "Total tax",
        "verboseLabel": "Income tax benefit"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefitContinuingOperationsIncomeTaxReconciliationAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Income Tax Expense (Benefit), Effective Income Tax Rate Reconciliation, Amount [Abstract]",
        "terseLabel": "Income Tax Expense (Benefit), Continuing Operations, Income Tax Reconciliation [Abstract]"
       }
      }
     },
     "localname": "IncomeTaxExpenseBenefitContinuingOperationsIncomeTaxReconciliationAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxPolicyTextBlock": {
     "auth_ref": [
      "r226",
      "r539",
      "r540",
      "r546",
      "r547",
      "r552",
      "r556"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for income taxes, which may include its accounting policies for recognizing and measuring deferred tax assets and liabilities and related valuation allowances, recognizing investment tax credits, operating loss carryforwards, tax credit carryforwards, and other carryforwards, methodologies for determining its effective income tax rate and the characterization of interest and penalties in the financial statements.",
        "label": "Income Tax, Policy [Policy Text Block]",
        "terseLabel": "Income Taxes"
       }
      }
     },
     "localname": "IncomeTaxPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxReceivable": {
     "auth_ref": [
      "r184",
      "r715"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 3.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 Taxes Receivable",
        "terseLabel": "Income taxes receivable"
       }
      }
     },
     "localname": "IncomeTaxReceivable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 5.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in the valuation allowance for deferred tax assets.",
        "label": "Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Amount",
        "terseLabel": "Change in valuation allowance related to U.S. federal taxes"
       }
      }
     },
     "localname": "IncomeTaxReconciliationChangeInDeferredTaxAssetsValuationAllowance",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 9.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to foreign income tax expense (benefit).",
        "label": "Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Amount",
        "terseLabel": "Foreign rate differential"
       }
      }
     },
     "localname": "IncomeTaxReconciliationForeignIncomeTaxRateDifferential",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r544"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of income tax expense or benefit for the period computed by applying the domestic federal statutory tax rates to pretax income from continuing operations.",
        "label": "Effective Income Tax Rate Reconciliation at Federal Statutory Income Tax Rate, Amount",
        "terseLabel": "Tax at statutory rate"
       }
      }
     },
     "localname": "IncomeTaxReconciliationIncomeTaxExpenseBenefitAtFederalStatutoryIncomeTaxRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationNondeductibleExpense": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to nondeductible expenses.",
        "label": "Effective Income Tax Rate Reconciliation, Nondeductible Expense, Amount",
        "terseLabel": "Non-deductible expenses",
        "totalLabel": "Effective Income Tax Rate Reconciliation, Nondeductible Expense, Amount, Total"
       }
      }
     },
     "localname": "IncomeTaxReconciliationNondeductibleExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationOtherAdjustments": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 10.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to other adjustments.",
        "label": "Effective Income Tax Rate Reconciliation, Other Adjustments, Amount",
        "terseLabel": "Other, net"
       }
      }
     },
     "localname": "IncomeTaxReconciliationOtherAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationStateAndLocalIncomeTaxes": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to state and local income tax expense (benefit).",
        "label": "Effective Income Tax Rate Reconciliation, State and Local Income Taxes, Amount",
        "terseLabel": "State tax, net of federal benefit"
       }
      }
     },
     "localname": "IncomeTaxReconciliationStateAndLocalIncomeTaxes",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxContingenciesDomestic": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 6.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in domestic income tax contingency.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Contingency, Domestic, Amount",
        "terseLabel": "Change in estimate primarily related to U.S. federal taxes"
       }
      }
     },
     "localname": "IncomeTaxReconciliationTaxContingenciesDomestic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxContingenciesForeign": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 4.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to increase (decrease) in foreign income tax contingency.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Contingency, Foreign, Amount",
        "terseLabel": "Change in estimate primarily related to foreign taxes"
       }
      }
     },
     "localname": "IncomeTaxReconciliationTaxContingenciesForeign",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxCredits": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 7.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to tax credits. Including, but not limited to, research credit, foreign tax credit, investment tax credit, and other tax credits.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Credit, Amount",
        "negatedLabel": "Tax credits",
        "totalLabel": "Effective Income Tax Rate Reconciliation, Tax Credit, Amount, Total"
       }
      }
     },
     "localname": "IncomeTaxReconciliationTaxCredits",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxExemptIncome": {
     "auth_ref": [
      "r850"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails2": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeTaxExpenseBenefit",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the difference between reported income tax expense (benefit) and expected income tax expense (benefit) computed by applying the domestic federal statutory income tax rates to pretax income (loss) from continuing operations attributable to income (loss) exempt from income taxes.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Exempt Income, Amount",
        "negatedLabel": "Non-taxable income"
       }
      }
     },
     "localname": "IncomeTaxReconciliationTaxExemptIncome",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesProvisionForIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesPaidNet": {
     "auth_ref": [
      "r60"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of cash paid during the current period to foreign, federal, state, and local authorities as taxes on income, net of any cash received during the current period as refunds for the overpayment of taxes.",
        "label": "Income Taxes Paid, Net",
        "terseLabel": "Net income taxes paid",
        "totalLabel": "Income Taxes Paid, Net, Total"
       }
      }
     },
     "localname": "IncomeTaxesPaidNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 12.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",
        "totalLabel": "Increase (Decrease) in Accounts Payable, Total"
       }
      }
     },
     "localname": "IncreaseDecreaseInAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 8.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": {
     "auth_ref": [
      "r611",
      "r722"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 16.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredCompensation": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 4.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 benefits"
       }
      }
     },
     "localname": "IncreaseDecreaseInDeferredCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredIncomeTaxes": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 3.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInEmployeeRelatedLiabilities": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 13.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",
        "totalLabel": "Increase (Decrease) in Employee Related Liabilities, Total"
       }
      }
     },
     "localname": "IncreaseDecreaseInEmployeeRelatedLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInIncomeTaxesPayableNetOfIncomeTaxesReceivable": {
     "auth_ref": [
      "r722"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 14.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherCurrentLiabilities": {
     "auth_ref": [
      "r722"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 17.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherNoncurrentAssets": {
     "auth_ref": [
      "r722"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 10.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherNoncurrentLiabilities": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 18.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 9.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 Expense and Other Assets",
        "negatedLabel": "Prepaid and other current assets"
       }
      }
     },
     "localname": "IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncrementalCommonSharesAttributableToShareBasedPaymentArrangements": {
     "auth_ref": [
      "r260",
      "r261",
      "r262",
      "r266",
      "r498"
     ],
     "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 Dilutive Effect of Share-Based Payment Arrangements",
        "terseLabel": "Number of shares, attributable to equity based compensation plans (in shares)"
       }
      }
     },
     "localname": "IncrementalCommonSharesAttributableToShareBasedPaymentArrangements",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_IntangibleAssetsFiniteLivedPolicy": {
     "auth_ref": [
      "r85",
      "r612",
      "r613",
      "r614",
      "r616",
      "r673"
     ],
     "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 [Policy Text Block]",
        "terseLabel": "Acquired Intangibles Assets"
       }
      }
     },
     "localname": "IntangibleAssetsFiniteLivedPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InterestAndOtherIncome": {
     "auth_ref": [],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InterestExpenseDebt": {
     "auth_ref": [
      "r39",
      "r375",
      "r379",
      "r679",
      "r680"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the cost of borrowed funds accounted for as interest expense for debt.",
        "label": "Interest Expense, Debt",
        "terseLabel": "Interest expense",
        "totalLabel": "Interest Expense, Debt, Total"
       }
      }
     },
     "localname": "InterestExpenseDebt",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LatestTaxYearMember": {
     "auth_ref": [
      "r852"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Latest identified tax year.",
        "label": "Latest Tax Year [Member]",
        "terseLabel": "Latest Tax Year [Member]"
       }
      }
     },
     "localname": "LatestTaxYearMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseCostAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lease, Cost [Abstract]"
       }
      }
     },
     "localname": "LeaseCostAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_LeaseCostTableTextBlock": {
     "auth_ref": [
      "r864"
     ],
     "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 Lease Costs, Weighted Average Remaining Lease Term, Discount Rate and Supplemental Cash Flow Information for All Operating Leases"
       }
      }
     },
     "localname": "LeaseCostTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LeaseholdImprovementsMember": {
     "auth_ref": [
      "r92"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Additions or improvements to assets held under a lease arrangement.",
        "label": "Leasehold Improvements [Member]",
        "terseLabel": "Leasehold Improvements [Member]"
       }
      }
     },
     "localname": "LeaseholdImprovementsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeasesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Leases [Abstract]"
       }
      }
     },
     "localname": "LeasesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_LesseeLeasesPolicyTextBlock": {
     "auth_ref": [
      "r598"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for leasing arrangement entered into by lessee.",
        "label": "Lessee, Leases [Policy Text Block]",
        "terseLabel": "Leases"
       }
      }
     },
     "localname": "LesseeLeasesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [
      "r865"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails2": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease.",
        "label": "Lessee, Operating Lease, Liability, to be Paid",
        "totalLabel": "Total undiscounted operating lease payments"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease due after fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, after Year Five",
        "terseLabel": "2028 &amp; thereafter"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in next fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year One",
        "terseLabel": "2023"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fifth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Five",
        "terseLabel": "2027"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in fourth fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Four",
        "terseLabel": "2026"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in third fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Three",
        "terseLabel": "2025"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of lessee's undiscounted obligation for lease payment for operating lease to be paid in second fiscal year following current fiscal year. Excludes interim and annual periods when interim periods are reported from current statement of financial position date (rolling approach).",
        "label": "Lessee, Operating Lease, Liability, to be Paid, Year Two",
        "terseLabel": "2024"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityUndiscountedExcessAmount": {
     "auth_ref": [
      "r606"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails2": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeasesTextBlock": {
     "auth_ref": [
      "r607"
     ],
     "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": "Lease Commitments"
       }
      }
     },
     "localname": "LesseeOperatingLeasesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitments"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LettersOfCreditOutstandingAmount": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The total amount of the contingent obligation under letters of credit outstanding as of the reporting date.",
        "label": "Letters of Credit Outstanding, Amount",
        "terseLabel": "Line of credit, outstanding amount"
       }
      }
     },
     "localname": "LettersOfCreditOutstandingAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r15",
      "r238",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r575",
      "r578",
      "r579",
      "r585",
      "r676",
      "r752",
      "r867",
      "r868"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities [Abstract]",
        "terseLabel": "Liabilities"
       }
      }
     },
     "localname": "LiabilitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesDeferredTaxAssetsAndLiabilitiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r11",
      "r180",
      "r189",
      "r699",
      "r726",
      "r735",
      "r860"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "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 Equity",
        "totalLabel": "Total liabilities and shareholders\u2019 equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Liabilities and Equity [Abstract]",
        "terseLabel": "Liabilities and Shareholders\u2019 Equity"
       }
      }
     },
     "localname": "LiabilitiesAndStockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r17",
      "r204",
      "r238",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r575",
      "r578",
      "r579",
      "r585",
      "r699",
      "r752",
      "r867",
      "r868"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LifeInsuranceCorporateOrBankOwnedAmount": {
     "auth_ref": [
      "r79",
      "r713"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LifeSettlementContractsFairValueMethodFaceValue": {
     "auth_ref": [
      "r80"
     ],
     "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",
        "totalLabel": "Life Settlement Contracts, Fair Value Method, Face Value, Total"
       }
      }
     },
     "localname": "LifeSettlementContractsFairValueMethodFaceValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityCollateralFeesAmount": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the fees associated with providing collateral for the credit facility.",
        "label": "Line of Credit Facility, Collateral Fees, Amount",
        "terseLabel": "Deferred fees, incurred with credit agreement"
       }
      }
     },
     "localname": "LineOfCreditFacilityCollateralFeesAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityCommitmentFeeAmount": {
     "auth_ref": [
      "r13"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of the fee for available but unused credit capacity under the credit facility.",
        "label": "Line of Credit Facility, Commitment Fee Amount",
        "terseLabel": "Commitment fees"
       }
      }
     },
     "localname": "LineOfCreditFacilityCommitmentFeeAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityCurrentBorrowingCapacity": {
     "auth_ref": [
      "r13"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_LineOfCreditFacilityInterestRateDuringPeriod": {
     "auth_ref": [
      "r13"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The effective interest rate during the reporting period.",
        "label": "Line of Credit Facility, Interest Rate During Period",
        "terseLabel": "Line of credit, interest rate outstanding"
       }
      }
     },
     "localname": "LineOfCreditFacilityInterestRateDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityMaximumBorrowingCapacity": {
     "auth_ref": [
      "r13"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LineOfCreditFacilityTable": {
     "auth_ref": [
      "r13",
      "r725"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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 (LIBOR) [Member]",
        "terseLabel": "London Interbank Offered Rate (LIBOR)"
       }
      }
     },
     "localname": "LondonInterbankOfferedRateLIBORMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LongTermInvestments": {
     "auth_ref": [
      "r206"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 8.0,
       "parentTag": "us-gaap_Assets",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The total amount of investments that are intended to be held for an extended period of time (longer than one operating cycle).",
        "label": "Long-Term Investments",
        "terseLabel": "Investments",
        "totalLabel": "Long-Term Investments, Total"
       }
      }
     },
     "localname": "LongTermInvestments",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongTermLineOfCredit": {
     "auth_ref": [
      "r18",
      "r99",
      "r100"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 1.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, Noncurrent",
        "terseLabel": "Long-term debt"
       }
      }
     },
     "localname": "LongTermLineOfCredit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "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": "Long-Term Debt, Weighted Average Interest Rate, at Point in Time",
        "terseLabel": "Weighted-average interest rate"
       }
      }
     },
     "localname": "LongtermDebtWeightedAverageInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_LossContingencyDisclosures": {
     "auth_ref": [
      "r344",
      "r345",
      "r347",
      "r349",
      "r350",
      "r351",
      "r352",
      "r353"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for loss and gain contingencies. Describes any existing condition, situation, or set of circumstances involving uncertainty as of the balance sheet date (or prior to issuance of the financial statements) as to a probable or reasonably possible loss incurred by an entity that will ultimately be resolved when one or more future events occur or fail to occur, and typically discloses the amount of loss recorded or a range of possible loss, or an assertion that no reasonable estimate can be made.",
        "label": "Contingencies Disclosure [Text Block]",
        "terseLabel": "Contingencies"
       }
      }
     },
     "localname": "LossContingencyDisclosures",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureContingencies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NaturalDisastersAndOtherCasualtyEventsMember": {
     "auth_ref": [
      "r41"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Natural calamity or fire, flood or other hazards resulting in damages.",
        "label": "Natural Disasters and Other Casualty Events [Member]",
        "terseLabel": "COVID-19 [ Member]"
       }
      }
     },
     "localname": "NaturalDisastersAndOtherCasualtyEventsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r234"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 2.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 used in financing activities"
       }
      }
     },
     "localname": "NetCashProvidedByUsedInFinancingActivities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r234"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 1.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r53",
      "r54",
      "r57"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r34",
      "r57",
      "r182",
      "r191",
      "r202",
      "r221",
      "r224",
      "r229",
      "r238",
      "r247",
      "r249",
      "r250",
      "r251",
      "r252",
      "r255",
      "r256",
      "r263",
      "r283",
      "r294",
      "r300",
      "r303",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r583",
      "r585",
      "r677",
      "r752"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome": {
       "order": 0.0,
       "parentTag": "us-gaap_ComprehensiveIncomeNetOfTax",
       "weight": 1.0
      },
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "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) Attributable to Parent",
        "terseLabel": "Net income",
        "totalLabel": "Net income",
        "verboseLabel": "Net Income"
       }
      }
     },
     "localname": "NetIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NumberOfOperatingSegments": {
     "auth_ref": [
      "r733"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "us-gaap_NumberOfReportableSegments": {
     "auth_ref": [
      "r733"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of segments reported by the entity. A reportable segment is a component of an entity for which there is an accounting requirement to report separate financial information on that component in the entity's financial statements.",
        "label": "Number of Reportable Segments",
        "terseLabel": "Number of reportable segments"
       }
      }
     },
     "localname": "NumberOfReportableSegments",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "integerItemType"
    },
    "us-gaap_OperatingExpenses": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Generally recurring costs associated with normal operations except for the portion of these expenses which can be clearly related to production and included in cost of sales or services. Includes selling, general and administrative expense.",
        "label": "Operating Expenses",
        "terseLabel": "Operating expenses",
        "totalLabel": "Operating Expenses, Total"
       }
      }
     },
     "localname": "OperatingExpenses",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [
      "r283",
      "r294",
      "r300",
      "r303",
      "r677"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 0.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "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)",
        "terseLabel": "Operating income",
        "totalLabel": "Operating income"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseCost": {
     "auth_ref": [
      "r599",
      "r698"
     ],
     "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 costs"
       }
      }
     },
     "localname": "OperatingLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfLeaseCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilitiesPaymentsDueAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Lessee, Operating Lease, Liability, to be Paid [Abstract]"
       }
      }
     },
     "localname": "OperatingLeaseLiabilitiesPaymentsDueAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r596"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails2": {
       "order": 1.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": "Total present value of operating lease liabilities",
        "totalLabel": "Operating Lease, Liability, Total"
       }
      }
     },
     "localname": "OperatingLeaseLiability",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfMaturitiesOfLeaseLiabilitiesForOperatingLiabilitiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r596"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 3.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r596"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 3.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r597",
      "r602"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r595"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 2.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r605",
      "r698"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r604",
      "r698"
     ],
     "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 Term",
        "terseLabel": "Weighted average remaining lease term (years)"
       }
      }
     },
     "localname": "OperatingLeaseWeightedAverageRemainingLeaseTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OperatingLossCarryforwards": {
     "auth_ref": [
      "r138"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of operating loss carryforward, before tax effects, available to reduce future taxable income under enacted tax laws.",
        "label": "Operating Loss Carryforwards",
        "terseLabel": "Operating loss carryforwards"
       }
      }
     },
     "localname": "OperatingLossCarryforwards",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingSegmentsMember": {
     "auth_ref": [
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r303"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identifies components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity.",
        "label": "Operating Segments [Member]",
        "terseLabel": "Operating Segments [Member]"
       }
      }
     },
     "localname": "OperatingSegmentsMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OptionIndexedToIssuersEquityTypeAxis": {
     "auth_ref": [
      "r103",
      "r168",
      "r169",
      "r170"
     ],
     "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 Issuer's Equity, Type [Axis]",
        "terseLabel": "Option Indexed to Issuer's Equity, Type"
       }
      }
     },
     "localname": "OptionIndexedToIssuersEquityTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OptionIndexedToIssuersEquityTypeDomain": {
     "auth_ref": [],
     "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 Issuer's Equity, Type [Domain]",
        "terseLabel": "Option Indexed to Issuer's Equity, Type"
       }
      }
     },
     "localname": "OptionIndexedToIssuersEquityTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r211"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 7.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r24",
      "r26",
      "r162",
      "r164"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome": {
       "order": 1.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) Loss, Defined Benefit Plan, after Tax and Reclassification Adjustment, Attributable to Parent",
        "negatedLabel": "Decrease (increase) in pension loss, net of taxes of $64, $6, and $(156), in 2022, 2021 and 2020, respectively",
        "negatedTerseLabel": "Pension loss adjustment, net of tax",
        "terseLabel": "Comprehensive pension gain (loss)",
        "totalLabel": "Other Comprehensive (Income) Loss, Defined Benefit Plan, after Tax and Reclassification Adjustment, Attributable to Parent, Total"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax": {
     "auth_ref": [
      "r27"
     ],
     "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 (Loss), Defined Benefit Plan, Gain (Loss) Arising During Period, Tax",
        "terseLabel": "Tax on pension loss"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansNetUnamortizedGainLossArisingDuringPeriodTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfAccumulatedOtherComprehensiveLossParentheticalDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent": {
     "auth_ref": [
      "r162",
      "r163",
      "r164"
     ],
     "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) Loss, Defined Benefit Plan, after Reclassification Adjustment, Tax, Attributable to Parent",
        "terseLabel": "Taxes attributable to change in pension loss",
        "totalLabel": "Other Comprehensive (Income) Loss, Defined Benefit Plan, after Reclassification Adjustment, Tax, Attributable to Parent, Total"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeDefinedBenefitPlansTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncomeParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r162",
      "r163",
      "r164"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome": {
       "order": 0.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 (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent",
        "terseLabel": "Foreign currency adjustment",
        "totalLabel": "Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent, Total"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r162",
      "r163",
      "r164",
      "r222",
      "r225"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome": {
       "order": 1.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfComprehensiveIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax": {
     "auth_ref": [
      "r24",
      "r26"
     ],
     "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.",
        "label": "Other Comprehensive (Income) Loss, Defined Benefit Plan, after Reclassification Adjustment, after Tax",
        "negatedLabel": "Pension loss adjustment, net of tax",
        "totalLabel": "Other Comprehensive (Income) Loss, Defined Benefit Plan, after Reclassification Adjustment, after Tax, Total"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossPensionAndOtherPostretirementBenefitPlansAdjustmentNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax": {
     "auth_ref": [
      "r26",
      "r30",
      "r220",
      "r797"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails": {
       "order": 0.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, Defined Benefit Plan, Reclassification Adjustment from AOCI, before Tax",
        "terseLabel": "Amortization of actuarial losses",
        "totalLabel": "Other Comprehensive (Income) Loss, Defined Benefit Plan, Reclassification Adjustment from AOCI, before Tax, Total"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansNetOfTax": {
     "auth_ref": [
      "r26",
      "r30",
      "r114",
      "r220"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails": {
       "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, Defined Benefit Plan, Reclassification Adjustment from AOCI, after Tax",
        "totalLabel": "Net of tax"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansTax": {
     "auth_ref": [
      "r27",
      "r162"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails": {
       "order": 1.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, Defined Benefit Plan, Reclassification Adjustment from AOCI, Tax",
        "negatedLabel": "Income tax",
        "totalLabel": "Other Comprehensive (Income) Loss, Defined Benefit Plan, Reclassification Adjustment from AOCI, Tax, Total"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIPensionAndOtherPostretirementBenefitPlansTax",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfNetBenefitCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherCurrentLiabilitiesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing other current liabilities.",
        "label": "Other Current Liabilities [Member]",
        "terseLabel": "Other Current Liabilities"
       }
      }
     },
     "localname": "OtherCurrentLiabilitiesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherLiabilitiesCurrent": {
     "auth_ref": [
      "r16",
      "r699"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 6.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r19"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 6.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNoncurrentLiabilitiesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Primary financial statement caption encompassing other noncurrent liabilities.",
        "label": "Other Noncurrent Liabilities [Member]",
        "terseLabel": "Other Long-term Liabilities"
       }
      }
     },
     "localname": "OtherNoncurrentLiabilitiesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherNonoperatingExpense": {
     "auth_ref": [
      "r40"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 4.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest",
       "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherPostretirementBenefitsIndividualContractsTypeOfDeferredCompensationDomain": {
     "auth_ref": [
      "r110",
      "r111"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PaymentsForSoftware": {
     "auth_ref": [
      "r45"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 2.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",
        "totalLabel": "Payments for Software, Total"
       }
      }
     },
     "localname": "PaymentsForSoftware",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsOfDividendsCommonStock": {
     "auth_ref": [
      "r49"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow in the form of ordinary dividends to common shareholders of the parent entity.",
        "label": "Payments of Ordinary Dividends, Common Stock",
        "terseLabel": "Dividends paid"
       }
      }
     },
     "localname": "PaymentsOfDividendsCommonStock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsOfFinancingCosts": {
     "auth_ref": [
      "r51"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash outflow for loan and debt issuance costs.",
        "label": "Payments of Financing Costs",
        "negatedLabel": "Deferred debt financing costs",
        "totalLabel": "Payments of Financing Costs, Total"
       }
      }
     },
     "localname": "PaymentsOfFinancingCosts",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsRelatedToTaxWithholdingForShareBasedCompensation": {
     "auth_ref": [
      "r232"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow to satisfy grantee's tax withholding obligation for award under share-based payment arrangement.",
        "label": "Payment, Tax Withholding, Share-Based Payment Arrangement",
        "negatedLabel": "Taxes remitted for shares withheld from equity-based compensation transactions"
       }
      }
     },
     "localname": "PaymentsRelatedToTaxWithholdingForShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r44",
      "r571"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails": {
       "order": 0.0,
       "parentTag": "us-gaap_BusinessCombinationConsiderationTransferredIncludingEquityInterestInAcquireeHeldPriorToCombination1",
       "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r44"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 0.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 received",
        "totalLabel": "Payments to Acquire Businesses, Net of Cash Acquired, Total"
       }
      }
     },
     "localname": "PaymentsToAcquireBusinessesNetOfCashAcquired",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireLifeInsurancePolicies": {
     "auth_ref": [
      "r46",
      "r52"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 4.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInInvestingActivities",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash outflow for payment of premium on corporate-owned life insurance policy, classified as investing activities. Includes, but is not limited to, bank-owned life insurance policy.",
        "label": "Payment to Acquire Life Insurance Policy, Investing Activities",
        "negatedLabel": "Premiums paid for life insurance"
       }
      }
     },
     "localname": "PaymentsToAcquireLifeInsurancePolicies",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r45"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 1.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",
        "totalLabel": "Payments to Acquire Property, Plant, and Equipment, Total"
       }
      }
     },
     "localname": "PaymentsToAcquirePropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r436",
      "r438",
      "r444",
      "r462",
      "r464",
      "r465",
      "r466",
      "r467",
      "r468",
      "r482",
      "r483",
      "r485",
      "r495",
      "r688"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for retirement benefits.",
        "label": "Retirement Benefits [Text Block]",
        "terseLabel": "Deferred Compensation Benefits"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefits"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PensionAndOtherPostretirementDefinedBenefitPlansCurrentLiabilities": {
     "auth_ref": [
      "r1",
      "r412",
      "r413",
      "r435",
      "r688"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liability, recognized in statement of financial position, for defined benefit pension and other postretirement plans, classified as current.",
        "label": "Liability, Defined Benefit Plan, Current",
        "terseLabel": "Current liabilities"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementDefinedBenefitPlansCurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementDefinedBenefitPlansLiabilitiesNoncurrent": {
     "auth_ref": [
      "r2",
      "r412",
      "r413",
      "r435",
      "r688"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liability, recognized in statement of financial position, for defined benefit pension and other postretirement plans, classified as noncurrent.",
        "label": "Liability, Defined Benefit Plan, Noncurrent",
        "terseLabel": "Non-current liabilities",
        "totalLabel": "Liability, Defined Benefit Plan, Noncurrent, Total"
       }
      }
     },
     "localname": "PensionAndOtherPostretirementDefinedBenefitPlansLiabilitiesNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PerformanceSharesMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Share-based payment arrangement awarded for meeting performance target.",
        "label": "Performance Shares [Member]",
        "terseLabel": "Performance Shares [Member]"
       }
      }
     },
     "localname": "PerformanceSharesMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PlanNameAxis": {
     "auth_ref": [
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r828",
      "r829",
      "r830",
      "r831",
      "r832",
      "r833",
      "r834",
      "r835",
      "r836",
      "r837",
      "r838",
      "r839",
      "r840",
      "r841",
      "r842",
      "r843",
      "r844",
      "r845",
      "r846",
      "r847",
      "r848"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by plan name for share-based payment arrangement.",
        "label": "Plan Name [Axis]",
        "terseLabel": "Plan Name"
       }
      }
     },
     "localname": "PlanNameAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PlanNameDomain": {
     "auth_ref": [
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r828",
      "r829",
      "r830",
      "r831",
      "r832",
      "r833",
      "r834",
      "r835",
      "r836",
      "r837",
      "r838",
      "r839",
      "r840",
      "r841",
      "r842",
      "r843",
      "r844",
      "r845",
      "r846",
      "r847",
      "r848"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Plan name for share-based payment arrangement.",
        "label": "Plan Name [Domain]",
        "terseLabel": "Plan Name"
       }
      }
     },
     "localname": "PlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PostemploymentBenefitsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Postemployment Benefits [Abstract]"
       }
      }
     },
     "localname": "PostemploymentBenefitsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PostemploymentBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r410",
      "r411"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for postemployment benefits, which may include supplemental unemployment benefits, obligations recognized for all types of benefits provided to former or inactive employees, their beneficiaries, and covered dependents after employment but before retirement. Disclosure may also include discussion that an obligation for postemployment benefits is not accrued in accordance with regulation only because the amount cannot be reasonably estimated.",
        "label": "Postemployment Benefits Disclosure [Text Block]",
        "terseLabel": "Employee Benefits"
       }
      }
     },
     "localname": "PostemploymentBenefitsDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefits"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r5",
      "r380"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Face amount or stated value per share of preferred stock nonredeemable or redeemable solely at the option of the issuer.",
        "label": "Preferred Stock, Par or Stated Value Per Share",
        "terseLabel": "Preferred stock, par or stated value per share"
       }
      }
     },
     "localname": "PreferredStockParOrStatedValuePerShare",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r5"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The maximum number of nonredeemable preferred shares (or preferred stock redeemable solely at the option of the issuer) permitted to be issued by an entity's charter and bylaws.",
        "label": "Preferred Stock, Shares Authorized",
        "terseLabel": "Preferred stock, shares authorized"
       }
      }
     },
     "localname": "PreferredStockSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "auth_ref": [
      "r5"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Aggregate share number for all nonredeemable preferred stock (or preferred stock redeemable solely at the option of the issuer) held by stockholders. Does not include preferred shares that have been repurchased.",
        "label": "Preferred Stock, Shares Outstanding",
        "periodEndLabel": "Preferred Stock, Shares Outstanding, Ending Balance",
        "periodStartLabel": "Preferred Stock, Shares Outstanding, Beginning Balance",
        "terseLabel": "Preferred stock, shares outstanding"
       }
      }
     },
     "localname": "PreferredStockSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r716"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 2.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrincipleTransactionRevenueDescriptionOfReportingCategoryAxis": {
     "auth_ref": [
      "r199"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by reporting category or type of financial instruments related to a group of items that represent revenue.",
        "label": "Principal Transaction Revenue, Description of Reporting Category [Axis]",
        "terseLabel": "Principal Transaction Revenue, Description of Reporting Category"
       }
      }
     },
     "localname": "PrincipleTransactionRevenueDescriptionOfReportingCategoryAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesRevenueByContractTypeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfLongTermDebt": {
     "auth_ref": [
      "r48"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 0.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",
        "totalLabel": "Proceeds from Issuance of Long-Term Debt, Total"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromLifeInsurancePolicies": {
     "auth_ref": [
      "r43",
      "r52"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 5.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 Policy",
        "terseLabel": "Proceeds from life insurance"
       }
      }
     },
     "localname": "ProceedsFromLifeInsurancePolicies",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromRepaymentsOfBankOverdrafts": {
     "auth_ref": [
      "r720",
      "r721",
      "r724"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 6.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleOfBuildings": {
     "auth_ref": [
      "r42"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The cash inflow from sale of buildings.",
        "label": "Proceeds from Sale of Buildings",
        "terseLabel": "Proceeds from sale of property"
       }
      }
     },
     "localname": "ProceedsFromSaleOfBuildings",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment": {
     "auth_ref": [
      "r42"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 3.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",
        "totalLabel": "Proceeds from Sale of Property, Plant, and Equipment, Total"
       }
      }
     },
     "localname": "ProceedsFromSaleOfPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromStockOptionsExercised": {
     "auth_ref": [
      "r47",
      "r133"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 3.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInFinancingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of cash inflow from exercise of option under share-based payment arrangement.",
        "label": "Proceeds from Stock Options Exercised",
        "terseLabel": "Proceeds from stock option plan exercises"
       }
      }
     },
     "localname": "ProceedsFromStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromStockPlans": {
     "auth_ref": [
      "r47"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 5.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProfitLoss": {
     "auth_ref": [
      "r202",
      "r221",
      "r224",
      "r233",
      "r238",
      "r247",
      "r255",
      "r256",
      "r283",
      "r294",
      "r300",
      "r303",
      "r317",
      "r354",
      "r355",
      "r357",
      "r358",
      "r359",
      "r361",
      "r363",
      "r365",
      "r366",
      "r573",
      "r576",
      "r577",
      "r583",
      "r585",
      "r621",
      "r677",
      "r696",
      "r697",
      "r719",
      "r752"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 0.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": "Net Income (Loss), Including Portion Attributable to Noncontrolling Interest",
        "terseLabel": "Net income",
        "totalLabel": "Net Income (Loss), Including Portion Attributable to Noncontrolling Interest, Total"
       }
      }
     },
     "localname": "ProfitLoss",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Property, Plant and Equipment [Abstract]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r94"
     ],
     "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": "Long-Lived Tangible Asset [Axis]",
        "terseLabel": "Long-Lived Tangible Asset"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentByTypeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "auth_ref": [
      "r96",
      "r637",
      "r638",
      "r639"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment Disclosure [Text Block]",
        "terseLabel": "Property, Equipment and Capitalized Software"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftware"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r92",
      "r207"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails": {
       "order": 0.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",
        "periodEndLabel": "Property, Plant and Equipment, Gross, Ending Balance",
        "periodStartLabel": "Property, Plant and Equipment, Gross, Beginning Balance",
        "terseLabel": "Property, equipment and capitalized software, gross",
        "totalLabel": "Property, Plant and Equipment, Gross, Total"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails"
     ],
     "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]",
        "verboseLabel": "Property, Equipment and Capitalized Software [Line Items]"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r94",
      "r190",
      "r622",
      "r699"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      },
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 1.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": "Net"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentNet",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r94",
      "r637",
      "r638"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for long-lived, physical asset used in normal conduct of business and not intended for resale. Includes, but is not limited to, work of art, historical treasure, and similar asset classified as collections.",
        "label": "Property, Plant and Equipment, Policy [Policy Text Block]",
        "terseLabel": "Property, Equipment and Capitalized Software Costs"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r94"
     ],
     "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 [Table Text Block]",
        "terseLabel": "Schedule of Property, Equipment and Capitalized Software"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r92"
     ],
     "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": "Long-Lived Tangible Asset [Domain]",
        "terseLabel": "Long-Lived Tangible Asset"
       }
      }
     },
     "localname": "PropertyPlantAndEquipmentTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ReceivableTypeDomain": {
     "auth_ref": [
      "r22"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Financing arrangement representing a contractual right to receive money either on demand or on fixed and determinable dates.",
        "label": "Receivable [Domain]",
        "terseLabel": "Receivable"
       }
      }
     },
     "localname": "ReceivableTypeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RegulatoryLiabilityAmortizationPeriod": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amortization period for the recovery of regulatory liability, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Regulatory Liability, Amortization Period",
        "terseLabel": "Amortization period"
       }
      }
     },
     "localname": "RegulatoryLiabilityAmortizationPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_RepaymentsOfLongTermDebt": {
     "auth_ref": [
      "r50"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 1.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",
        "totalLabel": "Repayments of Long-Term Debt, Total"
       }
      }
     },
     "localname": "RepaymentsOfLongTermDebt",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ReportingUnitAxis": {
     "auth_ref": [
      "r332",
      "r333",
      "r678"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by reporting unit.",
        "label": "Reporting Unit [Axis]"
       }
      }
     },
     "localname": "ReportingUnitAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ReportingUnitDomain": {
     "auth_ref": [
      "r332",
      "r333",
      "r678"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Level of reporting at which goodwill is tested for impairment.",
        "label": "Reporting Unit [Domain]"
       }
      }
     },
     "localname": "ReportingUnitDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockMember": {
     "auth_ref": [
      "r63"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Stock including a provision that prohibits sale or substantive sale of an equity instrument for a specified period of time or until specified performance conditions are met.",
        "label": "Restricted Stock [Member]",
        "terseLabel": "Restricted Stock [Member]"
       }
      }
     },
     "localname": "RestrictedStockMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r8",
      "r105",
      "r188",
      "r631",
      "r633",
      "r699"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 2.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",
        "totalLabel": "Retained Earnings (Accumulated Deficit), Total"
       }
      }
     },
     "localname": "RetainedEarningsAccumulatedDeficit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [
      "r200",
      "r244",
      "r245",
      "r246",
      "r248",
      "r254",
      "r256",
      "r318",
      "r534",
      "r535",
      "r536",
      "r557",
      "r558",
      "r581",
      "r628",
      "r630"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanNameAxis": {
     "auth_ref": [
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r491",
      "r492",
      "r493",
      "r494",
      "r692",
      "r757",
      "r758",
      "r759",
      "r760",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r769",
      "r770",
      "r771",
      "r772",
      "r773",
      "r774",
      "r775",
      "r776",
      "r777",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782",
      "r783",
      "r784",
      "r785",
      "r786",
      "r787",
      "r788",
      "r789",
      "r790",
      "r791",
      "r792",
      "r793",
      "r794",
      "r795",
      "r796",
      "r797",
      "r798",
      "r799",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r806",
      "r807",
      "r808",
      "r809",
      "r810",
      "r811",
      "r812",
      "r813",
      "r814",
      "r815",
      "r816",
      "r817",
      "r818"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanNameDomain": {
     "auth_ref": [
      "r486",
      "r487",
      "r488",
      "r489",
      "r490",
      "r491",
      "r492",
      "r493",
      "r494",
      "r692",
      "r757",
      "r758",
      "r759",
      "r760",
      "r761",
      "r762",
      "r763",
      "r764",
      "r765",
      "r766",
      "r767",
      "r768",
      "r769",
      "r770",
      "r771",
      "r772",
      "r773",
      "r774",
      "r775",
      "r776",
      "r777",
      "r778",
      "r779",
      "r780",
      "r781",
      "r782",
      "r783",
      "r784",
      "r785",
      "r786",
      "r787",
      "r788",
      "r789",
      "r790",
      "r791",
      "r792",
      "r793",
      "r794",
      "r795",
      "r796",
      "r797",
      "r798",
      "r799",
      "r800",
      "r801",
      "r802",
      "r803",
      "r804",
      "r806",
      "r807",
      "r808",
      "r809",
      "r810",
      "r811",
      "r812",
      "r813",
      "r814",
      "r815",
      "r816",
      "r817",
      "r818"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RetirementPlanSponsorLocationAxis": {
     "auth_ref": [
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r423",
      "r424",
      "r425",
      "r426",
      "r427",
      "r428",
      "r429",
      "r430",
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r439",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r458",
      "r459",
      "r460",
      "r461",
      "r463",
      "r466",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r820",
      "r821",
      "r822"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by location of employer sponsoring plan designed to provide retirement benefits. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Retirement Plan Sponsor Location [Axis]",
        "terseLabel": "Retirement Plan Sponsor Location"
       }
      }
     },
     "localname": "RetirementPlanSponsorLocationAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RetirementPlanSponsorLocationDomain": {
     "auth_ref": [
      "r415",
      "r416",
      "r417",
      "r418",
      "r419",
      "r420",
      "r421",
      "r422",
      "r423",
      "r424",
      "r425",
      "r426",
      "r427",
      "r428",
      "r429",
      "r430",
      "r431",
      "r432",
      "r433",
      "r434",
      "r435",
      "r436",
      "r437",
      "r439",
      "r440",
      "r441",
      "r442",
      "r443",
      "r444",
      "r445",
      "r446",
      "r447",
      "r448",
      "r449",
      "r450",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r458",
      "r459",
      "r460",
      "r461",
      "r463",
      "r466",
      "r469",
      "r470",
      "r471",
      "r472",
      "r473",
      "r474",
      "r475",
      "r476",
      "r477",
      "r478",
      "r479",
      "r480",
      "r481",
      "r820",
      "r821",
      "r822"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Location of employer sponsoring plan designed to provide retirement benefits. Includes, but is not limited to, defined benefit and defined contribution plans.",
        "label": "Retirement Plan Sponsor Location [Domain]",
        "terseLabel": "Retirement Plan Sponsor Location"
       }
      }
     },
     "localname": "RetirementPlanSponsorLocationDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": {
     "auth_ref": [
      "r274",
      "r275",
      "r293",
      "r298",
      "r299",
      "r305",
      "r306",
      "r309",
      "r406",
      "r407",
      "r615"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 0.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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerIncludingAssessedTax": {
     "auth_ref": [
      "r274",
      "r275",
      "r293",
      "r298",
      "r299",
      "r305",
      "r306",
      "r309",
      "r406",
      "r407",
      "r615"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerPolicyTextBlock": {
     "auth_ref": [
      "r398",
      "r399",
      "r400",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r409",
      "r674"
     ],
     "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 and Cost Recognition"
       }
      }
     },
     "localname": "RevenueFromContractWithCustomerPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueFromExternalCustomersByGeographicAreasTableTextBlock": {
     "auth_ref": [
      "r76"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligation": {
     "auth_ref": [
      "r396"
     ],
     "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, Amount",
        "terseLabel": "Revenue, remaining performance obligation"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1": {
     "auth_ref": [
      "r397"
     ],
     "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, Period",
        "terseLabel": "Revenue, remaining performance obligation, expected timing of satisfaction, period"
       }
      }
     },
     "localname": "RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_RevenueRemainingPerformanceObligationExpectedTimingOfSatisfactionStartDateAxis": {
     "auth_ref": [
      "r397"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Start date of time band for expected timing of satisfaction of remaining performance obligation, in YYYY-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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTransactionPriceAllocatedToRemainingPerformanceObligationsDetails1"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems": {
     "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": "Revenues from External Customers and Long-Lived Assets [Line Items]",
        "terseLabel": "Enterprise-Wide Disclosures"
       }
      }
     },
     "localname": "RevenuesFromExternalCustomersAndLongLivedAssetsLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "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]",
        "verboseLabel": "Revolving line of credit"
       }
      }
     },
     "localname": "RevolvingCreditFacilityMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RightOfUseAssetObtainedInExchangeForOperatingLeaseLiability": {
     "auth_ref": [
      "r603",
      "r698"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureLeaseCommitmentsSummaryOfWeightedAverageRemainingLeaseTermDiscountRateAndSupplementalCashFlowInformationForAllOperatingLeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RisksAndUncertaintiesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Risks and Uncertainties [Abstract]"
       }
      }
     },
     "localname": "RisksAndUncertaintiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SalesRevenueNetMember": {
     "auth_ref": [
      "r309",
      "r732"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Revenue from sale of product and rendering of service and other sources of income, when it serves as benchmark in concentration of risk calculation.",
        "label": "Revenue Benchmark [Member]",
        "terseLabel": "Sales Revenue, Services, Net [Member]"
       }
      }
     },
     "localname": "SalesRevenueNetMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesScheduleOfRevenueByGeographicLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ScheduleOfAccountsNotesLoansAndFinancingReceivableTable": {
     "auth_ref": [
      "r22"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule itemizing specific types of trade accounts and notes receivable, and for each the gross carrying value, allowance, and net carrying value as of the balance sheet date. Presentation is categorized by current, noncurrent and unclassified receivables.",
        "label": "Schedule of Accounts, Notes, Loans and Financing Receivable [Table]",
        "terseLabel": "Schedule Of Accounts Notes Loans And Financing Receivable [Table]"
       }
      }
     },
     "localname": "ScheduleOfAccountsNotesLoansAndFinancingReceivableTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfAccumulatedOtherComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r29",
      "r862",
      "r863"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetByMajorClassTable": {
     "auth_ref": [
      "r83"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock": {
     "auth_ref": [
      "r83"
     ],
     "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 [Table Text Block]",
        "terseLabel": "Summary of Acquired Intangible Assets"
       }
      }
     },
     "localname": "ScheduleOfAcquiredFiniteLivedIntangibleAssetsByMajorClassTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable": {
     "auth_ref": [
      "r63"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesNetIncomePerShareAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": {
     "auth_ref": [
      "r144",
      "r145",
      "r569"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAllocationOfAggregatePurchaseConsiderationToFairValuesOfAssetsAcquiredAndLiabilitiesAssumedDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesFairValueDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock": {
     "auth_ref": [
      "r144",
      "r145"
     ],
     "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 [Table Text Block]",
        "terseLabel": "Summary of Acquisition Date Fair Value of Consideration"
       }
      }
     },
     "localname": "ScheduleOfBusinessAcquisitionsByAcquisitionTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock": {
     "auth_ref": [
      "r131"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of cost recognized for award under share-based payment arrangement by plan. Includes, but is not limited to, related tax benefit.",
        "label": "Share-Based Payment Arrangement, Cost by Plan [Table Text Block]",
        "terseLabel": "Summary of Equity-Based Compensation Expense, the Corresponding Tax Benefit and Net Equity-Based Compensation Expense"
       }
      }
     },
     "localname": "ScheduleOfCompensationCostForShareBasedPaymentArrangementsAllocationOfShareBasedCompensationCostsByPlanTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "auth_ref": [
      "r140"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of income tax expense attributable to continuing operations for each year presented including, but not limited to: current tax expense (benefit), deferred tax expense (benefit), investment tax credits, government grants, the benefits of operating loss carryforwards, tax expense that results from allocating certain tax benefits either directly to contributed capital or to reduce goodwill or other noncurrent intangible assets of an acquired entity, adjustments of a deferred tax liability or asset for enacted changes in tax laws or rates or a change in the tax status of the entity, and adjustments of the beginning-of-the-year balances of a valuation allowance because of a change in circumstances that causes a change in judgment about the realizability of the related deferred tax asset in future years.",
        "label": "Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]",
        "terseLabel": "Schedule of Components of Income Tax Expense (Benefit)"
       }
      }
     },
     "localname": "ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosureIncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredCompensationArrangementWithIndividualExcludingShareBasedPaymentsAndPostretirementBenefitsByTitleOfIndividualAndByTypeOfDeferredCompensationTable": {
     "auth_ref": [
      "r109",
      "r111"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [
      "r137"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the components of net deferred tax asset or liability recognized in an entity's statement of financial position, including the following: the total of all deferred tax liabilities, the total of all deferred tax assets, the total valuation allowance recognized for deferred tax assets.",
        "label": "Schedule of Deferred Tax Assets and Liabilities [Table Text Block]",
        "terseLabel": "Schedule of Deferred Tax Assets and Liabilities"
       }
      }
     },
     "localname": "ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosureIncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDefinedBenefitPlansDisclosuresTable": {
     "auth_ref": [
      "r116",
      "r117",
      "r118",
      "r119",
      "r120"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsAnticipatedBenefitPaymentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsDeferredCompensationBenefitsChangeInBenefitObligationAndReconciliationOfFairValueDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfAccruedBenefitCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsScheduleOfNetPeriodicPensionCostDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEmployeeBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfDefinedBenefitPlansDisclosuresTextBlock": {
     "auth_ref": [
      "r116",
      "r117",
      "r118",
      "r119",
      "r120"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of one or more of the entity's defined benefit pension plans or one or more other defined benefit postretirement plans, separately for pension plans and other postretirement benefit plans including the entity's schedule of fair value of plan assets for defined benefit or other postretirement plans.",
        "label": "Schedule of Defined Benefit Plans Disclosures [Table Text Block]",
        "terseLabel": "Schedule of Changes in Benefit Obligation"
       }
      }
     },
     "localname": "ScheduleOfDefinedBenefitPlansDisclosuresTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock": {
     "auth_ref": [
      "r731"
     ],
     "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 Earnings Per Share (EPS)"
       }
      }
     },
     "localname": "ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock": {
     "auth_ref": [
      "r75"
     ],
     "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": "Revenue from External Customers by Products and Services [Table Text Block]",
        "terseLabel": "Revenue by Vertical Market as Percentage of Total Revenue"
       }
      }
     },
     "localname": "ScheduleOfEntityWideInformationRevenueFromExternalCustomersByProductsAndServicesTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfExpectedBenefitPaymentsTableTextBlock": {
     "auth_ref": [
      "r112"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of benefits expected to be paid by pension plans and/or other employee benefit plans in each of the next five fiscal years and in the aggregate for the five fiscal years thereafter.",
        "label": "Schedule of Expected Benefit Payments [Table Text Block]",
        "terseLabel": "Deferred Compensation Benefits Anticipated Benefit Payments"
       }
      }
     },
     "localname": "ScheduleOfExpectedBenefitPaymentsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock": {
     "auth_ref": [
      "r83"
     ],
     "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 [Table Text Block]",
        "terseLabel": "Summary of Intangible Assets Acquired"
       }
      }
     },
     "localname": "ScheduleOfFiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTable": {
     "auth_ref": [
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r332",
      "r333",
      "r678"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of goodwill and the changes during the year due to acquisition, sale, impairment or for other reasons.",
        "label": "Schedule of Goodwill [Table]",
        "terseLabel": "Schedule Of Goodwill [Table]"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r678",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r742",
      "r743",
      "r744",
      "r745",
      "r746"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of goodwill by reportable segment and in total which includes a rollforward schedule.",
        "label": "Schedule of Goodwill [Table Text Block]",
        "terseLabel": "Summary of Changes in Carrying Amount of Goodwill"
       }
      }
     },
     "localname": "ScheduleOfGoodwillTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNetBenefitCostsTableTextBlock": {
     "auth_ref": [
      "r113"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNetPeriodicBenefitCostNotYetRecognizedTableTextBlock": {
     "auth_ref": [
      "r115"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": {
     "auth_ref": [
      "r94"
     ],
     "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": "Property, Plant and Equipment [Table]",
        "terseLabel": "Schedule Of Property Plant And Equipment [Table]"
       }
      }
     },
     "localname": "ScheduleOfPropertyPlantAndEquipmentTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesImpairmentOfLongLivedAssetsAndLongLivedAssetsToBeDisposedOfDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRecognizedIdentifiedAssetsAcquiredAndLiabilitiesAssumedTableTextBlock": {
     "auth_ref": [
      "r149"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock": {
     "auth_ref": [
      "r35",
      "r77"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of information concerning material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material. An entity may also provide subtotals of geographic information about groups of countries.",
        "label": "Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas [Table Text Block]",
        "terseLabel": "Schedule of Revenue from External Customers and Long-Lived Assets, by Geographical Areas"
       }
      }
     },
     "localname": "ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable": {
     "auth_ref": [
      "r32",
      "r77"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Schedule of material long-lived assets (excluding financial instruments, customer relationships with financial institutions, mortgage and other servicing rights, deferred policy acquisition costs, and deferred taxes assets) located in identified geographic areas and/or the amount of revenue from external customers attributed to that country from which revenue is material. An entity may also provide subtotals of geographic information about groups of countries.",
        "label": "Schedule of Revenues from External Customers and Long-Lived Assets [Table]",
        "terseLabel": "Schedule Of Revenues From External Customers And Long Lived Assets [Table]"
       }
      }
     },
     "localname": "ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfRevenueFromExternalCustomersAndLongLivedAssetsByGeographicalAreasDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTable": {
     "auth_ref": [
      "r72",
      "r73",
      "r74",
      "r81"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfSegmentReportingInformationBySegmentTextBlock": {
     "auth_ref": [
      "r72",
      "r73",
      "r74",
      "r81"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the profit or loss and total assets for each reportable segment. 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 Text Block]",
        "terseLabel": "Schedule of Operating Segments"
       }
      }
     },
     "localname": "ScheduleOfSegmentReportingInformationBySegmentTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": {
     "auth_ref": [
      "r496",
      "r497",
      "r500",
      "r501",
      "r502",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r509",
      "r510",
      "r511",
      "r512",
      "r513",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r524",
      "r525",
      "r526",
      "r527",
      "r528"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of information about share-based payment arrangement.",
        "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r121",
      "r123",
      "r125"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure for stock option plans. Includes, but is not limited to, outstanding awards at beginning and end of year, grants, exercises, forfeitures, and weighted-average grant date fair value.",
        "label": "Share-Based Payment Arrangement, Option, Activity [Table Text Block]",
        "terseLabel": "Summary of Stock Option Activity Under the 2020 Plan, 2010 Plan and Equity Plan"
       }
      }
     },
     "localname": "ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r129"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of the significant assumptions used during the year to estimate the fair value of stock options, including, but not limited to: (a) expected term of share options and similar instruments, (b) expected volatility of the entity's shares, (c) expected dividends, (d) risk-free rate(s), and (e) discount for post-vesting restrictions.",
        "label": "Schedule of Share-Based Payment Award, Stock Options, Valuation Assumptions [Table Text Block]",
        "terseLabel": "Summary of Weighted-Average Assumptions Used to Estimate Fair Value of Options"
       }
      }
     },
     "localname": "ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of the number and weighted-average grant date fair value for restricted stock and restricted stock units that were outstanding at the beginning and end of the year, and the number of restricted stock and restricted stock units that were granted, vested, or forfeited during the year.",
        "label": "Share-Based Payment Arrangement, Restricted Stock and Restricted Stock Unit, Activity [Table Text Block]",
        "terseLabel": "Summary of Restricted Stock Activity Under the 2010 Plan, Equity Plan and the 1991 Restricted Stock Plan"
       }
      }
     },
     "localname": "ScheduleOfSharebasedCompensationRestrictedStockAndRestrictedStockUnitsActivityTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r85"
     ],
     "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": "Schedule of Finite-Lived Intangible Assets, Future Amortization Expense [Table Text Block]",
        "terseLabel": "Summary of Estimated Amortization Expense"
       }
      }
     },
     "localname": "ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SegmentDomain": {
     "auth_ref": [
      "r271",
      "r274",
      "r275",
      "r276",
      "r277",
      "r278",
      "r279",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r285",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r298",
      "r299",
      "r300",
      "r301",
      "r303",
      "r309",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r342",
      "r343",
      "r678",
      "r875"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Components of an entity that engage in business activities from which they may earn revenue and incur expenses, including transactions with other components of the same entity.",
        "label": "Segments [Domain]",
        "terseLabel": "Segments"
       }
      }
     },
     "localname": "SegmentDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SegmentReportingAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Segment Reporting [Abstract]"
       }
      }
     },
     "localname": "SegmentReportingAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r271",
      "r272",
      "r273",
      "r283",
      "r286",
      "r297",
      "r301",
      "r302",
      "r303",
      "r304",
      "r305",
      "r308",
      "r309",
      "r310"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for reporting segments including data and tables. Reportable segments include those that meet any of the following quantitative thresholds a) it's reported revenue, including sales to external customers and intersegment sales or transfers is 10 percent or more of the combined revenue, internal and external, of all operating segments b) the absolute amount of its reported profit or loss is 10 percent or more of the greater, in absolute amount of 1) the combined reported profit of all operating segments that did not report a loss or 2) the combined reported loss of all operating segments that did report a loss c) its assets are 10 percent or more of the combined assets of all operating segments.",
        "label": "Segment Reporting Disclosure [Text Block]",
        "terseLabel": "Segments and Enterprise-Wide Disclosures"
       }
      }
     },
     "localname": "SegmentReportingDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosures"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSignificantClientsAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSegmentsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SegmentReportingPolicyPolicyTextBlock": {
     "auth_ref": [
      "r287",
      "r288",
      "r289",
      "r290",
      "r291",
      "r292",
      "r306"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for segment reporting.",
        "label": "Segment Reporting, Policy [Policy Text Block]",
        "terseLabel": "Segments"
       }
      }
     },
     "localname": "SegmentReportingPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingGeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r38"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome": {
       "order": 2.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",
        "totalLabel": "Selling, General and Administrative Expense, Total"
       }
      }
     },
     "localname": "SellingGeneralAndAdministrativeExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SellingGeneralAndAdministrativeExpensesMember": {
     "auth_ref": [],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r55"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows": {
       "order": 2.0,
       "parentTag": "us-gaap_NetCashProvidedByUsedInOperatingActivities",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of noncash expense for share-based payment arrangement.",
        "label": "Share-Based Payment Arrangement, Noncash Expense",
        "terseLabel": "Equity-based compensation expense",
        "totalLabel": "Share-Based Payment Arrangement, Noncash Expense, Total"
       }
      }
     },
     "localname": "ShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r693"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period over which grantee's right to exercise award under share-based payment arrangement is no longer contingent on satisfaction of service or performance condition, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days. Includes, but is not limited to, combination of market, performance or service condition.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Period",
        "terseLabel": "Award vesting period"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "auth_ref": [
      "r517"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that were forfeited during the reporting period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeited in Period",
        "negatedLabel": "Canceled or forfeited (in shares)",
        "terseLabel": "Number of shares, cancelled",
        "verboseLabel": "Number of shares, cancelled"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r517"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average fair value as of the grant date of equity-based award plans other than stock (unit) option plans that were not exercised or put into effect as a result of the occurrence of a terminating event.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Forfeitures, Weighted Average Grant Date Fair Value",
        "terseLabel": "Canceled or forfeited (weighted-average fair value)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r515"
     ],
     "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": "Restricted stock and stock units, granted",
        "terseLabel": "Restricted stock and stock units, granted",
        "verboseLabel": "Restricted stock grants (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r515"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average fair value at grant date for nonvested equity-based awards issued 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, Weighted Average Grant Date Fair Value",
        "terseLabel": "Restricted stock grants (weighted-average fair value)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "auth_ref": [
      "r512",
      "r513"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of non-vested equity-based payment instruments, excluding stock (or unit) options, that validly exist and are outstanding as of the balance sheet date.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number",
        "periodEndLabel": "End of period, outstanding (in shares)",
        "periodStartLabel": "Beginning of period, outstanding (in shares)",
        "terseLabel": "Number of shares, outstanding",
        "verboseLabel": "Number of shares, outstanding"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward": {
     "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": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Number of Shares [Roll Forward]",
        "terseLabel": "Restricted Stock Activity"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r512",
      "r513"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Per share or unit weighted-average fair value of nonvested award under share-based payment arrangement. Excludes share and unit options.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value",
        "periodEndLabel": "End of period (weighted-average fair value)",
        "periodStartLabel": "Beginning of period (weighted-average fair value)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Nonvested, Weighted Average Grant Date Fair Value [Abstract]",
        "terseLabel": "Weighted-Average Fair Value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "auth_ref": [
      "r516"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of equity-based payment instruments, excluding stock (or unit) options, that vested during the reporting period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period",
        "negatedLabel": "Released (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue": {
     "auth_ref": [
      "r519"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Fair value of share-based awards for which the grantee gained the right by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Fair Value",
        "terseLabel": "Fair value of performance share units"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodTotalFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r516"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average fair value as of grant date pertaining to an equity-based award plan other than a stock (or unit) option plan for which the grantee gained the right during the reporting period, by satisfying service and performance requirements, to receive or retain shares or units, other instruments, or cash in accordance with the terms of the arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Equity Instruments Other than Options, Vested in Period, Weighted Average Grant Date Fair Value",
        "terseLabel": "Released (weighted-average fair value)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r526"
     ],
     "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",
        "verboseLabel": "Dividend yield"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r525"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r527"
     ],
     "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",
        "verboseLabel": "Risk-free interest rate"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "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]",
        "verboseLabel": "Share-based Compensation Details"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized": {
     "auth_ref": [
      "r695"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares authorized for issuance under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Authorized",
        "terseLabel": "Number of shares authorized"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAuthorized",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "auth_ref": [
      "r132"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The difference between the maximum number of shares (or other type of equity) authorized for issuance under the plan (including the effects of amendments and adjustments), and the sum of: 1) the number of shares (or other type of equity) already issued upon exercise of options or other equity-based awards under the plan; and 2) shares (or other type of equity) reserved for issuance on granting of outstanding awards, net of cancellations and forfeitures, if applicable.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Number of Shares Available for Grant",
        "terseLabel": "Number of shares available for grant"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r506"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted-average price as of the balance sheet date at which grantees can acquire the shares reserved for issuance on vested portions of options outstanding and currently exercisable under the stock option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Weighted Average Exercise Price",
        "terseLabel": "Outstanding, weighted-average exercise price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue": {
     "auth_ref": [
      "r519"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of accumulated difference between fair value of underlying shares on dates of exercise and exercise price on options exercised (or share units converted) into shares.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period, Intrinsic Value",
        "terseLabel": "Intrinsic value of shares exercised"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisesInPeriodTotalIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod": {
     "auth_ref": [
      "r511"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of options or other stock instruments for which the right to exercise has lapsed under the terms of the plan agreements.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Expirations in Period",
        "negatedLabel": "Options expired (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod": {
     "auth_ref": [
      "r510"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares under options that were cancelled during the reporting period as a result of occurrence of a terminating event specified in contractual agreements pertaining to the stock option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Forfeitures in Period",
        "negatedLabel": "Options canceled or forfeited (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross": {
     "auth_ref": [
      "r508"
     ],
     "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",
        "verboseLabel": "Options granted (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r518"
     ],
     "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": "Weighted-average fair value on the date of grant of stock options granted"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "auth_ref": [
      "r132"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount by which the current fair value of the underlying stock exceeds the exercise price of options outstanding.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Intrinsic Value",
        "terseLabel": "Aggregate intrinsic value"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r504",
      "r505"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of options outstanding, including both vested and non-vested options.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Number",
        "periodEndLabel": "End of period, outstanding (in shares)",
        "periodStartLabel": "Beginning of period, outstanding (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward": {
     "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": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding [Roll Forward]",
        "terseLabel": "Stock Option Activity, Options"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r504",
      "r505"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees can acquire the shares reserved for issuance under the stock option plan.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price",
        "periodEndLabel": "End of period (weighted-average price)",
        "periodStartLabel": "Beginning of period (weighted-average price)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Outstanding, Weighted Average Exercise Price [Abstract]",
        "terseLabel": "Weighted-Average Exercise Price"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber": {
     "auth_ref": [
      "r521"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of fully vested and expected to vest exercisable options that may be converted into shares under option plan. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Exercisable, Number",
        "terseLabel": "Options exercisable (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableTableTextBlock": {
     "auth_ref": [
      "r127"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of number, weighted-average exercise price or conversion ratio, aggregate intrinsic value, and weighted-average remaining contractual term for exercisable or convertible options that are fully vested and expected to vest. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Exercisable [Table Text Block]",
        "terseLabel": "Summary of Stock Options that are Exercisable for the 2020 Plan, 2010 Plan and the Equity Plan"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r521"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted-average exercise price, at which grantee can acquire shares reserved for issuance, for fully vested and expected to vest exercisable or convertible options. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Exercisable, Weighted Average Exercise Price",
        "terseLabel": "Options exercisable (weighted-average price)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAndExercisableTableTextBlock": {
     "auth_ref": [
      "r125"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of number, weighted-average exercise price or conversion ratio, aggregate intrinsic value, and weighted-average remaining contractual term for outstanding and exercisable options that are fully vested and expected to vest. Includes, but is not limited to, unvested options for which requisite service period has not been rendered but that are expected to vest based on achievement of performance condition, if forfeitures are recognized when they occur.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Vested and Expected to Vest, Outstanding and Exercisable [Table Text Block]",
        "terseLabel": "Summary of Stock Options Outstanding for the 2020 Plan, 2010 Plan and Equity Plan"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAndExercisableTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardSharesPurchasedForAward": {
     "auth_ref": [
      "r849"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares purchased for issuance under share-based payment arrangement.",
        "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDeferredCompensationBenefitsAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r500",
      "r501",
      "r502",
      "r504",
      "r505",
      "r506",
      "r507",
      "r508",
      "r509",
      "r510",
      "r511",
      "r512",
      "r513",
      "r514",
      "r515",
      "r516",
      "r517",
      "r518",
      "r519",
      "r520",
      "r521",
      "r524",
      "r525",
      "r526",
      "r527",
      "r528"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Award under share-based payment arrangement.",
        "label": "Award Type [Domain]",
        "terseLabel": "Award Type"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfRestrictedStockActivityUnder2010PlanEquityPlanAnd1991RestrictedStockPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r509"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which option holders acquired shares when converting their stock options into shares.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price",
        "terseLabel": "Options exercised (weighted-average price)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r511"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options of the plan that expired.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price",
        "terseLabel": "Options expired (weighted-average price)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r510"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average price at which grantees could have acquired the underlying shares with respect to stock options that were terminated.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price",
        "terseLabel": "Options canceled or forfeited (weighted-average price)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r508"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average per share amount at which grantees can acquire shares of common stock by exercise of options.",
        "label": "Share-Based Compensation Arrangements by Share-Based Payment Award, Options, Grants in Period, Weighted Average Exercise Price",
        "terseLabel": "Options granted (weighted-average price)"
       }
      }
     },
     "localname": "ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheOneMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "First portion of award under share-based payment arrangement differentiated by vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share-Based Payment Arrangement, Tranche One [Member]",
        "terseLabel": "Stock Vesting, One Year From Grant Date [Member]"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheOneMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheThreeMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Third portion of award under share-based payment arrangement differentiated by vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share-Based Payment Arrangement, Tranche Three [Member]",
        "terseLabel": "Stock Vesting, Three Year From Grant Date [Member]"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheThreeMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationAwardTrancheTwoMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Second portion of award under share-based payment arrangement differentiated by vesting feature, including, but not limited to, performance measure or service period.",
        "label": "Share-Based Payment Arrangement, Tranche Two [Member]",
        "terseLabel": "Stock Vesting, Two Year From Grant Date [Member]"
       }
      }
     },
     "localname": "ShareBasedCompensationAwardTrancheTwoMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy": {
     "auth_ref": [
      "r503",
      "r522",
      "r523",
      "r524",
      "r525",
      "r528",
      "r537",
      "r538"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for award under share-based payment arrangement. Includes, but is not limited to, methodology and assumption used in measuring cost.",
        "label": "Share-Based Payment Arrangement [Policy Text Block]",
        "terseLabel": "Equity-Based Compensation"
       }
      }
     },
     "localname": "ShareBasedCompensationOptionAndIncentivePlansPolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis": {
     "auth_ref": [
      "r128"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by range of option prices pertaining to options granted.",
        "label": "Exercise Price Range [Axis]",
        "terseLabel": "Exercise Price Range"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain": {
     "auth_ref": [
      "r130"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Supplementary information on outstanding and exercisable share awards as of the balance sheet date which stratifies outstanding options by ranges of exercise prices.",
        "label": "Exercise Price Range [Domain]",
        "terseLabel": "Exercise Price Range"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit": {
     "auth_ref": [
      "r130"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The floor of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.",
        "label": "Share-Based Payment Arrangement, Option, Exercise Price Range, Lower Range Limit",
        "terseLabel": "Exercise price range, lower limit"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLowerRangeLimit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions": {
     "auth_ref": [
      "r122"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The number of shares reserved for issuance pertaining to the outstanding stock options as of the balance sheet date for all option plans in the customized range of exercise prices.",
        "label": "Share-Based Payment Arrangement, Option, Exercise Price Range, Shares Outstanding",
        "periodEndLabel": "Share-Based Payment Arrangement, Option, Exercise Price Range, Shares Outstanding, Ending Balance",
        "periodStartLabel": "Share-Based Payment Arrangement, Option, Exercise Price Range, Shares Outstanding, Beginning Balance",
        "terseLabel": "Number of options outstanding (in shares)"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeNumberOfOutstandingOptions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit": {
     "auth_ref": [
      "r130"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The ceiling of a customized range of exercise prices for purposes of disclosing shares potentially issuable under outstanding stock option awards on all stock option plans and other required information pertaining to awards in the customized range.",
        "label": "Share-Based Payment Arrangement, Option, Exercise Price Range, Upper Range Limit",
        "terseLabel": "Exercise price range, upper limit"
       }
      }
     },
     "localname": "ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeUpperRangeLimit",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage": {
     "auth_ref": [
      "r823"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Percentage of vesting of award under share-based payment arrangement.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Award Vesting Rights, Percentage",
        "terseLabel": "Shares vesting percentage"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardAwardVestingRightsPercentage",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod": {
     "auth_ref": [
      "r694"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Period from grant date that an equity-based award expires, 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, Expiration Period",
        "terseLabel": "Expiration period"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardExpirationPeriod",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r524"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Expected term of award under share-based payment arrangement, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Fair Value Assumptions, Expected Term",
        "verboseLabel": "Expected life (years)"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfWeightedAverageAssumptionsUsedToEstimateFairValueOfOptionsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1": {
     "auth_ref": [
      "r132"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of difference between fair value of the underlying shares reserved for issuance and exercise price of vested portions of options outstanding and currently exercisable.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercisable, Intrinsic Value",
        "terseLabel": "Aggregate intrinsic value"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableIntrinsicValue1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r132"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term for vested portions of options outstanding and currently exercisable or convertible, 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, Options, Exercisable, Weighted Average Remaining Contractual Term",
        "terseLabel": "Weighted average remaining contractual life"
       }
      }
     },
     "localname": "SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsThatAreExercisableFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1": {
     "auth_ref": [
      "r122"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The weighted average price as of the balance sheet date at which grantees could acquire the underlying shares with respect to all outstanding stock options which are in the customized range of exercise prices.",
        "label": "Share-Based Payment Arrangement, Option, Exercise Price Range, Outstanding, Weighted Average Exercise Price",
        "periodEndLabel": "Share-Based Payment Arrangement, Option, Exercise Price Range, Outstanding, Weighted Average Exercise Price, Ending Balance",
        "periodStartLabel": "Share-Based Payment Arrangement, Option, Exercise Price Range, Outstanding, Weighted Average Exercise Price, Beginning Balance",
        "terseLabel": "Weighted-average price"
       }
      }
     },
     "localname": "SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageExercisePriceBeginningBalance1",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageRemainingContractualTerm2": {
     "auth_ref": [
      "r126"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average remaining contractual term of outstanding stock options, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Share-Based Payment Arrangement, Option, Exercise Price Range, Outstanding, Weighted Average Remaining Contractual Term",
        "terseLabel": "Weighted average remaining contractual life"
       }
      }
     },
     "localname": "SharebasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeOutstandingOptionsWeightedAverageRemainingContractualTerm2",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionsOutstandingFor2020Plan2010PlanAndEquityPlanDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShortTermLeaseCost": {
     "auth_ref": [
      "r600",
      "r698"
     ],
     "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 costs"
       }
      }
     },
     "localname": "ShortTermLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfLeaseCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r62",
      "r235"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosurePropertyEquipmentAndCapitalizedSoftwareAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfAmortizationExpenseAndAccumulatedAmortizationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareScheduleOfPropertyEquipmentAndCapitalizedSoftwareDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosurePropertyEquipmentAndCapitalizedSoftwareUsefulLifeDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPropertyEquipmentAndCapitalizedSoftwareCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StateAndLocalJurisdictionMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Designated tax department of a state or local government entitled to levy and collect income taxes from the entity.",
        "label": "State and Local Jurisdiction [Member]",
        "terseLabel": "State and Local Jurisdiction [Member]"
       }
      }
     },
     "localname": "StateAndLocalJurisdictionMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StatementBusinessSegmentsAxis": {
     "auth_ref": [
      "r201",
      "r271",
      "r274",
      "r275",
      "r276",
      "r277",
      "r278",
      "r279",
      "r280",
      "r281",
      "r282",
      "r283",
      "r284",
      "r285",
      "r293",
      "r294",
      "r295",
      "r296",
      "r297",
      "r298",
      "r299",
      "r300",
      "r301",
      "r303",
      "r309",
      "r323",
      "r324",
      "r325",
      "r326",
      "r327",
      "r328",
      "r329",
      "r330",
      "r331",
      "r340",
      "r342",
      "r343",
      "r678",
      "r875"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by business segments.",
        "label": "Segments [Axis]",
        "terseLabel": "Segments"
       }
      }
     },
     "localname": "StatementBusinessSegmentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSegmentsAndEnterpriseWideDisclosuresScheduleOfOperatingSegmentsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesGoodwillDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r21",
      "r104",
      "r200",
      "r227",
      "r228",
      "r229",
      "r244",
      "r245",
      "r246",
      "r248",
      "r254",
      "r256",
      "r269",
      "r318",
      "r393",
      "r534",
      "r535",
      "r536",
      "r557",
      "r558",
      "r581",
      "r586",
      "r587",
      "r588",
      "r589",
      "r590",
      "r591",
      "r608",
      "r628",
      "r629",
      "r630"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by component of equity.",
        "label": "Equity Components [Axis]",
        "terseLabel": "Equity Components"
       }
      }
     },
     "localname": "StatementEquityComponentsAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfCashFlowsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Cash Flows [Abstract]"
       }
      }
     },
     "localname": "StatementOfCashFlowsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "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/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Statement of Comprehensive Income [Abstract]"
       }
      }
     },
     "localname": "StatementOfIncomeAndComprehensiveIncomeAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "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/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [
      "r244",
      "r245",
      "r246",
      "r269",
      "r615"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesCashAndCashEquivalentsAndCashOverdraftsDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesAcquisitions": {
     "auth_ref": [
      "r5",
      "r6",
      "r105"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of stock issued during the period pursuant to acquisitions.",
        "label": "Stock Issued During Period, Shares, Acquisitions",
        "terseLabel": "Acquisition share issuance, shares"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesAcquisitions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan": {
     "auth_ref": [
      "r5",
      "r6",
      "r104",
      "r105",
      "r134"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of shares of capital stock issued (purchased by employees) in connection with an employee stock ownership plan.",
        "label": "Stock Issued During Period, Shares, Employee Stock Ownership Plan",
        "terseLabel": "Employee Stock Purchase Plan (ESPP), Shares purchased"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesEmployeeStockOwnershipPlan",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquityAdditionalInformationDetails"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesEmployeeStockPurchasePlans": {
     "auth_ref": [
      "r5",
      "r6",
      "r104",
      "r105"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesRestrictedStockAwardNetOfForfeitures": {
     "auth_ref": [
      "r5",
      "r6",
      "r104",
      "r105"
     ],
     "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",
        "totalLabel": "Stock Issued During Period, Shares, Restricted Stock Award, Net of Forfeitures, Total"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesRestrictedStockAwardNetOfForfeitures",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesShareBasedCompensation": {
     "auth_ref": [
      "r5",
      "r6",
      "r104",
      "r105"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number, after forfeiture, of shares or units issued under share-based payment arrangement. Excludes shares or units issued under employee stock ownership plan (ESOP).",
        "label": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture",
        "terseLabel": "Equity-based compensation, shares",
        "totalLabel": "Shares Issued, Shares, Share-Based Payment Arrangement, after Forfeiture, Total"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r5",
      "r6",
      "r104",
      "r105",
      "r509"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Number of share options (or share units) exercised during the current period.",
        "label": "Share-Based Compensation Arrangement by Share-Based Payment Award, Options, Exercises in Period",
        "negatedLabel": "Stock Option Plan share issuance, shares",
        "negatedTerseLabel": "Options exercised (in shares)",
        "terseLabel": "Options exercised (in shares)"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodSharesStockOptionsExercised",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationSummaryOfStockOptionActivityUnder2020Plan2010PlanAndEquityPlanDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueAcquisitions": {
     "auth_ref": [
      "r21",
      "r104",
      "r105"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value of stock issued pursuant to acquisitions during the period.",
        "label": "Stock Issued During Period, Value, Acquisitions",
        "terseLabel": "Acquisition share issuance"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueAcquisitions",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueEmployeeStockPurchasePlan": {
     "auth_ref": [
      "r5",
      "r6",
      "r104",
      "r105"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueRestrictedStockAwardNetOfForfeitures": {
     "auth_ref": [
      "r104",
      "r105"
     ],
     "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",
        "totalLabel": "Stock Issued During Period, Value, Restricted Stock Award, Net of Forfeitures, Total"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueRestrictedStockAwardNetOfForfeitures",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueShareBasedCompensation": {
     "auth_ref": [
      "r5",
      "r6",
      "r105",
      "r124"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Value, after forfeiture, of shares issued under share-based payment arrangement. Excludes employee stock ownership plan (ESOP).",
        "label": "Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture",
        "terseLabel": "Equity-based compensation",
        "totalLabel": "Shares Issued, Value, Share-Based Payment Arrangement, after Forfeiture, Total"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueShareBasedCompensation",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "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, Value, Stock Options Exercised, Net of Tax Benefit (Expense)",
        "terseLabel": "Stock Option Plan share issuance, net"
       }
      }
     },
     "localname": "StockIssuedDuringPeriodValueStockOptionsExercisedNetOfTaxBenefitExpense",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r6",
      "r9",
      "r10",
      "r78",
      "r699",
      "r726",
      "r735",
      "r860"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 1.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 Attributable to Parent",
        "periodEndLabel": "Balance",
        "periodStartLabel": "Balance",
        "totalLabel": "Total shareholders\u2019 equity"
       }
      }
     },
     "localname": "StockholdersEquity",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets",
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquityAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders' Equity Attributable to Parent [Abstract]",
        "terseLabel": "Shareholders\u2019 Equity:"
       }
      }
     },
     "localname": "StockholdersEquityAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockholdersEquityNoteAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Stockholders' Equity Note [Abstract]"
       }
      }
     },
     "localname": "StockholdersEquityNoteAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockholdersEquityNoteDisclosureTextBlock": {
     "auth_ref": [
      "r108",
      "r237",
      "r381",
      "r382",
      "r383",
      "r384",
      "r385",
      "r386",
      "r387",
      "r388",
      "r389",
      "r390",
      "r391",
      "r392",
      "r393",
      "r580"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for shareholders' equity comprised of portions attributable to the parent entity and noncontrolling interest, including other comprehensive income. Includes, but is not limited to, balances of common stock, preferred stock, additional paid-in capital, other capital and retained earnings, accumulated balance for each classification of other comprehensive income and amount of comprehensive income.",
        "label": "Stockholders' Equity Note Disclosure [Text Block]",
        "terseLabel": "Shareholders' Equity"
       }
      }
     },
     "localname": "StockholdersEquityNoteDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureShareholdersEquity"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SubsequentEventsPolicyPolicyTextBlock": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for reporting subsequent events.",
        "label": "Subsequent Events, Policy [Policy Text Block]",
        "terseLabel": "Subsequent Events"
       }
      }
     },
     "localname": "SubsequentEventsPolicyPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SupplementalCashFlowElementsAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Supplemental Cash Flow Elements [Abstract]"
       }
      }
     },
     "localname": "SupplementalCashFlowElementsAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfCashFlows"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxPeriodAxis": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information about the period subject to enacted tax laws.",
        "label": "Tax Period [Axis]",
        "terseLabel": "Tax Period"
       }
      }
     },
     "localname": "TaxPeriodAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxPeriodDomain": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Identified tax period.",
        "label": "Tax Period [Domain]",
        "terseLabel": "Tax Period"
       }
      }
     },
     "localname": "TaxPeriodDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TaxesPayableCurrent": {
     "auth_ref": [
      "r14"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 5.0,
       "parentTag": "us-gaap_LiabilitiesCurrent",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Carrying value as of the balance sheet date of obligations incurred and payable for statutory income, sales, use, payroll, excise, real, property and other taxes. Used to reflect the current portion of the liabilities (due within one year or within the normal operating cycle if longer).",
        "label": "Taxes Payable, Current",
        "terseLabel": "Income taxes payable",
        "totalLabel": "Taxes Payable, Current, Total"
       }
      }
     },
     "localname": "TaxesPayableCurrent",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TradeAccountsReceivableMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount due from customers or clients for goods or services that have been delivered or sold in the normal course of business.",
        "label": "Trade Accounts Receivable [Member]",
        "terseLabel": "Trade Accounts Receivable [Member]"
       }
      }
     },
     "localname": "TradeAccountsReceivableMember",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TradeAndOtherAccountsReceivablePolicy": {
     "auth_ref": [
      "r196",
      "r197",
      "r198",
      "r313",
      "r314",
      "r316"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for accounts receivable.",
        "label": "Accounts Receivable [Policy Text Block]",
        "terseLabel": "Accounts Receivable Factoring"
       }
      }
     },
     "localname": "TradeAndOtherAccountsReceivablePolicy",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TrademarksMember": {
     "auth_ref": [
      "r150"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfIntangibleAssetsAcquiredDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesSummaryOfAcquiredIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TreasuryStockCommonShares": {
     "auth_ref": [
      "r106"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheetsParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_TreasuryStockCommonValue": {
     "auth_ref": [
      "r23",
      "r106",
      "r107"
     ],
     "calculation": {
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets": {
       "order": 3.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 103,504 and 11,841,960 shares at cost, at December 31, 2022 and 2021, respectively"
       }
      }
     },
     "localname": "TreasuryStockCommonValue",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedBalanceSheets"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TreasuryStockMember": {
     "auth_ref": [
      "r20",
      "r106"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_StatementConsolidatedStatementsOfShareholdersEquity"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TypeOfArrangementAxis": {
     "auth_ref": [
      "r858"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by collaborative arrangement and arrangement other than collaborative applicable to revenue-generating activity or operations.",
        "label": "Collaborative Arrangement and Arrangement Other than Collaborative [Axis]",
        "terseLabel": "Collaborative Arrangement and Arrangement Other than Collaborative"
       }
      }
     },
     "localname": "TypeOfArrangementAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesAccountsReceivableFactoringDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_UnusualOrInfrequentItemAxis": {
     "auth_ref": [
      "r41"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by an event or transaction that is unusual in nature or infrequent in occurrence, or both.",
        "label": "Unusual or Infrequent Item, or Both [Axis]",
        "terseLabel": "Unusual or Infrequent Item, or Both"
       }
      }
     },
     "localname": "UnusualOrInfrequentItemAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_UnusualOrInfrequentItemDomain": {
     "auth_ref": [
      "r41"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Event or transaction that is unusual in nature or infrequent in occurrence, or both.",
        "label": "Unusual or Infrequent Item, or Both [Domain]",
        "terseLabel": "Unusual or Infrequent Item, or Both"
       }
      }
     },
     "localname": "UnusualOrInfrequentItemDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesLifeInsurancePoliciesDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationAllowanceDeferredTaxAssetChangeInAmount": {
     "auth_ref": [
      "r551"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in the valuation allowance for a specified deferred tax asset.",
        "label": "Valuation Allowance, Deferred Tax Asset, Increase (Decrease), Amount",
        "terseLabel": "Change in deferred tax asset valuation allowance"
       }
      }
     },
     "localname": "ValuationAllowanceDeferredTaxAssetChangeInAmount",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureIncomeTaxesAdditionalInformationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_VariableLeaseCost": {
     "auth_ref": [
      "r601",
      "r698"
     ],
     "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 costs"
       }
      }
     },
     "localname": "VariableLeaseCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/DisclosureLeaseCommitmentsSummaryOfLeaseCostsDetails"
     ],
     "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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/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/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_VestingAxis": {
     "auth_ref": [
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r828",
      "r829",
      "r830",
      "r831",
      "r832",
      "r833",
      "r834",
      "r835",
      "r836",
      "r837",
      "r838",
      "r839",
      "r840",
      "r841",
      "r842",
      "r843",
      "r844",
      "r845",
      "r846",
      "r847",
      "r848"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by vesting schedule of award under share-based payment arrangement.",
        "label": "Vesting [Axis]",
        "terseLabel": "Vesting"
       }
      }
     },
     "localname": "VestingAxis",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_VestingDomain": {
     "auth_ref": [
      "r823",
      "r824",
      "r825",
      "r826",
      "r827",
      "r828",
      "r829",
      "r830",
      "r831",
      "r832",
      "r833",
      "r834",
      "r835",
      "r836",
      "r837",
      "r838",
      "r839",
      "r840",
      "r841",
      "r842",
      "r843",
      "r844",
      "r845",
      "r846",
      "r847",
      "r848"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Vesting schedule of award under share-based payment arrangement.",
        "label": "Vesting [Domain]",
        "terseLabel": "Vesting"
       }
      }
     },
     "localname": "VestingDomain",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureAcquisitionsSummaryOfAcquisitionDateFairValueOfConsiderationDetails",
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureEquityBasedCompensationAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r258",
      "r266"
     ],
     "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 Shares Outstanding, Diluted",
        "terseLabel": "Diluted",
        "totalLabel": "Weighted Average Number of Shares Outstanding, Diluted, Total",
        "verboseLabel": "Weighted average number of shares outstanding, diluted (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfDilutedSharesOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Weighted Average Number of Shares Outstanding, Diluted [Abstract]",
        "terseLabel": "Weighted average shares outstanding:"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingAbstract",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r257",
      "r266"
     ],
     "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",
        "totalLabel": "Weighted Average Number of Shares Outstanding, Basic, Total",
        "verboseLabel": "Weighted average number of shares outstanding, basic (in shares)"
       }
      }
     },
     "localname": "WeightedAverageNumberOfSharesOutstandingBasic",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureSummaryOfSignificantAccountingPoliciesBasicAndDilutedEarningsPerShareEPSDetails",
      "http://www.ctg.com/20221231/taxonomy/role/StatementConsolidatedStatementsOfIncome"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WriteOffOfDeferredDebtIssuanceCost": {
     "auth_ref": [
      "r39"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Write-off of amounts previously capitalized as debt issuance cost in an extinguishment of debt.",
        "label": "Write off of Deferred Debt Issuance Cost",
        "terseLabel": "Deferred financing fees expense"
       }
      }
     },
     "localname": "WriteOffOfDeferredDebtIssuanceCost",
     "nsuri": "http://fasb.org/us-gaap/2022",
     "presentation": [
      "http://www.ctg.com/20221231/taxonomy/role/Role_DisclosureDebtAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    }
   },
   "unitCount": 10
  }
 },
 "std_ref": {
  "r0": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(19)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(20))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r10": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(31))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=99376301&loc=d3e1336-112600",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=7516071&loc=d3e13374-112631",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "470",
   "URI": "https://asc.fasb.org/topic&trid=2208564",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "63",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "480",
   "URI": "https://asc.fasb.org/extlink&oid=126970277&loc=d3e23176-110880",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=d3e21463-112644",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=120397183&loc=d3e187085-122770",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=6405813&loc=d3e23239-112655",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=6405834&loc=d3e23315-112656",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "505",
   "URI": "https://asc.fasb.org/topic&trid=2208762",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "https://asc.fasb.org/extlink&oid=6409733&loc=d3e19524-108361",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r11": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(32))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "https://asc.fasb.org/extlink&oid=6409733&loc=d3e19512-108361",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "10",
   "Topic": "710",
   "URI": "https://asc.fasb.org/extlink&oid=6409875&loc=d3e20015-108363",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r114": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r115": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(j)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r116": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r117": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2410-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2417-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r119": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2439-114920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r12": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(a))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r120": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123450688&loc=d3e4179-114921",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r122": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)-(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r123": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r124": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r125": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r126": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r127": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r129": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r13": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19(b),22(b))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=SL79508275-113901",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "40",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=109244457&loc=d3e16649-113920",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=109244661&loc=d3e17540-113929",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32559-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32632-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r14": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19,20)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=79982066&loc=d3e1392-128463",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=79982066&loc=d3e1486-128463",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "37",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=123455525&loc=d3e2207-128464",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=128092470&loc=d3e4845-128472",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(1)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=128092470&loc=d3e4845-128472",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=128092470&loc=d3e4845-128472",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r15": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.19-26)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=123410050&loc=d3e5263-128473",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=123410050&loc=d3e5333-128473",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=6911189&loc=d3e6405-128476",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r153": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=6911189&loc=d3e6408-128476",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=6911189&loc=d3e6411-128476",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126966197&loc=d3e6578-128477",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "30",
   "SubTopic": "30",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126966197&loc=d3e6613-128477",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126966325&loc=d3e6819-128478",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126975305&loc=d3e6927-128479",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(4)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126975305&loc=d3e6927-128479",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r16": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.20)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(2)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126975305&loc=d3e6927-128479",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "805",
   "URI": "https://asc.fasb.org/topic&trid=2303972",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=126929396&loc=SL4569616-111683",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=126929396&loc=SL4569643-111683",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(3)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c),(3)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=125515794&loc=SL5618551-113959",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=125515794&loc=SL5624163-113959",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r168": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126731327&loc=d3e90193-114008",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126731327&loc=d3e90198-114008",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r17": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.21)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126731327&loc=d3e90205-114008",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "https://asc.fasb.org/extlink&oid=126976982&loc=d3e19207-110258",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13531-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13537-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594938&loc=d3e13537-108611",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=123444420&loc=d3e33268-110906",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Topic": "940",
   "URI": "https://asc.fasb.org/extlink&oid=126941158&loc=d3e41242-110953",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(10))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(11))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r179": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(15)(2))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r18": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.22)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r180": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(23))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r181": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(15))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r182": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(22))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r183": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126941378&loc=d3e61044-112788",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r184": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(10))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r185": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(15)(b)(2))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r186": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(10))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r187": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(12))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r188": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(4))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r189": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(25))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r19": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.24)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r190": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(8))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r191": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(18))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r192": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(8))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "985",
   "URI": "https://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "985",
   "URI": "https://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "https://asc.fasb.org/extlink&oid=6501960&loc=d3e128487-111756",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=SL6953423-111524",
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e5212-111524",
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e5093-111524",
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "320",
   "Topic": "940",
   "URI": "https://asc.fasb.org/extlink&oid=35711157&loc=d3e42567-110969",
   "role": "http://fasb.org/us-gaap/role/ref/otherTransitionRef"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(24))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r20": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29,30)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "105",
   "URI": "https://asc.fasb.org/extlink&oid=126987489&loc=SL124442142-165695",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "205",
   "URI": "https://asc.fasb.org/extlink&oid=109222650&loc=d3e1361-107760",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "205",
   "URI": "https://asc.fasb.org/extlink&oid=109222650&loc=SL51721683-107760",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6904-107765",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(12))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(13))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(14))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(15))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r21": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.29-31)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(16))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(17))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(18))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(4))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(4))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(9))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e637-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e681-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669686-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r22": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.3,4)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL34724391-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669619-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669619-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669619-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669625-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669625-108580",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL116659661-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442407-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442411-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r229": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124452729-227067",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r23": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02.30)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r230": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(24))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(25))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3291-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3000-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3521-108585",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=126899994&loc=d3e18726-107790",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(c))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(e)(1))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r24": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(i-k)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(2))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-04(a))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24072-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09)",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21914-107793",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21930-107793",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21711-107793",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(3)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22499-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r25": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669646-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r250": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22694-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r251": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22583-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22595-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22644-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22658-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124431687&loc=d3e22663-107794",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1448-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1505-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1252-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r26": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e637-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1707-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1757-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1500-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=SL5780133-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=SL5780133-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=126958026&loc=d3e1337-109256",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=128363288&loc=d3e3842-109258",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "https://asc.fasb.org/extlink&oid=125520817&loc=d3e70191-108054",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r27": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e640-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e5967-108592",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8657-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8721-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8721-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r28": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e681-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r280": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r281": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r282": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(j)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r283": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8813-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8813-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r286": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "26",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8844-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r287": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8864-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8864-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r289": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8864-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r29": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=SL7669686-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r290": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8864-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r291": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8864-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r292": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8864-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r294": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r295": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r296": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8924-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r298": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r299": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(a))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r30": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e689-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r300": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r301": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r302": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r303": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8933-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r304": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "34",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8981-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r305": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9031-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r306": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r307": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r308": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r309": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9054-108599",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r31": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126968391&loc=d3e557-108580",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r310": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "https://asc.fasb.org/topic&trid=2134510",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=124259787&loc=d3e4428-111522",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r312": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=124259787&loc=d3e4531-111522",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r313": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e4975-111524",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r314": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e5033-111524",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r315": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=123577603&loc=d3e5074-111524",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r316": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=84159169&loc=d3e10133-111534",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r317": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "323",
   "URI": "https://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r318": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=122640432&loc=SL121648383-210437",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255206&loc=SL82895884-210446",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r32": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(1))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r320": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919244-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r321": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "https://asc.fasb.org/extlink&oid=124255953&loc=SL82919249-210447",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r322": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=99380562&loc=d3e13770-109266",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r323": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r324": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r325": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r327": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r328": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r33": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(10))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r330": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=SL108378252-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13854-109267",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/subtopic&trid=2144439",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r335": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r336": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r337": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r338": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r339": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r34": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03(20))",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r340": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r341": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(d))",
   "Topic": "420",
   "URI": "https://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14326-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14435-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14435-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14557-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14557-108349",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=27011672&loc=d3e149879-122751",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r35": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Subparagraph": "(SAB Topic 5.Y.Q4)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=27011672&loc=d3e149879-122751",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r351": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "450",
   "URI": "https://asc.fasb.org/subtopic&trid=2127163",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r352": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=6397426&loc=d3e17499-108355",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "30",
   "Topic": "450",
   "URI": "https://asc.fasb.org/subtopic&trid=2127197",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(i))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii)(B))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iv))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(5))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(i))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r36": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.1,2)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r361": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(A))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r362": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(B))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iii)(C))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(4)(iv))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r366": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-02(a)(5))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442552-122756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r367": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r368": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r37": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.2)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495334-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r372": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495334-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495334-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1E",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495348-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r375": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1F",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495355-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r376": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1I",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495371-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r377": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1I",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495371-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r378": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1I",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495371-112611",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r379": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466204&loc=SL6036836-161870",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r38": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.4)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r380": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r383": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r384": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r385": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r386": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496171-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r387": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496171-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r388": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496171-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r389": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496180-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r39": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.8)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r390": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496189-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r391": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496189-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r392": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496189-112644",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r393": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.3-04)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=120397183&loc=d3e187085-122770",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r394": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126919976&loc=SL49130531-203044",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r395": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126919976&loc=SL49130532-203044",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r396": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130556-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r397": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130556-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r398": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130561-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r399": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130563-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(26)(b))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r40": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-03.9)",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=126953954&loc=SL114868664-224227",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130563-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r401": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130564-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r402": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r403": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r404": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r405": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130566-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r406": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130543-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r407": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130545-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r408": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130549-203045",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r409": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "https://asc.fasb.org/topic&trid=49130388",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r41": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=114868883&loc=SL114871943-224233",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r410": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "712",
   "URI": "https://asc.fasb.org/extlink&oid=6410195&loc=d3e80090-111668",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r411": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "712",
   "URI": "https://asc.fasb.org/topic&trid=2197446",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r412": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123453770&loc=d3e1703-114919",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r413": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123453770&loc=d3e1731-114919",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r414": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123453770&loc=SL108413299-114919",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r415": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r416": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r417": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(10)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r418": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r419": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r42": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3179-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r420": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r421": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r422": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r423": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r424": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(8)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r425": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(9)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r426": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r427": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r428": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r429": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r43": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3179-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r430": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r431": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r432": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r433": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r434": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(8)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r435": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r436": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r437": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r438": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iii)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r439": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r44": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3213-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r440": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r441": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(A)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r442": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(B)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r443": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(C)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r444": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(03)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r445": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r446": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r447": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r448": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r449": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r45": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3213-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r450": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r451": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r452": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r453": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r454": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r455": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r456": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r457": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(j)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r458": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r459": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r46": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3213-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r460": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r461": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r462": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(l)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r463": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(n)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r464": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(o)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r465": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(p)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r466": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(q)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r467": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r468": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r469": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2417-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r47": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3255-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r470": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2417-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r471": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2439-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r472": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r473": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r474": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r475": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r476": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r477": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r478": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r479": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r48": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3255-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r480": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r481": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2919-114920",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r482": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=21916913&loc=d3e273930-122802",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r483": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "60",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=6414203&loc=d3e39689-114964",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r484": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "60",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=6414203&loc=d3e39716-114964",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r485": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "70",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=49170846&loc=d3e28014-114942",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r486": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r487": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r488": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r489": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(d)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r49": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3291-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r490": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(e)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r491": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(e)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r492": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(f)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r493": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(f)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r494": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(f)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450657-114947",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r495": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "https://asc.fasb.org/topic&trid=2235017",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r496": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1D",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126961718&loc=SL116886442-113899",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r497": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126961718&loc=d3e4549-113899",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r498": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=126962052&loc=d3e4991-113900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r499": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(28))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r50": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3291-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r500": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r501": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r502": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r503": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r504": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r505": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r506": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r507": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r508": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r509": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r51": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3291-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r510": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r511": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r512": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r513": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r514": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r515": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r516": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r517": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r518": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r519": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r52": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21C",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=SL94080552-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r520": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r521": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r522": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r523": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r524": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r525": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r526": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r527": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r528": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(v)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r529": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(1)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r53": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3521-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r530": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r531": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r532": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r533": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(l)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r534": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128097895&loc=SL121327923-165333",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r535": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128097895&loc=SL121327923-165333",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r536": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128097895&loc=SL121327923-165333",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r537": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 14.D.2.Q6)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=122041274&loc=d3e301413-122809",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r538": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "https://asc.fasb.org/topic&trid=2228938",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r539": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e32247-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r54": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3536-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r540": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e32280-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r541": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e31917-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r542": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123427490&loc=d3e31931-109318",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r543": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32672-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r544": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r545": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32705-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r546": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32809-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r547": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32840-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r548": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r549": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r55": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r550": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r551": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r552": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32847-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r553": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32857-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r554": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r555": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r556": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r557": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=126983759&loc=SL121830611-158277",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r558": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(3)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=126983759&loc=SL121830611-158277",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r559": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.5.Q1)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r56": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r560": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 6.I.7)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r561": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.1)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r562": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.2)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r563": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.Fact.3)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r564": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.C)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330215-122817",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r565": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=123586238&loc=d3e38679-109324",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r566": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "270",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=6424409&loc=d3e44925-109338",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r567": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=6424122&loc=d3e41874-109331",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r568": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "https://asc.fasb.org/topic&trid=2144680",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r569": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=128092470&loc=d3e4946-128472",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r57": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r570": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=128092470&loc=d3e4946-128472",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r571": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(b)(1)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126975305&loc=d3e6927-128479",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r572": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)(1)",
   "Topic": "805",
   "URI": "https://asc.fasb.org/extlink&oid=126975305&loc=d3e6927-128479",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r573": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=126929396&loc=SL4569616-111683",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r574": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r575": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=116870748&loc=SL6758485-165988",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r576": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r577": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=109239629&loc=SL4573702-111684",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r578": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r579": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=123419778&loc=d3e5710-111685",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r58": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3044-108585",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r580": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126731327&loc=SL126733271-114008",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r581": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(3)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r582": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(4)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r583": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r584": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123594809&loc=SL116692626-108610",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r585": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123596393&loc=d3e14064-108612",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r586": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32136-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r587": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r588": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(b)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r589": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r59": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126999549&loc=d3e4273-108586",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r590": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r591": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r592": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6450520&loc=d3e32618-110901",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r593": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6897108&loc=SL6897125-166521",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r594": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "830",
   "URI": "https://asc.fasb.org/topic&trid=2175825",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r595": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r596": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918627-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r597": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123391704&loc=SL77918643-209977",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r598": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918666-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r599": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(29))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r60": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126999549&loc=d3e4297-108586",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r600": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r601": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r602": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r603": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(2)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r604": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r605": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r606": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918701-209980",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r607": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/subtopic&trid=77888251",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r608": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)(iii)(03)",
   "Topic": "848",
   "URI": "https://asc.fasb.org/extlink&oid=125980421&loc=SL125981372-237846",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r609": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r61": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126999549&loc=SL98516268-108586",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r610": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "910",
   "URI": "https://asc.fasb.org/extlink&oid=126937589&loc=SL119991595-234733",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r611": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "912",
   "URI": "https://asc.fasb.org/extlink&oid=126938201&loc=d3e55415-109406",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r612": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "350",
   "Subparagraph": "(a)",
   "Topic": "920",
   "URI": "https://asc.fasb.org/extlink&oid=120155617&loc=SL120155628-234783",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r613": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "350",
   "Subparagraph": "(b)",
   "Topic": "920",
   "URI": "https://asc.fasb.org/extlink&oid=120155617&loc=SL120155628-234783",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r614": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "350",
   "Subparagraph": "(a)",
   "Topic": "920",
   "URI": "https://asc.fasb.org/extlink&oid=120155617&loc=SL120155638-234783",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r615": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 11.L)",
   "Topic": "924",
   "URI": "https://asc.fasb.org/extlink&oid=6472922&loc=d3e499488-122856",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r616": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "926",
   "URI": "https://asc.fasb.org/extlink&oid=120154696&loc=d3e54445-107959",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r617": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "340",
   "Topic": "928",
   "URI": "https://asc.fasb.org/extlink&oid=6473545&loc=d3e61844-108004",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r618": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.9-03(10)(1))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=126897435&loc=d3e534808-122878",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r619": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(26))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r62": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "https://asc.fasb.org/topic&trid=2122369",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r620": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.9-04(27))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399700&loc=SL114874048-224260",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r621": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "235",
   "Subparagraph": "(SX 210.9-05(b)(2))",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=120399901&loc=d3e537907-122884",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r622": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "942",
   "URI": "https://asc.fasb.org/extlink&oid=124429447&loc=SL124453093-239630",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r623": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "210",
   "Subparagraph": "(SX 210.7-03(a)(23)(a)(3))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126734703&loc=d3e572229-122910",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r624": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(22))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r625": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(23))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r626": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "220",
   "Subparagraph": "(SX 210.7-04(9))",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=120400993&loc=SL114874131-224263",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r627": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124506351&loc=SL117782755-158439",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r628": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r629": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(1)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r630": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(2)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r631": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(i)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r632": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(2)(ii)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r633": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(2)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=124501264&loc=SL117420844-207641",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r634": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=123600520&loc=SL75241803-196195",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r635": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "310",
   "Subparagraph": "(SX 210.12-29(Footnote 4))",
   "Topic": "948",
   "URI": "https://asc.fasb.org/extlink&oid=120402547&loc=d3e617274-123014",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r636": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Topic": "954",
   "URI": "https://asc.fasb.org/extlink&oid=126942805&loc=d3e3115-115594",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r637": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Subparagraph": "(d)",
   "Topic": "958",
   "URI": "https://asc.fasb.org/extlink&oid=126982197&loc=d3e99779-112916",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r638": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "https://asc.fasb.org/extlink&oid=126982197&loc=d3e99893-112916",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r639": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "360",
   "Topic": "958",
   "URI": "https://asc.fasb.org/extlink&oid=126982197&loc=SL120174063-112916",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3630-109257",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r640": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column B))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r641": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column C))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r642": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column D))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r643": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column E))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r644": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column F))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r645": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column G))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r646": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column H))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r647": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Column I))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r648": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "360",
   "Subparagraph": "(SX 210.12-28(Footnote 2))",
   "Topic": "970",
   "URI": "https://asc.fasb.org/extlink&oid=120402810&loc=d3e638233-123024",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r649": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(c)",
   "Topic": "976",
   "URI": "https://asc.fasb.org/extlink&oid=6497875&loc=d3e22274-108663",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6327-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r650": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "310",
   "Subparagraph": "(b)",
   "Topic": "978",
   "URI": "https://asc.fasb.org/extlink&oid=126945304&loc=d3e27327-108691",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r651": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "985",
   "URI": "https://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r652": {
   "Footnote": "2",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r653": {
   "Footnote": "4",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "29",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r654": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column B",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r655": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column C",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r656": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column D",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r657": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column E",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r658": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column F",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r659": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column G",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r660": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column H",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r661": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "Column I",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r662": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "09",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r663": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(i)",
   "Subsection": "01",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r664": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(i)",
   "Subsection": "02",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r665": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iii)(A)",
   "Subsection": "01",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r666": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iii)(A)",
   "Subsection": "02",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r667": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iii)(B)",
   "Subsection": "01",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r668": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iii)(B)",
   "Subsection": "02",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r669": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iii)(C)",
   "Subsection": "02",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r670": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iv)",
   "Subsection": "01",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r671": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iv)",
   "Subsection": "02",
   "role": "http://www.xbrl.org/2003/role/disclosureRef"
  },
  "r672": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=124098289&loc=d3e6676-107765",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r673": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=126899994&loc=d3e18823-107790",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r674": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=126899994&loc=d3e18823-107790",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r675": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=128363288&loc=d3e4984-109258",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r676": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r677": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8924-108599",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r678": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=122137925&loc=d3e14258-109268",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r679": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69E",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466577&loc=SL123495743-112612",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r680": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "69F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466577&loc=SL123495745-112612",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r681": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "505",
   "URI": "https://asc.fasb.org/extlink&oid=126973232&loc=SL123496158-112644",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r682": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r683": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r684": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r685": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r686": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r687": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r688": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123450688&loc=d3e4179-114921",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r689": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123450688&loc=d3e4587-114921",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6404-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r690": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r691": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450673-114947",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r692": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=35742348&loc=SL14450788-114948",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r693": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r694": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r695": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r696": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4J",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=120409616&loc=SL4591551-111686",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r697": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4K",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "https://asc.fasb.org/extlink&oid=120409616&loc=SL4591552-111686",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r698": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=123414884&loc=SL77918982-209971",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r699": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=84165509&loc=d3e56426-112766",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(1))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6442-108592",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r700": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117783719-158441",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r701": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117783719-158441",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r702": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117819544-158441",
   "role": "http://www.xbrl.org/2003/role/exampleRef"
  },
  "r703": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r704": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r705": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-23",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r706": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r707": {
   "Name": "Form 10-K",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "310",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r708": {
   "Name": "Form 20-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "220",
   "Subsection": "f",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r709": {
   "Name": "Form 40-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "240",
   "Subsection": "f",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "275",
   "URI": "https://asc.fasb.org/topic&trid=2134479",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r710": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r711": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r712": {
   "Name": "Securities Act",
   "Number": "230",
   "Publisher": "SEC",
   "Section": "405",
   "role": "http://www.xbrl.org/2003/role/presentationRef"
  },
  "r713": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(12))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r714": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(17))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r715": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(3)(a)(4))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r716": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(9))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r717": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442407-227067",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r718": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124442411-227067",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r719": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "https://asc.fasb.org/extlink&oid=124431353&loc=SL124452729-227067",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8736-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r720": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3255-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r721": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3291-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r722": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r723": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3602-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r724": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "https://asc.fasb.org/extlink&oid=126954810&loc=d3e3098-108585",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r725": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(f))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r726": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(g)(1)(ii))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r727": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08(h)(1)(Note 1))",
   "Topic": "235",
   "URI": "https://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r728": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21914-107793",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r729": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21930-107793",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8813-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r730": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "https://asc.fasb.org/extlink&oid=124436220&loc=d3e21711-107793",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r731": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "https://asc.fasb.org/extlink&oid=124432515&loc=d3e3550-109257",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r732": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "275",
   "URI": "https://asc.fasb.org/extlink&oid=99393423&loc=d3e6351-108592",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r733": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8672-108599",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r734": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=124259787&loc=d3e4647-111522",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r735": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "323",
   "URI": "https://asc.fasb.org/extlink&oid=114001798&loc=d3e33918-111571",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r736": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r737": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r738": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r739": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e8906-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r740": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r741": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r742": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r743": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r744": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r745": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=SL108378252-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r746": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13854-109267",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r747": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=126905981&loc=d3e2443-110228",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r748": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=109226691&loc=d3e2941-110230",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r749": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "410",
   "URI": "https://asc.fasb.org/extlink&oid=6393242&loc=d3e13237-110859",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9031-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r750": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=121557415&loc=d3e14557-108349",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r751": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "20",
   "Subparagraph": "(SAB Topic 5.Y.Q2)",
   "Topic": "450",
   "URI": "https://asc.fasb.org/extlink&oid=27011672&loc=d3e149879-122751",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r752": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(ii))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r753": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.13-01(a)(4)(iii))",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=126975872&loc=SL124442526-122756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r754": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=123466505&loc=SL123495323-112611",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r755": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920106&loc=SL49130545-203045",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r756": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "https://asc.fasb.org/extlink&oid=126920602&loc=SL49130690-203046-203046",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r757": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r758": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r759": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(10)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "a",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r760": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r761": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r762": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r763": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r764": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r765": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r766": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(8)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r767": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(9)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r768": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r769": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "https://asc.fasb.org/extlink&oid=126901519&loc=d3e9038-108599",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r770": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r771": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r772": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r773": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r774": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r775": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r776": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(8)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r777": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r778": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r779": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 4.E)",
   "Topic": "310",
   "URI": "https://asc.fasb.org/extlink&oid=122038336&loc=d3e74512-122707",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r780": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(01)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r781": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r782": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(A)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r783": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(B)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r784": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(02)(C)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r785": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iv)(03)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r786": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r787": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r788": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r789": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "30",
   "Topic": "325",
   "URI": "https://asc.fasb.org/extlink&oid=6384206&loc=d3e41899-111602",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r790": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r791": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r792": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r793": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r794": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r795": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r796": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(h)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r797": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(i)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r798": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(j)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r799": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30)(a)(3))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(c)",
   "Topic": "325",
   "URI": "https://asc.fasb.org/extlink&oid=73718008&loc=d3e42732-111610",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r800": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r801": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r802": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(k)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r803": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(n)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r804": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(q)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r805": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e1928-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r806": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2410-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r807": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2417-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r808": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2417-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r809": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r810": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(1)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r811": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(2)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r812": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(3)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r813": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(4)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r814": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(5)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r815": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(6)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r816": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)(7)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r817": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2709-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r818": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=123447040&loc=d3e2919-114920",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r819": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "60",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=6414203&loc=d3e39716-114964",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r82": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=6388964&loc=d3e16225-109274",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r820": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=29639808&loc=d3e29008-114946",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r821": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450702-114947",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r822": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "80",
   "Subparagraph": "(b)",
   "Topic": "715",
   "URI": "https://asc.fasb.org/extlink&oid=65877416&loc=SL14450691-114947",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r823": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r824": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r825": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(3)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r826": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r827": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r828": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r829": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r83": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r830": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r831": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r832": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r833": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)(iv)(04)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r834": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r835": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r836": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r837": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(01)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r838": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(02)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r839": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)(iii)(03)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r84": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r840": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r841": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r842": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r843": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r844": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(i)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r845": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(ii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r846": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iii)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r847": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(iv)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r848": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)(2)(v)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r849": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(l)",
   "Topic": "718",
   "URI": "https://asc.fasb.org/extlink&oid=128089324&loc=d3e5070-113901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r85": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r850": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32687-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r851": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r852": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32718-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r853": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32537-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r854": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32621-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r855": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r856": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=121826272&loc=d3e32639-109319",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r857": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 6.I.7)",
   "Topic": "740",
   "URI": "https://asc.fasb.org/extlink&oid=122134291&loc=d3e330036-122817",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r858": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "808",
   "URI": "https://asc.fasb.org/extlink&oid=6931272&loc=SL5834143-161434",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r859": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)(3)",
   "Topic": "815",
   "URI": "https://asc.fasb.org/extlink&oid=126732423&loc=SL123482106-238011",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r86": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(1)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r860": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "https://asc.fasb.org/extlink&oid=123596393&loc=d3e14064-108612",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r861": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=123444420&loc=d3e33268-110906",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r862": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=118261656&loc=d3e32211-110900",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r863": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "830",
   "URI": "https://asc.fasb.org/extlink&oid=6450520&loc=d3e32583-110901",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r864": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918686-209980",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r865": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "https://asc.fasb.org/extlink&oid=128292326&loc=SL77918701-209980",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r866": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "850",
   "URI": "https://asc.fasb.org/extlink&oid=6457730&loc=d3e39599-107864",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r867": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r868": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "852",
   "URI": "https://asc.fasb.org/extlink&oid=124433192&loc=SL2890621-112765",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r869": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r87": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(2)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r870": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r871": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107207-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r872": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(1)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r873": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(2)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r874": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)(3)",
   "Topic": "860",
   "URI": "https://asc.fasb.org/extlink&oid=121570589&loc=d3e107314-111719",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r875": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4H",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=116884468&loc=SL65671331-158438",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r876": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(c)",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=126561865&loc=SL117783719-158441",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r877": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "https://asc.fasb.org/extlink&oid=123600520&loc=SL75241803-196195",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r878": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "985",
   "URI": "https://asc.fasb.org/extlink&oid=6501960&loc=d3e128462-111756",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r879": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(ii)",
   "Subsection": "01",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r88": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "https://asc.fasb.org/extlink&oid=66006027&loc=d3e16323-109275",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r880": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Paragraph": "(a)",
   "Publisher": "SEC",
   "Section": "13",
   "Subparagraph": "(4)(iii)",
   "Subsection": "01",
   "role": "http://www.xbrl.org/2009/role/commonPracticeRef"
  },
  "r89": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "05",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=109226317&loc=d3e202-110218",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r9": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.5-02(30))",
   "Topic": "210",
   "URI": "https://asc.fasb.org/extlink&oid=120391452&loc=d3e13212-122682",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r90": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=126905981&loc=d3e2611-110228",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r91": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r92": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=6391035&loc=d3e2868-110229",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.CC)",
   "Topic": "360",
   "URI": "https://asc.fasb.org/extlink&oid=27011434&loc=d3e125687-122742",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "360",
   "URI": "https://asc.fasb.org/topic&trid=2155823",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=124440162&loc=d3e12069-110248",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "460",
   "URI": "https://asc.fasb.org/extlink&oid=126907703&loc=d3e12565-110249",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "470",
   "URI": "https://asc.fasb.org/extlink&oid=99376301&loc=d3e1314-112600",
   "role": "http://fasb.org/us-gaap/role/ref/legacyRef"
  }
 },
 "version": "2.2"
}
