<?xml version="1.0" encoding="utf-8"?>
<xbrl
  xml:lang="en-US"
  xmlns="http://www.xbrl.org/2003/instance"
  xmlns:cpix="http://www.cumberlandpharma.com/20250310"
  xmlns:dei="http://xbrl.sec.gov/dei/2024"
  xmlns:ecd="http://xbrl.sec.gov/ecd/2024"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:us-gaap="http://fasb.org/us-gaap/2024"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xlink="http://www.w3.org/1999/xlink">
    <link:schemaRef xlink:href="cpix-20250310.xsd" xlink:type="simple"/>
    <context id="c-1">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
        </entity>
        <period>
            <startDate>2024-01-01</startDate>
            <endDate>2024-12-31</endDate>
        </period>
    </context>
    <context id="c-2">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
        </entity>
        <period>
            <startDate>2023-01-01</startDate>
            <endDate>2023-12-31</endDate>
        </period>
    </context>
    <context id="c-3">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
        </entity>
        <period>
            <startDate>2022-01-01</startDate>
            <endDate>2022-12-31</endDate>
        </period>
    </context>
    <context id="c-4">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
        </entity>
        <period>
            <startDate>2021-01-01</startDate>
            <endDate>2021-12-31</endDate>
        </period>
    </context>
    <context id="c-5">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
            <segment>
                <xbrldi:typedMember dimension="ecd:MeasureAxis">
                    <ecd:MeasureAxis.domain>1</ecd:MeasureAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-01-01</startDate>
            <endDate>2024-12-31</endDate>
        </period>
    </context>
    <context id="c-6">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
            <segment>
                <xbrldi:typedMember dimension="ecd:MeasureAxis">
                    <ecd:MeasureAxis.domain>2</ecd:MeasureAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-01-01</startDate>
            <endDate>2024-12-31</endDate>
        </period>
    </context>
    <context id="c-7">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
            <segment>
                <xbrldi:typedMember dimension="ecd:MeasureAxis">
                    <ecd:MeasureAxis.domain>3</ecd:MeasureAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-01-01</startDate>
            <endDate>2024-12-31</endDate>
        </period>
    </context>
    <context id="c-8">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0001087294</identifier>
            <segment>
                <xbrldi:typedMember dimension="ecd:MeasureAxis">
                    <ecd:MeasureAxis.domain>4</ecd:MeasureAxis.domain>
                </xbrldi:typedMember>
            </segment>
        </entity>
        <period>
            <startDate>2024-01-01</startDate>
            <endDate>2024-12-31</endDate>
        </period>
    </context>
    <unit id="usd">
        <measure>iso4217:USD</measure>
    </unit>
    <dei:AmendmentFlag contextRef="c-1" id="f-2">false</dei:AmendmentFlag>
    <dei:EntityCentralIndexKey contextRef="c-1" id="f-3">0001087294</dei:EntityCentralIndexKey>
    <dei:DocumentType contextRef="c-1" id="f-4">DEF 14A</dei:DocumentType>
    <dei:EntityRegistrantName contextRef="c-1" id="f-1">CUMBERLAND PHARMACEUTICALS INC.</dei:EntityRegistrantName>
    <cpix:TimingOfStockOptionAndOtherEquityAwardGrants contextRef="c-1" id="f-5">&lt;div style="margin-top:8pt;text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:120%"&gt;Timing of Stock Option and other Equity Award Grants&lt;/span&gt;&lt;/div&gt;Although the Company does not have a formal policy regarding the timing of awards of stock options, stock appreciation rights (&#x201c;SARs&#x201d;) and/or similar option-like instruments grants to the Company&#x2019;s named executive officers, the Company does not make these awards or any other form of equity compensation in anticipation of the release of material, non-public information. Similarly, the Company does not time the release of material, non-public information based on stock option, SARs or other equity award grant dates for the purpose of affecting the value of any award to the Company's named executive officers.</cpix:TimingOfStockOptionAndOtherEquityAwardGrants>
    <ecd:PvpTableTextBlock contextRef="c-1" id="f-6">&lt;div style="text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;margin-bottom:5pt;vertical-align:text-bottom;width:100.000%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:5.016%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:9.756%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:8.533%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:12.202%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:11.591%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:11.132%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:10.979%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:10.979%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;td style="width:1.0%"&gt;&lt;/td&gt;&lt;td style="width:9.912%"&gt;&lt;/td&gt;&lt;td style="width:0.1%"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:center;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Year&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Summary Comp Table Total for CEO&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Comp Actually Paid to CEO (1)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Average Summary Comp Table Total for non-CEO Named Executive Officers (2)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Average Comp Actually Paid to non-CEO Named Executive Officers&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Cumberland Total Shareholder Return&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Peer Group Total Shareholder Return (3)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Net Income (Loss) (4) (in thousands)&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="padding:2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:700;line-height:100%"&gt;Company Selected Measure - Adjusted Diluted EBIDTA Per Share (5) $&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2024&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,112,734&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;979,269&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;315,608&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;310,121&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;46.02&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;61.52&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;$&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 0;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6,480)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.01&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2023&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;979,680&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;952,530&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;326,890&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;307,023&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;34.79&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43.06&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(6,279)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.48&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2022&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;583,435&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;897,497&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;305,570&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;281,038&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;43.69&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;49.26&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(5,517)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.24&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2021&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,533,713&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;872,629&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;411,776&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;354,379&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;90.68&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;72.08&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,508)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.45&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;2020&lt;/span&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;1,032,497&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;786,997&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;256,248&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;350,837&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;57.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;69.83&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;(3,339)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;0.40&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;td colspan="3" style="display:none"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</ecd:PvpTableTextBlock>
    <ecd:PeoTotalCompAmt contextRef="c-1" decimals="INF" id="f-7" unitRef="usd">1112734</ecd:PeoTotalCompAmt>
    <ecd:PeoActuallyPaidCompAmt contextRef="c-1" decimals="INF" id="f-8" unitRef="usd">979269</ecd:PeoActuallyPaidCompAmt>
    <ecd:NonPeoNeoAvgTotalCompAmt contextRef="c-1" decimals="INF" id="f-9" unitRef="usd">315608</ecd:NonPeoNeoAvgTotalCompAmt>
    <ecd:NonPeoNeoAvgCompActuallyPaidAmt contextRef="c-1" decimals="INF" id="f-10" unitRef="usd">310121</ecd:NonPeoNeoAvgCompActuallyPaidAmt>
    <ecd:TotalShareholderRtnAmt contextRef="c-1" decimals="INF" id="f-11" unitRef="usd">46.02</ecd:TotalShareholderRtnAmt>
    <ecd:PeerGroupTotalShareholderRtnAmt contextRef="c-1" decimals="INF" id="f-12" unitRef="usd">61.52</ecd:PeerGroupTotalShareholderRtnAmt>
    <us-gaap:NetIncomeLoss contextRef="c-1" decimals="-3" id="f-13" unitRef="usd">-6480000</us-gaap:NetIncomeLoss>
    <cpix:AdjustedDilutedEBIDTAPerShare contextRef="c-1" decimals="INF" id="f-14" unitRef="usd">0.01</cpix:AdjustedDilutedEBIDTAPerShare>
    <ecd:PeoTotalCompAmt contextRef="c-2" decimals="INF" id="f-15" unitRef="usd">979680</ecd:PeoTotalCompAmt>
    <ecd:PeoActuallyPaidCompAmt contextRef="c-2" decimals="INF" id="f-16" unitRef="usd">952530</ecd:PeoActuallyPaidCompAmt>
    <ecd:NonPeoNeoAvgTotalCompAmt contextRef="c-2" decimals="INF" id="f-17" unitRef="usd">326890</ecd:NonPeoNeoAvgTotalCompAmt>
    <ecd:NonPeoNeoAvgCompActuallyPaidAmt contextRef="c-2" decimals="INF" id="f-18" unitRef="usd">307023</ecd:NonPeoNeoAvgCompActuallyPaidAmt>
    <ecd:TotalShareholderRtnAmt contextRef="c-2" decimals="INF" id="f-19" unitRef="usd">34.79</ecd:TotalShareholderRtnAmt>
    <ecd:PeerGroupTotalShareholderRtnAmt contextRef="c-2" decimals="INF" id="f-20" unitRef="usd">43.06</ecd:PeerGroupTotalShareholderRtnAmt>
    <us-gaap:NetIncomeLoss contextRef="c-2" decimals="-3" id="f-21" unitRef="usd">-6279000</us-gaap:NetIncomeLoss>
    <cpix:AdjustedDilutedEBIDTAPerShare contextRef="c-2" decimals="INF" id="f-22" unitRef="usd">0.48</cpix:AdjustedDilutedEBIDTAPerShare>
    <ecd:PeoTotalCompAmt contextRef="c-3" decimals="INF" id="f-23" unitRef="usd">583435</ecd:PeoTotalCompAmt>
    <ecd:PeoActuallyPaidCompAmt contextRef="c-3" decimals="INF" id="f-24" unitRef="usd">897497</ecd:PeoActuallyPaidCompAmt>
    <ecd:NonPeoNeoAvgTotalCompAmt contextRef="c-3" decimals="INF" id="f-25" unitRef="usd">305570</ecd:NonPeoNeoAvgTotalCompAmt>
    <ecd:NonPeoNeoAvgCompActuallyPaidAmt contextRef="c-3" decimals="INF" id="f-26" unitRef="usd">281038</ecd:NonPeoNeoAvgCompActuallyPaidAmt>
    <ecd:TotalShareholderRtnAmt contextRef="c-3" decimals="INF" id="f-27" unitRef="usd">43.69</ecd:TotalShareholderRtnAmt>
    <ecd:PeerGroupTotalShareholderRtnAmt contextRef="c-3" decimals="INF" id="f-28" unitRef="usd">49.26</ecd:PeerGroupTotalShareholderRtnAmt>
    <us-gaap:NetIncomeLoss contextRef="c-3" decimals="-3" id="f-29" unitRef="usd">-5517000</us-gaap:NetIncomeLoss>
    <cpix:AdjustedDilutedEBIDTAPerShare contextRef="c-3" decimals="INF" id="f-30" unitRef="usd">0.24</cpix:AdjustedDilutedEBIDTAPerShare>
    <ecd:PeoTotalCompAmt contextRef="c-4" decimals="INF" id="f-31" unitRef="usd">1533713</ecd:PeoTotalCompAmt>
    <ecd:PeoActuallyPaidCompAmt contextRef="c-4" decimals="INF" id="f-32" unitRef="usd">872629</ecd:PeoActuallyPaidCompAmt>
    <ecd:NonPeoNeoAvgTotalCompAmt contextRef="c-4" decimals="INF" id="f-33" unitRef="usd">411776</ecd:NonPeoNeoAvgTotalCompAmt>
    <ecd:NonPeoNeoAvgCompActuallyPaidAmt contextRef="c-4" decimals="INF" id="f-34" unitRef="usd">354379</ecd:NonPeoNeoAvgCompActuallyPaidAmt>
    <ecd:TotalShareholderRtnAmt contextRef="c-4" decimals="INF" id="f-35" unitRef="usd">90.68</ecd:TotalShareholderRtnAmt>
    <ecd:PeerGroupTotalShareholderRtnAmt contextRef="c-4" decimals="INF" id="f-36" unitRef="usd">72.08</ecd:PeerGroupTotalShareholderRtnAmt>
    <us-gaap:NetIncomeLoss contextRef="c-4" decimals="-3" id="f-37" unitRef="usd">-3508000</us-gaap:NetIncomeLoss>
    <cpix:AdjustedDilutedEBIDTAPerShare contextRef="c-4" decimals="INF" id="f-38" unitRef="usd">0.45</cpix:AdjustedDilutedEBIDTAPerShare>
    <cpix:CEO contextRef="c-1" id="f-39">Mr. Kazimi serves as CEO since 2000.</cpix:CEO>
    <ecd:NamedExecutiveOfficersFnTextBlock contextRef="c-1" id="f-40">In the years of 2024 and 2023, the other NEOs were Messrs. Herman, Anthony, Bitterman and Hamm. In 2022, the other NEOs were Messrs. Pavliv, Herman, Anthony, Bitterman and Hamm. In 2021, the other NEOs were Messrs. Cearnal, Pavliv, Herman and Hamm. In 2020 the other NEOs were Messrs. Cearnal, Pavliv, Herman and Bonner.</ecd:NamedExecutiveOfficersFnTextBlock>
    <cpix:NetIncomeExplain contextRef="c-1" id="f-41">Net income (loss) for 2024 includes $0.2 million for a payout earned on company owned insurance policies. Net income (loss) for 2023 includes a $2.8 million refund of FDA fees for the periods of 2023 and 2022, a gain of $0.5 million to settle a manufacturing dispute and a gain of $0.3 million for a payout earned on a company owned insurance policy. Net income (loss) for 2022 includes a gain from an insurance settlement in the amount of $0.6 million. Net income (loss) for 2021 includes income from discontinued operations in the amounts of $1.994 million.</cpix:NetIncomeExplain>
    <cpix:AdjustedEBITDAExplain contextRef="c-1" id="f-42">Adjusted Diluted EBITDA Per Share is calculated using adjusted EBITDA divided by diluted weighted average common shares outstanding. Adjusted EBITDA excludes the impact of (i) income tax expense (benefit), depreciation and amortization, share based compensation, the cost of non-cash cost of goods sold, write-down of expired inventory and interest income and expense.</cpix:AdjustedEBITDAExplain>
    <ecd:AdjToPeoCompFnTextBlock contextRef="c-1" id="f-43">To calculate the compensation "actually paid" to the CEO for 2024 in the Summary Compensation Table ("SCT"), an amount equal to $133,465 was deducted, representing the result of the stock calculations required by Item 402(v)(2)(iii)(C) of Regulation S-K.</ecd:AdjToPeoCompFnTextBlock>
    <ecd:AdjToPeoCompFnTextBlock contextRef="c-2" id="f-44">To calculate the compensation "actually paid" to the CEO for 2023 in the SCT, deferred compensation of $20,000 was deducted  and an amount equal to $7,150 was deducted, representing the result of the stock calculations required by Item 402(v)(2)(iii)(C) of Regulation S-K.</ecd:AdjToPeoCompFnTextBlock>
    <ecd:AdjToPeoCompFnTextBlock contextRef="c-3" id="f-45">To calculate the compensation "actually paid" to the CEO for 2022, the stock awards value of $51,800 in the SCT was deducted, deferred compensation of $20,000 was deducted and an amount equal to $385,862 was added, representing the result of the stock calculations required by Item 402(v)(2)(iii)(C) of Regulation S-K.</ecd:AdjToPeoCompFnTextBlock>
    <ecd:AdjToNonPeoNeoCompFnTextBlock contextRef="c-1" id="f-46">To calculate the compensation "actually paid" to the other NEOs for 2024, the average adjustment amounts included an amount equal to $5,487 was deducted, representing the result of the stock calculations required by Item 402(v)(2)(iii)(C) of Regulation S-K.</ecd:AdjToNonPeoNeoCompFnTextBlock>
    <ecd:AdjToNonPeoNeoCompFnTextBlock contextRef="c-2" id="f-47">To calculate the compensation "actually paid" to the other NEOs for 2023, the average adjustment amounts included deferred compensation of $20,000 was deducted and an amount equal to $133 was added, representing the result of the stock calculations required by Item 402(v)(2)(iii)(C) of Regulation S-K.</ecd:AdjToNonPeoNeoCompFnTextBlock>
    <ecd:AdjToNonPeoNeoCompFnTextBlock contextRef="c-3" id="f-48">To calculate the compensation "actually paid" to other the NEOs for 2022, the average adjustment amounts included the stock awards value of $12,950 in the SCT was deducted, deferred compensation of $20,000 was deducted and an amount equal to $8,418 was added, representing the result of the stock calculations required by Item 402(v)(2)(iii)(C) of Regulation S-K.</ecd:AdjToNonPeoNeoCompFnTextBlock>
    <cpix:PEOYearToYearPaymentAnalysis contextRef="c-1" id="f-49">&lt;div style="margin-top:8pt;text-align:justify;text-indent:18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From 2023 to 2024, compensation actually paid to the CEO increased by $26,739  or 2.8%. Over the same period, the Company&#x2019;s Total Shareholder Return ("TSR") increased by 32.3%, while adjusted EBITDA per diluted share decreased by 98.0%. Net income (loss) for 2024, includes $0.2 million for a payout earned on company owned insurance policies. Comparing the operating loss from 2023 to 2024, operating results improved by 32.7%. Some key factors that drove the changes in compensation actually paid to the CEO were an increase in salary.&lt;/span&gt;&lt;/div&gt;</cpix:PEOYearToYearPaymentAnalysis>
    <cpix:PEOYearToYearPaymentAnalysis contextRef="c-2" id="f-50">From 2022 to 2023, compensation actually paid to the CEO increased by $55,033  or 6.1%. Over the same period, the Company&#x2019;s TSR decreased by 20.4%, while adjusted EBITDA per diluted share increased by 100%. Net income (loss) for 2023, includes a $2.8 million refund of FDA fees for the periods of 2023 and 2022, a gain of $0.5 million to settle a manufacturing dispute and a gain of $0.3 million for a payout earned on a company owned insurance policy. Comparing the operating loss from 2022 to 2023, operating results decreased by 67.5%. Some key factors that drove the changes in compensation actually paid to the CEO were an increase in salary.</cpix:PEOYearToYearPaymentAnalysis>
    <cpix:PEOYearToYearPaymentAnalysis contextRef="c-3" id="f-51">&lt;div style="margin-top:8pt;text-align:justify;text-indent:18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From 2021 to 2022, compensation actually paid to the CEO increased by $24,868  or 2.8%. Over the same period, the company&#x2019;s TSR decreased by 52%, while adjusted EBITDA per diluted share decreased by 47%. Net income (loss) for 2021 includes several one time gains/income including an increase for discontinued operations of $2 million and a gain from the forgiveness of the PPP loan in the amount of $2.2 million. Operating income (loss) excludes the impact of other gains and losses. Comparing the operating loss from 2021 to 2022, operating results improved by 26%. Some key factors that drove the changes in compensation actually paid to the CEO were an increase in salary and deferred compensation. &lt;/span&gt;&lt;/div&gt;&lt;div style="margin-top:8pt;text-align:justify;text-indent:18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From 2020 to 2021, compensation actually paid to the CEO increased by $85,632 or 10.9%. Over the same period, the company&#x2019;s TSR increased by 58%. Some key factors that drove the changes in compensation actually paid to the CEO were an increase in salary and bonus compensation.&lt;/span&gt;&lt;/div&gt;</cpix:PEOYearToYearPaymentAnalysis>
    <cpix:NonCEOYearToYearCompensationAnalysis contextRef="c-1" id="f-52">From 2023 to 2024, compensation actually paid to the other NEOs increased by $3,098 or 1.0%. Over the same period, the company&#x2019;s TSR increased by 32.3%, while adjusted EBITDA per diluted share decreased by 98.0%. Net income (loss) for 2024, includes $0.2 million for a payout earned on company owned insurance policies.  Comparing the operating loss from 2023 to 2024, operating results improved by 32.7%. Some key factors that drove the changes in compensation actually paid to the NEO were an increase in salary.</cpix:NonCEOYearToYearCompensationAnalysis>
    <cpix:NonCEOYearToYearCompensationAnalysis contextRef="c-2" id="f-53">From 2022 to 2023, compensation actually paid to the other NEOs decreased by $25,985 or 9.0%. Over the same period, the company&#x2019;s TSR decreased by 20.4%, while adjusted EBITDA per diluted share increased by 100%. Net income (loss) for 2023, includes a $2.8 million refund of FDA fees for the periods of 2023 and 2022, a gain of $0.5 million to settle a manufacturing dispute and a gain of $0.3 million for a payout earned on a company owned insurance policy. Comparing the operating loss from 2022 to 2023, operating results decreased by 67.5%. Some key factors that drove the changes in compensation actually paid to the NEO were an increase in salary.</cpix:NonCEOYearToYearCompensationAnalysis>
    <cpix:NonCEOYearToYearCompensationAnalysis contextRef="c-3" id="f-54">&lt;div style="margin-top:8pt;text-align:justify;text-indent:18pt"&gt;&lt;span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;From 2021 to 2022, compensation paid to the other NEOs declined by $73,341 or 21%. Over the same period, the company&#x2019;s TSR decreased by 52%, while adjusted EBITDA per diluted share decreased by 47%. Net income (loss) for 2021 includes several one-time gains/income including an increase for discontinued operations of $2 million and a gain from the forgiveness of the PPP loan in the amount of $2.2 million. Operating income (loss) excludes the impact of other gains and losses. Comparing the operating loss from 2021 to 2022, operating results improved by 26%. Some key factors that drove the decrease in pay during this period were leadership transitions within the NEO group, including a partial year of service by the Executive VP of Sales and Marketing. &lt;/span&gt;&lt;/div&gt;From 2020 to 2021, compensation actually paid to the other NEOs increased by $3,542 or 1.1%. Over the same period, the company&#x2019;s TSR increased by 58%. Some key factors that drove the changes in compensation actually paid to the other NEO Group were declines in salary and bonus.</cpix:NonCEOYearToYearCompensationAnalysis>
    <cpix:ComparisonOfTotalShareholderReturnAssumesInitialInvestmentOf100 contextRef="c-1" id="f-55">&lt;div style="margin-top:8pt;text-align:center;text-indent:18pt"&gt;&lt;img alt="8550" src="cpix-20250310_g3.jpg" style="height:380px;margin-bottom:5pt;vertical-align:text-bottom;width:650px"/&gt;&lt;/div&gt;</cpix:ComparisonOfTotalShareholderReturnAssumesInitialInvestmentOf100>
    <ecd:MeasureName contextRef="c-5" id="f-56">Net Revenue</ecd:MeasureName>
    <ecd:MeasureName contextRef="c-6" id="f-57">Cash Flow from Operations</ecd:MeasureName>
    <ecd:MeasureName contextRef="c-7" id="f-58">EPS before EBITDA</ecd:MeasureName>
    <ecd:MeasureName contextRef="c-8" id="f-59">Adjusted Earnings</ecd:MeasureName>
</xbrl>
