{"id":16569,"date":"2026-08-26T15:52:25","date_gmt":"2026-08-26T13:52:25","guid":{"rendered":"https:\/\/www.chromacon.com\/?post_type=articles&#038;p=16569"},"modified":"2026-08-28T12:31:05","modified_gmt":"2026-08-28T10:31:05","slug":"validating-mcsgp-process-characterization-and-ppq-at-commercial-scale","status":"publish","type":"articles","link":"https:\/\/www.chromacon.com\/en\/articles\/validating-mcsgp-process-characterization-and-ppq-at-commercial-scale\/","title":{"rendered":"Validating MCSGP: Process Characterization and PPQ for Peptide Purification"},"content":{"rendered":"\n<!-- Research Highlight \u2014 MCSGP Process Validation (PC\/PPQ) \u2014 v1.0 -->\n<style>\n        \/* ==========================================\n           CSS VARIABLES - Customize your fonts\/colors here\n           ========================================== *\/\n        :root {\n            \/* Colors - modify these to match your WordPress theme *\/\n            --color-primary: #1a365d;\n            --color-primary-light: #2c5282;\n            --color-accent: #3182ce;\n            --color-accent-light: #63b3ed;\n            --color-text: #2d3748;\n            --color-text-light: #718096;\n            --color-bg: #ffffff;\n            --color-bg-alt: #f7fafc;\n            --color-bg-card: #edf2f7;\n            --color-border: #e2e8f0;\n\n            \/* Fonts - modify these to match your WordPress theme *\/\n            --font-heading: inherit;\n            --font-body: inherit;\n\n            \/* Spacing *\/\n            --space-xs: 0.5rem;\n            --space-sm: 1rem;\n            --space-md: 1.5rem;\n            --space-lg: 2rem;\n            --space-xl: 3rem;\n            --space-2xl: 4rem;\n\n            \/* Layout *\/\n            --max-width: 900px;\n            --sidebar-width: 260px;\n        }\n\n        \/* ==========================================\n           BASE STYLES\n           ========================================== *\/\n        *, *::before, *::after {\n            box-sizing: border-box;\n        }\n\n        html {\n            scroll-behavior: smooth;\n        }\n\n        body {\n            margin: 0;\n            padding: 0;\n            font-family: var(--font-body);\n            color: var(--color-text);\n            background: var(--color-bg);\n            line-height: 1.7;\n            font-size: 17px;\n        }\n\n        img {\n            max-width: 100%;\n            height: auto;\n            display: block;\n        }\n\n        \/* ==========================================\n           LAYOUT\n           ========================================== *\/\n        .article-wrapper {\n            display: flex;\n            max-width: 1400px;\n            margin: 0 auto;\n            position: relative;\n        }\n\n        .article-main {\n            flex: 1;\n            max-width: var(--max-width);\n            margin: 0 auto;\n            padding: var(--space-lg);\n        }\n\n        \/* Sidebar \/ Table of Contents *\/\n        .article-sidebar {\n            width: var(--sidebar-width);\n            flex-shrink: 0;\n            padding: var(--space-lg);\n            display: none;\n        }\n\n        @media (min-width: 1200px) {\n            .article-sidebar {\n                display: block;\n            }\n\n            .article-wrapper {\n                padding-left: var(--space-lg);\n            }\n        }\n\n        .toc {\n            position: sticky;\n            top: var(--space-lg);\n        }\n\n        .toc-title {\n            font-size: 0.75rem;\n            text-transform: uppercase;\n            letter-spacing: 0.1em;\n            color: var(--color-text-light);\n            margin-bottom: var(--space-sm);\n            font-weight: 600;\n        }\n\n        .toc-list {\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .toc-list li {\n            margin-bottom: var(--space-xs);\n        }\n\n        .toc-list a {\n            color: var(--color-text-light);\n            text-decoration: none;\n            font-size: 0.875rem;\n            display: block;\n            padding: var(--space-xs) 0;\n            border-left: 2px solid transparent;\n            padding-left: var(--space-sm);\n            transition: all 0.2s ease;\n        }\n\n        .toc-list a:hover,\n        .toc-list a.active {\n            color: var(--color-accent);\n            border-left-color: var(--color-accent);\n        }\n\n        \/* ==========================================\n           HERO SECTION\n           ========================================== *\/\n        .article-hero {\n            background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);\n            color: white;\n            padding: var(--space-2xl) var(--space-lg);\n            margin: calc(-1 * var(--space-lg));\n            margin-bottom: var(--space-xl);\n            border-radius: 0 0 2rem 2rem;\n        }\n\n        .article-hero h2 {\n            font-family: var(--font-heading);\n            font-size: clamp(2rem, 5vw, 2.75rem);\n            margin: 0 0 var(--space-md);\n            line-height: 1.2;\n            font-weight: 700;\n            color: white;\n        }\n\n        .article-hero .lead {\n            font-size: 1.2rem;\n            color: white;\n            max-width: 700px;\n            margin: 0;\n        }\n\n        \/* ==========================================\n           TYPOGRAPHY\n           ========================================== *\/\n        h2 {\n            font-family: var(--font-heading);\n            font-size: 1.75rem;\n            color: var(--color-primary);\n            margin: var(--space-2xl) 0 var(--space-md);\n            padding-bottom: var(--space-sm);\n            border-bottom: 2px solid var(--color-border);\n            scroll-margin-top: var(--space-lg);\n        }\n\n        h3 {\n            font-family: var(--font-heading);\n            font-size: 1.35rem;\n            color: var(--color-accent);\n            margin: var(--space-xl) 0 var(--space-sm);\n        }\n\n        h4 {\n            font-family: var(--font-heading);\n            font-size: 1.15rem;\n            color: var(--color-text);\n            margin: var(--space-lg) 0 var(--space-xs);\n        }\n\n        p {\n            margin: 0 0 var(--space-md);\n        }\n\n        strong {\n            color: var(--color-primary);\n        }\n\n        \/* ==========================================\n           KEY CONCEPT CALLOUT\n           ========================================== *\/\n        .callout {\n            background: var(--color-bg-alt);\n            border-left: 4px solid var(--color-accent);\n            padding: var(--space-md) var(--space-lg);\n            margin: var(--space-lg) 0;\n            border-radius: 0 0.5rem 0.5rem 0;\n        }\n\n        .callout p {\n            margin: 0;\n            font-size: 1.15rem;\n        }\n\n        .callout strong {\n            color: var(--color-accent);\n        }\n\n        \/* ==========================================\n           LISTS - Card Style\n           ========================================== *\/\n        .card-list {\n            list-style: none;\n            padding: 0;\n            margin: var(--space-lg) 0;\n            display: grid;\n            gap: var(--space-sm);\n        }\n\n        .card-list li {\n            background: var(--color-bg);\n            padding: var(--space-md);\n            border-radius: 0.75rem;\n            border: 1px solid var(--color-border);\n            transition: transform 0.2s ease, box-shadow 0.2s ease;\n            font-size: 16px;\n        }\n\n        .card-list li:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n        }\n\n        .card-list li strong {\n            display: block;\n            margin-bottom: var(--space-xs);\n            font-size: 1.1rem;\n            color: var(--color-accent);\n        }\n\n        \/* Simple inline lists *\/\n        .simple-list {\n            padding-left: var(--space-lg);\n            margin: var(--space-md) 0;\n        }\n\n        .simple-list li {\n            margin-bottom: var(--space-xs);\n        }\n\n        \/* Nested lists *\/\n        .nested-list {\n            padding-left: var(--space-lg);\n            margin: var(--space-sm) 0;\n        }\n\n        .nested-list li {\n            margin-bottom: var(--space-xs);\n        }\n\n        \/* ==========================================\n           TWO-COLUMN GRID\n           ========================================== *\/\n        .two-col-grid {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: var(--space-md);\n            margin: var(--space-lg) 0;\n        }\n\n        @media (min-width: 640px) {\n            .two-col-grid {\n                grid-template-columns: 1fr 1fr;\n            }\n        }\n\n        .grid-card {\n            background: var(--color-bg);\n            padding: var(--space-md);\n            border-radius: 0.75rem;\n            border: 1px solid var(--color-border);\n            font-size: 16px;\n        }\n\n        .grid-card h4 {\n            margin-top: 0;\n            color: var(--color-accent);\n        }\n\n        .grid-card p:last-child {\n            margin-bottom: 0;\n        }\n\n        \/* ==========================================\n           IMAGES\n           ========================================== *\/\n        .article-image {\n            margin: var(--space-xl) 0;\n            border-radius: 1rem;\n            overflow: hidden;\n            box-shadow: 0 4px 20px rgba(0,0,0,0.1);\n        }\n\n        .article-image img {\n            width: 100%;\n        }\n\n        .article-image figcaption {\n            background: var(--color-bg-alt);\n            padding: var(--space-sm) var(--space-md);\n            font-size: 0.875rem;\n            color: var(--color-text-light);\n            text-align: center;\n        }\n\n        \/* ==========================================\n           ANALOGY BOX\n           ========================================== *\/\n        .analogy-box {\n            background: linear-gradient(135deg, var(--color-bg-card) 0%, var(--color-bg-alt) 100%);\n            border-radius: 1rem;\n            padding: var(--space-lg);\n            margin: var(--space-xl) 0;\n            border: 1px solid var(--color-border);\n        }\n\n        .analogy-box h4 {\n            margin-top: 0;\n            display: flex;\n            align-items: center;\n            gap: var(--space-xs);\n        }\n\n        .analogy-box h4::before {\n            content: \"\ud83d\udca1\";\n        }\n\n        \/* ==========================================\n           COMPONENT GRID\n           ========================================== *\/\n        .component-grid {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: var(--space-md);\n            margin: var(--space-lg) 0;\n        }\n\n        @media (min-width: 640px) {\n            .component-grid {\n                grid-template-columns: repeat(2, 1fr);\n            }\n        }\n\n        @media (min-width: 900px) {\n            .component-grid {\n                grid-template-columns: repeat(3, 1fr);\n            }\n        }\n\n        .component-card {\n            background: var(--color-bg);\n            border: 1px solid var(--color-border);\n            border-radius: 0.75rem;\n            padding: var(--space-md);\n            transition: all 0.2s ease;\n        }\n\n        .component-card:hover {\n            border-color: var(--color-accent);\n            box-shadow: 0 4px 12px rgba(0,0,0,0.08);\n        }\n\n        .component-card strong {\n            display: block;\n            font-size: 1.05rem;\n            margin-bottom: var(--space-xs);\n            color: var(--color-accent);\n        }\n\n        .component-card p {\n            font-size: 0.95rem;\n            color: var(--color-text-light);\n            margin: 0;\n        }\n\n        \/* ==========================================\n           CHROMATOGRAM FEATURES\n           ========================================== *\/\n        .feature-list {\n            list-style: none;\n            padding: 0;\n            margin: var(--space-lg) 0;\n        }\n\n        .feature-list li {\n            display: flex;\n            gap: var(--space-md);\n            padding: var(--space-md) 0;\n            border-bottom: 1px solid var(--color-border);\n        }\n\n        .feature-list li:last-child {\n            border-bottom: none;\n        }\n\n        .feature-label {\n            flex-shrink: 0;\n            width: 140px;\n            font-weight: 600;\n            color: var(--color-primary);\n        }\n\n        @media (max-width: 480px) {\n            .feature-list li {\n                flex-direction: column;\n                gap: var(--space-xs);\n            }\n\n            .feature-label {\n                width: auto;\n            }\n        }\n\n        \/* ==========================================\n           COMPARISON SECTION\n           ========================================== *\/\n        .comparison-section {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: var(--space-lg);\n            margin: var(--space-xl) 0;\n        }\n\n        @media (min-width: 768px) {\n            .comparison-section {\n                grid-template-columns: 1fr 1fr;\n            }\n        }\n\n        .comparison-card {\n            background: var(--color-bg);\n            border: 2px solid var(--color-border);\n            border-radius: 1rem;\n            overflow: hidden;\n        }\n\n        .comparison-card.analytical {\n            border-color: var(--color-accent-light);\n        }\n\n        .comparison-card.preparative {\n            border-color: var(--color-primary);\n        }\n\n        .comparison-header {\n            padding: var(--space-sm) var(--space-md);\n            font-weight: 700;\n            font-size: 1rem;\n        }\n\n        .comparison-card.analytical .comparison-header {\n            background: var(--color-accent-light);\n            color: var(--color-primary);\n        }\n\n        .comparison-card.preparative .comparison-header {\n            background: var(--color-primary);\n            color: white;\n        }\n\n        .comparison-content {\n            padding: var(--space-sm) var(--space-md);\n            font-size: 0.875rem;\n        }\n\n        .comparison-content ul {\n            list-style: none;\n            padding: 0;\n            margin: 0;\n        }\n\n        .comparison-content li {\n            padding: 0.35rem 0;\n            border-bottom: 1px solid var(--color-border);\n            display: flex;\n            gap: var(--space-xs);\n        }\n\n        .comparison-content li:last-child {\n            border-bottom: none;\n        }\n\n        .comparison-content li strong {\n            flex-shrink: 0;\n            width: 75px;\n            color: var(--color-text-light);\n            font-weight: 600;\n            font-size: 0.8rem;\n        }\n\n        \/* ==========================================\n           TABLE - Glossary\n           ========================================== *\/\n        .glossary-table {\n            width: 100%;\n            border-collapse: collapse;\n            margin: var(--space-lg) 0;\n            font-size: 0.95rem;\n        }\n\n        .glossary-table thead {\n            background: var(--color-primary);\n            color: white;\n        }\n\n        .glossary-table th {\n            padding: var(--space-md);\n            text-align: left;\n            font-weight: 600;\n            color: white !important;\n        }\n\n        .glossary-table td {\n            padding: var(--space-md);\n            border-bottom: 1px solid var(--color-border);\n            vertical-align: top;\n        }\n\n        .glossary-table tr:hover td {\n            background: var(--color-bg-alt);\n        }\n\n        .glossary-table td:first-child {\n            font-weight: 600;\n            color: var(--color-primary);\n            white-space: nowrap;\n            width: 220px;\n        }\n\n        @media (max-width: 640px) {\n            .glossary-table {\n                display: block;\n            }\n\n            .glossary-table thead {\n                display: none;\n            }\n\n            .glossary-table tbody {\n                display: block;\n            }\n\n            .glossary-table tr {\n                display: block;\n                margin-bottom: var(--space-md);\n                background: var(--color-bg-alt);\n                border-radius: 0.5rem;\n                overflow: hidden;\n            }\n\n            .glossary-table td {\n                display: block;\n                border-bottom: none;\n            }\n\n            .glossary-table td:first-child {\n                width: auto;\n                white-space: normal;\n                background: var(--color-primary);\n                color: white;\n                padding: var(--space-sm) var(--space-md);\n            }\n        }\n\n        \/* ==========================================\n           FAQ ACCORDION\n           ========================================== *\/\n        .faq-section {\n            margin: var(--space-xl) 0;\n        }\n\n        .faq-item {\n            border: 1px solid var(--color-border);\n            border-radius: 0.75rem;\n            margin-bottom: var(--space-sm);\n            overflow: hidden;\n            transition: box-shadow 0.2s ease;\n        }\n\n        .faq-item:hover {\n            box-shadow: 0 2px 8px rgba(0,0,0,0.06);\n        }\n\n        .faq-question {\n            width: 100%;\n            background: var(--color-bg);\n            border: none;\n            padding: var(--space-md) var(--space-lg);\n            text-align: left;\n            cursor: pointer;\n            font-size: 1.05rem;\n            font-weight: 600;\n            color: var(--color-primary);\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            gap: var(--space-md);\n            font-family: inherit;\n        }\n\n        .faq-question::after {\n            content: \"+\";\n            font-size: 1.5rem;\n            font-weight: 300;\n            color: var(--color-accent);\n            transition: transform 0.2s ease;\n        }\n\n        .faq-item.open .faq-question::after {\n            transform: rotate(45deg);\n        }\n\n        .faq-answer {\n            max-height: 0;\n            overflow: hidden;\n            transition: max-height 0.3s ease;\n        }\n\n        .faq-item.open .faq-answer {\n            max-height: 1000px;\n        }\n\n        .faq-answer-inner {\n            padding: 0 var(--space-lg) var(--space-lg);\n            border-top: 1px solid var(--color-border);\n            padding-top: var(--space-md);\n        }\n\n        .faq-answer-inner p:last-child,\n        .faq-answer-inner ul:last-child {\n            margin-bottom: 0;\n        }\n\n        \/* ==========================================\n           MOBILE TABLE OF CONTENTS\n           ========================================== *\/\n        .mobile-toc {\n            display: block;\n            background: var(--color-bg-alt);\n            border-radius: 0.75rem;\n            padding: var(--space-md);\n            margin-bottom: var(--space-xl);\n        }\n\n        @media (min-width: 1200px) {\n            .mobile-toc {\n                display: none;\n            }\n        }\n\n        .mobile-toc-toggle {\n            width: 100%;\n            background: none;\n            border: none;\n            font-family: inherit;\n            font-size: 0.875rem;\n            font-weight: 600;\n            color: var(--color-primary);\n            cursor: pointer;\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 0;\n        }\n\n        .mobile-toc-toggle::after {\n            content: \"\u25bc\";\n            font-size: 0.75rem;\n            transition: transform 0.2s ease;\n        }\n\n        .mobile-toc.open .mobile-toc-toggle::after {\n            transform: rotate(180deg);\n        }\n\n        .mobile-toc-list {\n            display: none;\n        }\n\n        .mobile-toc.open .mobile-toc-list {\n            display: block;\n        }\n\n        .mobile-toc-list ul {\n            list-style: none;\n            padding: 0;\n            margin: var(--space-sm) 0 0;\n        }\n\n        .mobile-toc-list li {\n            margin-bottom: var(--space-xs);\n        }\n\n        .mobile-toc-list a {\n            color: var(--color-text-light);\n            text-decoration: none;\n            font-size: 0.875rem;\n            display: block;\n            padding: var(--space-xs) 0;\n        }\n\n        .mobile-toc-list a:hover {\n            color: var(--color-accent);\n        }\n\n        \/* ==========================================\n           UTILITY CLASSES\n           ========================================== *\/\n        .visually-hidden {\n            position: absolute;\n            width: 1px;\n            height: 1px;\n            padding: 0;\n            margin: -1px;\n            overflow: hidden;\n            clip: rect(0, 0, 0, 0);\n            white-space: nowrap;\n            border: 0;\n        }\n\n        \/* ==========================================================\n           ADDITIONS FOR THIS ARTICLE TYPE (research highlight)\n           Everything above is the base stylesheet, unchanged.\n           Everything below is new and uses the same tokens.\n           ========================================================== *\/\n\n        :root {\n            \/* Figure colors are categorical per parameter, following Figure 3 of the\n               article: cyan = flow rate \/ linear velocity, green = gradient slope,\n               navy = column load, orange = detection wavelength. They identify the\n               parameter, not a verdict. Literal hex is repeated in the SVG because\n               presentation attributes cannot read CSS custom properties. *\/\n            --fig-velocity: #2E9BC0;\n            --fig-slope: #2E9B4F;\n            --fig-load: #1F3A5F;\n            --fig-wavelength: #E1793A;\n\n            --color-green: #1b7a4b;        \/* green eluent \/ MCSGP *\/\n            --color-green-light: #e2efe7;\n            --color-flag: #c0392b;         \/* conventional ACN-TFA pool *\/\n            --color-flag-light: #f8e3dd;\n            --color-cyan-light: #dcedf4;   \/* weak-side recycling *\/\n            --font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\n        }\n\n        \/* MOBILE OVERFLOW FIX\n           .article-main is a flex item, so its default min-width:auto prevents it\n           from shrinking below the intrinsic width of its widest child. The results\n           table is ~620px min-content, which pushed the whole page to 684px on a\n           360px screen. min-width:0 lets the flex item shrink; the table then\n           scrolls inside .table-scroll instead of stretching the document. *\/\n        .article-main {\n            min-width: 0;\n        }\n\n        \/* Eyebrow above the hero headline *\/\n        .article-hero .eyebrow {\n            font-size: 0.75rem;\n            text-transform: uppercase;\n            letter-spacing: 0.12em;\n            font-weight: 600;\n            color: var(--color-accent-light);\n            margin: 0 0 var(--space-sm);\n        }\n\n        \/* Headline figures *\/\n        .stats-grid {\n            display: grid;\n            grid-template-columns: repeat(2, 1fr);\n            gap: var(--space-sm);\n            margin: var(--space-lg) 0;\n        }\n\n        @media (min-width: 768px) {\n            .stats-grid {\n                grid-template-columns: repeat(4, 1fr);\n            }\n        }\n\n        .stat-card {\n            background: var(--color-bg-alt);\n            border: 1px solid var(--color-border);\n            border-radius: 0.75rem;\n            padding: var(--space-md);\n        }\n\n        .stat-value {\n            font-family: var(--font-heading);\n            font-size: 2rem;\n            font-weight: 700;\n            line-height: 1.1;\n            color: var(--color-primary);\n        }\n\n        .stat-value.is-green {\n            color: var(--color-green);\n        }\n\n        .stat-value span {\n            font-size: 1rem;\n            font-weight: 600;\n        }\n\n        .stat-label {\n            font-size: 0.8rem;\n            line-height: 1.45;\n            color: var(--color-text-light);\n            margin-top: var(--space-xs);\n        }\n\n        \/* Interactive process explorer *\/\n        .explorer {\n            background: var(--color-bg);\n            border: 1px solid var(--color-border);\n            border-radius: 1rem;\n            padding: var(--space-md);\n            margin: var(--space-lg) 0;\n        }\n\n        @media (min-width: 768px) {\n            .explorer {\n                padding: var(--space-lg);\n            }\n        }\n\n        .explorer-tabs {\n            display: flex;\n            flex-wrap: wrap;\n            gap: var(--space-xs);\n            margin-bottom: var(--space-md);\n        }\n\n        .explorer-tab {\n            flex: 1 1 180px;\n            background: var(--color-bg-alt);\n            border: 1px solid var(--color-border);\n            border-radius: 0.5rem;\n            padding: 0.6rem 0.9rem;\n            font-family: inherit;\n            font-size: 0.95rem;\n            font-weight: 600;\n            line-height: 1.25;\n            color: var(--color-text-light);\n            text-align: left;\n            cursor: pointer;\n            transition: all 0.2s ease;\n        }\n\n        .explorer-tab small {\n            display: block;\n            font-size: 0.75rem;\n            font-weight: 400;\n            margin-top: 2px;\n            opacity: 0.85;\n        }\n\n        .explorer-tab:hover {\n            border-color: var(--color-accent);\n            color: var(--color-primary);\n        }\n\n        .explorer-tab[aria-pressed=\"true\"] {\n            background: var(--color-primary);\n            border-color: var(--color-primary);\n            color: white;\n        }\n\n        .plot-scroll {\n            max-width: 100%;\n        }\n\n        .explorer-plot {\n            width: 100%;\n            height: auto;\n            display: block;\n        }\n\n        \/* On phones the 760-unit viewBox scales the 11px labels down to ~5px.\n           Hold a legible minimum and let the plot scroll inside its own box\n           instead; the figures below the chart carry the same numbers. *\/\n        @media (max-width: 700px) {\n            .plot-scroll {\n                overflow-x: auto;\n                -webkit-overflow-scrolling: touch;\n            }\n            .explorer-plot { min-width: 620px; }\n        }\n\n        .explorer-plot text {\n            font-family: var(--font-mono);\n            font-size: 11px;\n        }\n\n        .explorer-plot .trace {\n            fill: none;\n            stroke: var(--color-text);\n            stroke-width: 2.2;\n            stroke-linejoin: round;\n            stroke-linecap: round;\n        }\n\n        .explorer-plot .axis {\n            stroke: var(--color-text);\n            stroke-width: 1.2;\n        }\n\n        .explorer-plot .grid-line {\n            stroke: var(--color-border);\n            stroke-width: 1;\n        }\n\n        .explorer-state {\n            opacity: 0;\n            transition: opacity 0.35s ease;\n        }\n\n        .explorer-state.is-on {\n            opacity: 1;\n        }\n\n        .explorer-legend {\n            display: flex;\n            flex-wrap: wrap;\n            gap: var(--space-md);\n            list-style: none;\n            padding: 0;\n            margin: var(--space-sm) 0 0;\n            font-size: 0.8rem;\n            color: var(--color-text-light);\n        }\n\n        .explorer-legend li {\n            display: flex;\n            align-items: center;\n            gap: 0.4rem;\n        }\n\n        .explorer-legend i {\n            width: 14px;\n            height: 14px;\n            border-radius: 3px;\n            border: 1px solid rgba(0,0,0,0.12);\n        }\n\n        .explorer-readout {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: var(--space-md);\n            border-top: 1px solid var(--color-border);\n            margin-top: var(--space-md);\n            padding-top: var(--space-md);\n        }\n\n        @media (min-width: 768px) {\n            .explorer-readout {\n                grid-template-columns: 1.3fr 1fr;\n            }\n        }\n\n        .explorer-caption {\n            margin: 0;\n            font-size: 0.95rem;\n        }\n\n        .explorer-nums {\n            display: grid;\n            grid-template-columns: 1fr 1fr;\n            gap: var(--space-sm);\n            margin: 0;\n        }\n\n        .explorer-num dt {\n            font-size: 0.72rem;\n            text-transform: uppercase;\n            letter-spacing: 0.08em;\n            color: var(--color-text-light);\n        }\n\n        .explorer-num dd {\n            font-family: var(--font-heading);\n            margin: 2px 0 0;\n            font-size: 1.5rem;\n            font-weight: 700;\n            line-height: 1;\n            color: var(--color-primary);\n        }\n\n        .explorer-num dd span {\n            font-size: 0.8rem;\n            font-weight: 600;\n            color: var(--color-text-light);\n        }\n\n        @media (max-width: 420px) {\n            .explorer-nums { grid-template-columns: 1fr; }\n            .explorer-num dd { font-size: 1.35rem; }\n        }\n\n        .explorer-note {\n            font-size: 0.85rem;\n            color: var(--color-text-light);\n            margin: var(--space-sm) 0 0;\n        }\n\n        \/* Results table *\/\n        .table-scroll {\n            overflow-x: auto;\n            -webkit-overflow-scrolling: touch;\n            max-width: 100%;\n            margin: var(--space-lg) 0 var(--space-sm);\n        }\n\n        \/* Tell people the table scrolls \u2014 but only between 641px and 700px,\n           which is the one range where it does. At 640px and below the table\n           collapses into stacked cards and there is nothing to swipe. *\/\n        .scroll-hint {\n            display: none;\n            font-size: 0.85rem;\n            color: var(--color-text-light);\n            margin: var(--space-md) 0 calc(-1 * var(--space-sm));\n        }\n\n        @media (min-width: 641px) and (max-width: 700px) {\n            .scroll-hint { display: block; }\n        }\n\n        .data-table {\n            width: 100%;\n            min-width: 620px;\n            border-collapse: collapse;\n            font-size: 0.95rem;\n        }\n\n        .data-table thead {\n            background: var(--color-primary);\n            color: white;\n        }\n\n        .data-table th {\n            padding: var(--space-sm) var(--space-md);\n            text-align: right;\n            font-size: 0.85rem;\n            font-weight: 600;\n            color: white !important;\n            vertical-align: bottom;\n        }\n\n        .data-table th:first-child {\n            text-align: left;\n        }\n\n        .data-table td {\n            padding: var(--space-sm) var(--space-md);\n            text-align: right;\n            border-bottom: 1px solid var(--color-border);\n        }\n\n        .data-table td:first-child {\n            text-align: left;\n            font-weight: 600;\n            color: var(--color-primary);\n        }\n\n        .data-table tr.subhead td {\n            background: var(--color-bg-card);\n            color: var(--color-primary);\n            font-weight: 700;\n            text-align: left;\n        }\n\n        .data-table tr.subhead td span {\n            font-weight: 400;\n            font-size: 0.8rem;\n            color: var(--color-text-light);\n            margin-left: var(--space-xs);\n        }\n\n        .data-table tr.highlight td {\n            background: var(--color-green-light);\n        }\n\n        .data-table .is-up {\n            color: var(--color-green);\n            font-weight: 600;\n        }\n\n        .data-table .is-down {\n            color: var(--color-flag);\n        }\n\n        .table-note {\n            font-size: 0.85rem;\n            color: var(--color-text-light);\n            margin: 0 0 var(--space-lg);\n        }\n\n        \/* Limitations box *\/\n        .limits-box {\n            background: var(--color-bg-alt);\n            border: 1px solid var(--color-border);\n            border-left: 4px solid var(--color-text-light);\n            border-radius: 0 0.5rem 0.5rem 0;\n            padding: var(--space-md) var(--space-lg);\n            margin: var(--space-xl) 0;\n        }\n\n        .limits-box h4 {\n            margin-top: 0;\n        }\n\n        .limits-box ul {\n            margin-bottom: 0;\n        }\n\n        \/* Paper \/ citation card *\/\n        .paper-card {\n            display: grid;\n            grid-template-columns: 1fr;\n            gap: var(--space-lg);\n            background: var(--color-bg-alt);\n            border: 1px solid var(--color-border);\n            border-radius: 1rem;\n            padding: var(--space-lg);\n            margin: var(--space-lg) 0;\n        }\n\n        @media (min-width: 640px) {\n            .paper-card {\n                grid-template-columns: 180px minmax(0, 1fr);\n            }\n        }\n\n        \/* No cover image available: collapse to a single full-width column\n           so the text does not get trapped in the 180px image track. *\/\n        .paper-card.no-cover {\n            grid-template-columns: minmax(0, 1fr);\n        }\n\n        .paper-card img {\n            border-radius: 0.5rem;\n            border: 1px solid var(--color-border);\n        }\n\n        .paper-title {\n            font-family: var(--font-heading);\n            font-size: 1.25rem;\n            line-height: 1.3;\n            color: var(--color-primary);\n            margin: 0 0 var(--space-xs);\n        }\n\n        .paper-authors {\n            font-size: 0.95rem;\n            margin: 0 0 var(--space-xs);\n        }\n\n        .paper-meta {\n            font-size: 0.85rem;\n            color: var(--color-text-light);\n            margin: 0 0 var(--space-md);\n        }\n\n        .btn-row {\n            display: flex;\n            flex-wrap: wrap;\n            gap: var(--space-xs);\n            margin-bottom: var(--space-md);\n        }\n\n        .btn {\n            display: inline-block;\n            background: var(--color-accent);\n            color: white !important;\n            text-decoration: none;\n            padding: 0.6rem 1.1rem;\n            border-radius: 0.5rem;\n            font-size: 0.9rem;\n            font-weight: 600;\n            transition: background 0.2s ease;\n        }\n\n        .btn:hover {\n            background: var(--color-primary);\n        }\n\n        .btn.secondary {\n            background: transparent;\n            color: var(--color-accent) !important;\n            border: 1px solid var(--color-border);\n        }\n\n        .btn.secondary:hover {\n            background: var(--color-bg-card);\n            color: var(--color-primary) !important;\n        }\n\n        .disclosure {\n            font-size: 0.85rem;\n            color: var(--color-text-light);\n            border-top: 1px solid var(--color-border);\n            padding-top: var(--space-sm);\n            margin: 0;\n        }\n\n        .cite-block {\n            margin-top: var(--space-sm);\n        }\n\n        .cite-block summary {\n            cursor: pointer;\n            font-size: 0.85rem;\n            font-weight: 600;\n            color: var(--color-text-light);\n        }\n\n        .cite-block pre {\n            background: var(--color-bg);\n            border: 1px solid var(--color-border);\n            border-radius: 0.5rem;\n            padding: var(--space-sm);\n            margin: var(--space-xs) 0 0;\n            font-family: var(--font-mono);\n            font-size: 0.78rem;\n            line-height: 1.6;\n            white-space: pre-wrap;\n            overflow-wrap: anywhere;\n            overflow-x: auto;\n        }\n\n        \/* ==========================================================\n           MOBILE DELIVERY\n           .article-main is a flex item, so by default it will not\n           shrink below the widest thing inside it. Without min-width:0\n           a wide child pushes the whole column past the viewport\n           instead of wrapping.\n           ========================================================== *\/\n        .article-main {\n            min-width: 0;\n            overflow-wrap: break-word;\n        }\n\n        .explorer-plot,\n        .paper-card img {\n            max-width: 100%;\n        }\n\n        .stats-grid > *,\n        .component-grid > *,\n        .two-col-grid > *,\n        .comparison-section > *,\n        .explorer-nums > *,\n        .paper-card > *,\n        .explorer-tab {\n            min-width: 0;\n        }\n\n        \/* Results table: collapse into stacked cards below 640px, the\n           same treatment the stylesheet already gives .glossary-table,\n           rather than forcing a 620px sideways scroll. *\/\n        @media (max-width: 640px) {\n            .table-scroll {\n                overflow-x: visible;\n            }\n\n            .data-table {\n                display: block;\n                min-width: 0;\n                font-size: 0.9rem;\n            }\n\n            .data-table thead {\n                display: none;\n            }\n\n            .data-table tbody {\n                display: block;\n            }\n\n            .data-table tr {\n                display: block;\n                margin-bottom: var(--space-md);\n                background: var(--color-bg-alt);\n                border-radius: 0.5rem;\n                overflow: hidden;\n            }\n\n            .data-table tr.subhead {\n                background: transparent;\n                margin-bottom: var(--space-xs);\n            }\n\n            .data-table tr.subhead td {\n                border-bottom: none;\n                border-radius: 0.5rem;\n            }\n\n            .data-table tr.subhead td span {\n                display: block;\n                margin-left: 0;\n            }\n\n            .data-table td {\n                display: flex;\n                justify-content: space-between;\n                align-items: baseline;\n                gap: var(--space-sm);\n                padding: 0.6rem var(--space-md);\n                text-align: right;\n            }\n\n            .data-table td:last-child {\n                border-bottom: none;\n            }\n\n            .data-table tr:not(.subhead) td:first-child {\n                display: block;\n                text-align: left;\n                background: var(--color-primary);\n                color: white;\n                border-bottom: none;\n                padding: var(--space-sm) var(--space-md);\n            }\n\n            .data-table tr.highlight td:first-child {\n                background: var(--color-green);\n            }\n\n            .data-table td[data-label]::before {\n                content: attr(data-label);\n                font-weight: 600;\n                color: var(--color-text-light);\n                text-align: left;\n            }\n        }\n    <\/style>\n\n\n\n<div class=\"article-wrapper\">\n        <!-- Sidebar TOC (desktop only) -->\n        <aside class=\"article-sidebar\">\n            <nav class=\"toc\">\n                <p class=\"toc-title\">In this article<\/p>\n                <ul class=\"toc-list\">\n                    <li><a href=\"#why-matters\">1. Why This Study Matters<\/a><\/li>\n                    <li><a href=\"#at-a-glance\">2. The Study at a Glance<\/a><\/li>\n                    <li><a href=\"#how-far\">3. How Far the Parameters Were Pushed<\/a><\/li>\n                    <li><a href=\"#what-pc-found\">4. What Characterization Found<\/a><\/li>\n                    <li><a href=\"#supervision\">5. Supervising a Multiday Run<\/a><\/li>\n                    <li><a href=\"#results\">6. The PPQ Campaign<\/a><\/li>\n                    <li><a href=\"#implications\">7. What It Means at Scale<\/a><\/li>\n                    <li><a href=\"#glossary\">8. Key Terms<\/a><\/li>\n                    <li><a href=\"#faq\">9. FAQs<\/a><\/li>\n                <\/ul>\n            <\/nav>\n        <\/aside>\n\n        <!-- Main Content -->\n        <article class=\"article-main\">\n            <!-- Hero Section -->\n            <header class=\"article-hero\">\n                <p class=\"eyebrow\">Research Highlight<\/p>\n                <h2>A Validation Pathway for Continuous Peptide Chromatography<\/h2>\n                <p class=\"lead\">Continuous chromatography is already in production use for synthetic peptides and oligonucleotides. What has been missing is a published account of how to validate it for a regulatory filing. This study provides one, and carries it through four qualification runs at commercial scale.<\/p>\n            <\/header>\n\n            <!-- Article citation card \u2014 lead position, directly under the header -->\n            <div class=\"paper-card no-cover\">\n                <!-- To show a cover image: upload it, put its URL in src below, and remove \"no-cover\" from the div above. -->\n                <img decoding=\"async\" src=\"processes-v13-i12-cover.jpg\" width=\"620\" height=\"890\" loading=\"lazy\"\n                     alt=\"Cover of Processes volume 13, issue 12\"\n                     onerror=\"this.closest('.paper-card').classList.add('no-cover'); this.remove();\">\n                <div>\n                    <p class=\"paper-title\">Process Characterization and Performance Qualification of MCSGP<\/p>\n                    <p class=\"paper-authors\">Ralf Eisenhuth and Thomas M\u00fcller-Sp\u00e4th<\/p>\n                    <p class=\"paper-meta\">\n                        <em>Processes<\/em> <strong>2025<\/strong>, 13(12), 3950 \u00b7 Published 6 December 2025<br>\n                        Special Issue: New Frontiers in Chromatographic Separation Technology<br>\n                        DOI: 10.3390\/pr13123950 \u00b7 Open access, CC BY\n                    <\/p>\n                    <div class=\"btn-row\">\n                        <a class=\"btn\" href=\"https:\/\/doi.org\/10.3390\/pr13123950\" target=\"_blank\" rel=\"noopener\">Read the full article<\/a>\n                        <a class=\"btn secondary\" href=\"https:\/\/www.mdpi.com\/2227-9717\/13\/12\/3950\/pdf\" target=\"_blank\" rel=\"noopener\">Download PDF<\/a>\n                    <\/div>\n                    <p class=\"disclosure\">Competing interests, as disclosed by the authors: Ralf Eisenhuth was employed by Bachem AG and Thomas M\u00fcller-Sp\u00e4th by YMC ChromaCon. The research received no external funding.<\/p>\n                    <details class=\"cite-block\">\n                        <summary>Citation (BibTeX)<\/summary>\n<pre>@article{eisenhuth2025process,\n  title   = {Process Characterization and Performance Qualification of MCSGP},\n  author  = {Eisenhuth, Ralf and M{\\\"u}ller-Sp{\\\"a}th, Thomas},\n  journal = {Processes},\n  volume  = {13},\n  number  = {12},\n  pages   = {3950},\n  year    = {2025},\n  doi     = {10.3390\/pr13123950}\n}<\/pre>\n                    <\/details>\n                <\/div>\n            <\/div>\n\n            <!-- Mobile TOC -->\n            <nav class=\"mobile-toc\" id=\"mobileToc\">\n                <button class=\"mobile-toc-toggle\" aria-expanded=\"false\" aria-controls=\"mobileTocList\">\n                    Table of Contents\n                <\/button>\n                <div class=\"mobile-toc-list\" id=\"mobileTocList\">\n                    <ul>\n                        <li><a href=\"#why-matters\">1. Why This Study Matters<\/a><\/li>\n                        <li><a href=\"#at-a-glance\">2. The Study at a Glance<\/a><\/li>\n                        <li><a href=\"#how-far\">3. How Far the Parameters Were Pushed<\/a><\/li>\n                        <li><a href=\"#what-pc-found\">4. What Characterization Found<\/a><\/li>\n                        <li><a href=\"#supervision\">5. Supervising a Multiday Run<\/a><\/li>\n                        <li><a href=\"#results\">6. The PPQ Campaign<\/a><\/li>\n                        <li><a href=\"#implications\">7. What It Means at Scale<\/a><\/li>\n                        <li><a href=\"#glossary\">8. Key Terms<\/a><\/li>\n                        <li><a href=\"#faq\">9. FAQs<\/a><\/li>\n                    <\/ul>\n                <\/div>\n            <\/nav>\n\n            <p>MCSGP purifies continuously, recycling impure side fractions between two columns so that high yield and high purity are reached together. It does that by running to predefined recycling and collection windows, cycle after cycle, for hours or days \u2014 without the mid-run adjustment to pooling boundaries that an operator can make in batch chromatography. The chromatographic separation therefore has a greater influence on final product quality, and correspondingly more weight falls on the control strategy around it.<\/p>\n\n            <p>That makes validation a more demanding exercise. How do you show, in a regulatory filing, that a process running to fixed windows for days will deliver the right material every cycle?<\/p>\n\n            <div class=\"callout\">\n                <p>This study is <strong>the first published Process Characterization and Process Performance Qualification approach for MCSGP<\/strong>, worked through on a commercial peptide. It identifies which process parameters actually matter, defines a supervision strategy for runs that last days, and confirms both across four qualification runs at manufacturing scale.<\/p>\n            <\/div>\n\n            <p>The study is a collaboration between Bachem AG and YMC ChromaCon, with Bivalirudin as the test system. It sits alongside an earlier characterization and validation study for CaptureSMB, the simpler twin-column capture process, and extends that thinking to gradient purification.<\/p>\n\n            <!-- Section 1 -->\n            <h2 id=\"why-matters\">1. Why This Study Matters: A Gap Between Practice and Paperwork<\/h2>\n\n            <p>MCSGP is in operation at several companies and research institutes, purifying synthetic peptides and oligonucleotides at production scale. Its appeal is well documented: internal recycling of impure side fractions lets it reach high yield and high purity at the same time, with a high degree of automation, fewer in-process controls and a lower process mass intensity than batch chromatography.<\/p>\n\n            <p>Regulatory validation is a separate matter from process performance, and it has its own structure. The FDA Process Validation guideline sets out three elements:<\/p>\n\n            <ul class=\"card-list\">\n                <li>\n                    <strong>Process Design<\/strong>\n                    Builds scientific understanding of the process. Process Characterization is the central piece: identifying which parameters could affect critical quality attributes, testing the high-ranked ones experimentally, and defining the ranges within which quality is met.\n                <\/li>\n                <li>\n                    <strong>Process Performance Qualification<\/strong>\n                    Confirms that the equipment and process perform as intended and can manufacture reproducibly at commercial scale. At least three consecutive representative batches are run under normal operating conditions, in the actual facility, with trained operators and qualified equipment.\n                <\/li>\n                <li>\n                    <strong>Continued Process Verification<\/strong>\n                    Ongoing monitoring once routine manufacturing is under way. This study covers the first two elements; the third is outside its scope.\n                <\/li>\n            <\/ul>\n\n            <p>None of that framework is specific to continuous chromatography, and the paper&#8217;s finding is that it largely does not need to be. What was missing was a worked example showing how it applies to a process whose defining feature \u2014 recycling material between two columns \u2014 has no counterpart in batch operation.<\/p>\n\n            <h3>Where MCSGP differs, and where it does not<\/h3>\n\n            <p>The paper separates the purification into two parts: the chromatographic part, which is identical for batch and MCSGP, and the product collection and recycling part, which is specific to MCSGP. The list of process parameters is therefore largely the same as for a batch process, with a few additions covering the recycling and collection step.<\/p>\n\n            <p>The practical difference is how many elutions it takes to generate meaningful data. For a batch purification, one elution per tested parameter is considered sufficient. An MCSGP experiment needs at least three cycles with two elutions each \u2014 enough to confirm that the process has reached cyclic steady state, that impurities are not accumulating through the weak or strong recycling streams, and that changes in column load caused by internal recycling do not affect the outcome.<\/p>\n\n            <!-- Section 2 -->\n            <h2 id=\"at-a-glance\">2. The Study at a Glance<\/h2>\n\n            <p>Bivalirudin was used as the test system: a 20-amino-acid direct thrombin inhibitor with a molecular weight of 2,180 g\/mol, produced by solid-phase peptide synthesis and supplied as crude material of 81% purity. The target for the product pool was more than 99.0% purity, with the added constraint that the impurity profile had to be comparable to the legacy batch process.<\/p>\n\n            <div class=\"stats-grid\">\n                <div class=\"stat-card\">\n                    <div class=\"stat-value\">1<span> of 34<\/span><\/div>\n                    <p class=\"stat-label\">Process parameters classified as critical after characterization<\/p>\n                <\/div>\n                <div class=\"stat-card\">\n                    <div class=\"stat-value is-green\">62<span>%<\/span><\/div>\n                    <p class=\"stat-label\">Gross-to-gross yield across the campaign, against 57% for the legacy batch process<\/p>\n                <\/div>\n                <div class=\"stat-card\">\n                    <div class=\"stat-value is-green\">3.2<\/div>\n                    <p class=\"stat-label\">In-process controls per kg of product, down from 81<\/p>\n                <\/div>\n                <div class=\"stat-card\">\n                    <div class=\"stat-value\">1,400<\/div>\n                    <p class=\"stat-label\">kg\/kg process mass intensity for the purification stage, down from around 5,200<\/p>\n                <\/div>\n            <\/div>\n\n            <h3>What was run, and on what<\/h3>\n\n            <div class=\"two-col-grid\">\n                <div class=\"grid-card\">\n                    <h4>Process Characterization<\/h4>\n                    <p>Carried out on a <strong>Contichrom CUBE 30<\/strong> system. Four potentially critical parameters were varied one at a time, with at least five MCSGP cycles at each set point to confirm cyclic steady state. The two elutions per cycle were pooled and analyzed by HPLC for purity, individual impurities and yield.<\/p>\n                <\/div>\n                <div class=\"grid-card\">\n                    <h4>Process Performance Qualification<\/h4>\n                    <p>Carried out on a <strong>Contichrom TWIN 500<\/strong> system with two 30 cm internal diameter dynamic axial compression columns. A pre-PPQ GMP run of eleven elutions was followed by a campaign of four multiday MCSGP runs. All runs used AutoPeak UV-based process control, with detection at 280 nm.<\/p>\n                <\/div>\n            <\/div>\n\n            <!-- Section 3 -->\n            <h2 id=\"how-far\">3. How Far the Parameters Were Pushed<\/h2>\n\n            <p>Most of the 34 identified parameters were never tested experimentally, and the reasoning behind that is worth following. Large-scale MCSGP equipment holds most parameters within narrow limits by construction. A Contichrom TWIN system has four three-head pumps \u2014 two for gradient generation, one for feeding, one for in-line dilution, cleaning-in-place and equilibration \u2014 and each is controlled by a dedicated flow meter with a calibration tolerance of \u00b12%.<\/p>\n\n            <p>Whether that \u00b12% matters depends entirely on what the pump is doing. For equilibration, in-line dilution, cleaning-in-place and chase washes, a 2% variation is negligible. For column load it is not: a 2% change alters the peak shape, which can shift what ends up inside the recycling zones. So the same tolerance makes one parameter well-controlled and another potentially critical, and only the second needs an experiment.<\/p>\n\n            <p>That assessment left four parameters to test. Each was then varied well beyond the range it covers in production.<\/p>\n\n            <div class=\"explorer\">\n                <div class=\"explorer-tabs\" role=\"group\" aria-label=\"Select a stage of the characterization\">\n                    <button type=\"button\" class=\"explorer-tab\" data-state=\"a\" aria-pressed=\"true\">Normal variation<small>What the equipment does<\/small><\/button>\n                    <button type=\"button\" class=\"explorer-tab\" data-state=\"b\" aria-pressed=\"false\">Tested range<small>How far it was pushed<\/small><\/button>\n                    <button type=\"button\" class=\"explorer-tab\" data-state=\"c\" aria-pressed=\"false\">Verdict<small>Critical or not<\/small><\/button>\n                <\/div>\n\n                <div class=\"plot-scroll\">\n                <svg class=\"explorer-plot\" viewBox=\"0 0 760 352\" role=\"img\"\n                     aria-label=\"Four process parameters shown as symmetrical ranges around their set point. Linear velocity varies by plus or minus 2 percent in normal operation and was tested to plus or minus 10 percent. Displacer slope varies by plus or minus 8 percent and was tested to plus or minus 25 percent. Column load varies by plus or minus 2 percent and was tested to plus or minus 10 percent. Detection wavelength varies by plus or minus 1.6 nanometres and was tested to plus or minus 5 nanometres. Of the four, only displacer slope was classified as a critical process parameter.\">\n                    <defs>\n                        <marker id=\"pcArrow\" viewBox=\"0 0 10 10\" refX=\"8\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\n                            <path d=\"M0,0 L10,5 L0,10 z\" fill=\"#4a5568\"\/>\n                        <\/marker>\n                    <\/defs>\n\n                    <!-- static frame -->\n                    <text x=\"250\" y=\"52\" text-anchor=\"end\" fill=\"#718096\">normal \u2192 tested<\/text>\n                    <text x=\"490\" y=\"52\" text-anchor=\"middle\" fill=\"#718096\">set point<\/text>\n                    <line x1=\"490\" y1=\"64\" x2=\"490\" y2=\"288\" stroke=\"#a0aec0\" stroke-width=\"1\" stroke-dasharray=\"4 4\"\/>\n                    <g stroke=\"#e2e8f0\" stroke-width=\"1\">\n                        <line x1=\"280\" y1=\"92\" x2=\"700\" y2=\"92\"\/>\n                        <line x1=\"280\" y1=\"148\" x2=\"700\" y2=\"148\"\/>\n                        <line x1=\"280\" y1=\"204\" x2=\"700\" y2=\"204\"\/>\n                        <line x1=\"280\" y1=\"260\" x2=\"700\" y2=\"260\"\/>\n                    <\/g>\n                    <g text-anchor=\"end\">\n                        <text x=\"250\" y=\"90\" fill=\"#2d3748\">Linear velocity<\/text>\n                        <text x=\"250\" y=\"105\" fill=\"#718096\">\u00b12% \u2192 \u00b110%<\/text>\n                        <text x=\"250\" y=\"146\" fill=\"#2d3748\">Displacer slope<\/text>\n                        <text x=\"250\" y=\"161\" fill=\"#718096\">\u00b18% \u2192 \u00b125%<\/text>\n                        <text x=\"250\" y=\"202\" fill=\"#2d3748\">Column load<\/text>\n                        <text x=\"250\" y=\"217\" fill=\"#718096\">\u00b12% \u2192 \u00b110%<\/text>\n                        <text x=\"250\" y=\"258\" fill=\"#2d3748\">Detection wavelength<\/text>\n                        <text x=\"250\" y=\"273\" fill=\"#718096\">\u00b11.6 nm \u2192 \u00b15 nm<\/text>\n                    <\/g>\n\n                    <!-- STATE A: normal operating variation only -->\n                    <g class=\"explorer-state is-on\" id=\"pc-st-a\">\n                        <rect x=\"448\" y=\"84\" width=\"84\" height=\"16\" rx=\"2\" fill=\"#2E9BC0\"\/>\n                        <rect x=\"423\" y=\"140\" width=\"134\" height=\"16\" rx=\"2\" fill=\"#2E9B4F\"\/>\n                        <rect x=\"448\" y=\"196\" width=\"84\" height=\"16\" rx=\"2\" fill=\"#1F3A5F\"\/>\n                        <rect x=\"423\" y=\"252\" width=\"134\" height=\"16\" rx=\"2\" fill=\"#E1793A\"\/>\n                        <text x=\"64\" y=\"318\" fill=\"#4a5568\">Normal variation \u2014 the spread the pumps, eluent preparation and detector actually produce.<\/text>\n                    <\/g>\n\n                    <!-- STATE B: tested range, with normal variation shown inside it -->\n                    <g class=\"explorer-state\" id=\"pc-st-b\">\n                        <rect x=\"280\" y=\"77\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#D6EBF3\"\/>\n                        <rect x=\"280\" y=\"133\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#D8ECDF\"\/>\n                        <rect x=\"280\" y=\"189\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#D8DEE7\"\/>\n                        <rect x=\"280\" y=\"245\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#FAE4D6\"\/>\n                        <rect x=\"448\" y=\"84\" width=\"84\" height=\"16\" rx=\"2\" fill=\"#2E9BC0\"\/>\n                        <rect x=\"423\" y=\"140\" width=\"134\" height=\"16\" rx=\"2\" fill=\"#2E9B4F\"\/>\n                        <rect x=\"448\" y=\"196\" width=\"84\" height=\"16\" rx=\"2\" fill=\"#1F3A5F\"\/>\n                        <rect x=\"423\" y=\"252\" width=\"134\" height=\"16\" rx=\"2\" fill=\"#E1793A\"\/>\n                        <path d=\"M282,300 L698,300\" fill=\"none\" stroke=\"#4a5568\" stroke-width=\"1.2\"\n                              marker-start=\"url(#pcArrow)\" marker-end=\"url(#pcArrow)\"\/>\n                        <text x=\"64\" y=\"318\" fill=\"#4a5568\">Tested range \u2014 each parameter stressed at least three times wider than it varies in practice.<\/text>\n                    <\/g>\n\n                    <!-- STATE C: outcome -->\n                    <g class=\"explorer-state\" id=\"pc-st-c\">\n                        <rect x=\"280\" y=\"77\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#D6EBF3\"\/>\n                        <rect x=\"280\" y=\"133\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#D8ECDF\" stroke=\"#1F3A5F\" stroke-width=\"2\"\/>\n                        <rect x=\"280\" y=\"189\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#D8DEE7\"\/>\n                        <rect x=\"280\" y=\"245\" width=\"420\" height=\"30\" rx=\"3\" fill=\"#FAE4D6\"\/>\n                        <rect x=\"448\" y=\"84\" width=\"84\" height=\"16\" rx=\"2\" fill=\"#2E9BC0\"\/>\n                        <rect x=\"423\" y=\"140\" width=\"134\" height=\"16\" rx=\"2\" fill=\"#2E9B4F\"\/>\n                        <rect x=\"448\" y=\"196\" width=\"84\" height=\"16\" rx=\"2\" fill=\"#1F3A5F\"\/>\n                        <rect x=\"423\" y=\"252\" width=\"134\" height=\"16\" rx=\"2\" fill=\"#E1793A\"\/>\n                        <rect x=\"712\" y=\"138\" width=\"40\" height=\"20\" rx=\"3\" fill=\"#1F3A5F\"\/>\n                        <text x=\"732\" y=\"152\" text-anchor=\"middle\" fill=\"#ffffff\">CPP<\/text>\n                        <text x=\"64\" y=\"318\" fill=\"#4a5568\">Purity held inside \u00b13\u03c3 for all four. Only the shallow slope shifted the impurity profile,<\/text>\n                        <text x=\"64\" y=\"334\" fill=\"#4a5568\">so gradient slope alone became a critical process parameter.<\/text>\n                    <\/g>\n                <\/svg>\n                <\/div>\n\n                <ul class=\"explorer-legend\">\n                    <li><i style=\"background:#2E9BC0\"><\/i>Linear velocity<\/li>\n                    <li><i style=\"background:#2E9B4F\"><\/i>Displacer slope<\/li>\n                    <li><i style=\"background:#1F3A5F\"><\/i>Column load<\/li>\n                    <li><i style=\"background:#E1793A\"><\/i>Detection wavelength<\/li>\n                <\/ul>\n\n                <div class=\"explorer-readout\">\n                    <p class=\"explorer-caption\" id=\"pcCaption\">What the equipment actually does. Each flow meter on the TWIN pumps carries a <strong>\u00b12%<\/strong> calibration tolerance, and eluent preparation adds to the spread on the gradient slope. These are the ranges routine manufacturing has to live with.<\/p>\n                    <dl class=\"explorer-nums\">\n                        <div class=\"explorer-num\"><dt>Linear velocity<\/dt><dd id=\"pcVelocity\">\u00b12%<\/dd><\/div>\n                        <div class=\"explorer-num\"><dt>Displacer slope<\/dt><dd id=\"pcSlope\">\u00b18%<\/dd><\/div>\n                        <div class=\"explorer-num\"><dt>Column load<\/dt><dd id=\"pcLoad\">\u00b12%<\/dd><\/div>\n                        <div class=\"explorer-num\"><dt>Detection \u03bb<\/dt><dd id=\"pcWavelength\">\u00b11.6<span> nm<\/span><\/dd><\/div>\n                    <\/dl>\n                <\/div>\n\n                <p class=\"explorer-note\">Ranges as reported in Table 4 of the study. Each row is drawn to its own tested range, so the inner bar shows how much of that range normal operation occupies rather than a shared scale. Colors identify the parameter, following Figure 3 of the paper; they do not indicate good or bad.<\/p>\n            <\/div>\n\n            <div class=\"analogy-box\">\n                <h4>A Simple Analogy<\/h4>\n                <p>Testing a bridge does not mean driving the expected traffic across it. It means loading it far past anything it will carry in service, and watching for the first sign of movement.<\/p>\n                <p>That is what the tested ranges are for. A gradient slope that varies by \u00b18% in production was pushed to \u00b125%; a column load that varies by \u00b12% was pushed to \u00b110%. If quality holds across a range several times wider than reality, the margin between normal operation and any observable effect is large \u2014 and that margin is what a control strategy is built on.<\/p>\n            <\/div>\n\n            <!-- Section 4 -->\n            <h2 id=\"what-pc-found\">4. What Process Characterization Found<\/h2>\n\n            <p>Every set point produced product above the 99.0% purity specification. Across all the characterization runs the average pool purity was <strong>99.30%<\/strong>, and every individual value fell inside a band of \u00b13 standard deviations, that is 99.30% \u00b1 0.32%. Since \u00b13\u03c3 captures roughly 99.7% of expected values for a normal distribution, the effect of the parameter variations was statistically indistinguishable from ordinary process noise. On purity alone, all four parameters would have been classified as non-critical, and the proven acceptable range would have been the full characterized range.<\/p>\n\n            <div class=\"callout\">\n                <p>Purity did not identify the critical parameter. <strong>The impurity profile did.<\/strong><\/p>\n            <\/div>\n\n            <p>Each eluate pool was also examined for individual impurities. Those profiles were consistent across every run but one: at \u221225% displacer slope, a single impurity rose from below the limit of quantitation to 0.13%. Small in absolute terms, but the specification required the impurity profile to be comparable to the legacy process, and it no longer was.<\/p>\n\n            <p>On that basis gradient slope was designated a critical process parameter, and the variance permitted during routine manufacturing was reduced through organizational measures. Column load, elution flow rate and detection wavelength were designated non-critical. The gross-to-gross yields were also evaluated; excluding the shallow-slope run, they fell between 60% and 65%.<\/p>\n\n            <h3>Why one factor at a time, rather than a designed experiment<\/h3>\n\n            <p>The choice of OFAT over DoE is argued explicitly, and the reasoning is specific to peptides. Related substances in a peptide tend to behave as regular samples, with similar retention behavior under gradient conditions, so the primary observable effect of parameter variation is the width of the overall peak rather than a change in resolution. Purity changes in MCSGP then tend to come from misalignment between the peak and the fixed recycling and collection zones.<\/p>\n\n            <p>That creates a practical hazard for a designed experiment. Combinations that cumulatively broaden or narrow the peak \u2014 a lower column load with a steeper slope and a wavelength shift that lowers the signal, for instance \u2014 can push the peak far enough out of alignment with fixed zones to fail the run, forcing repeated iterations of the DoE setup. OFAT does not reveal interactions between parameters, which is a real limitation, but it allows much wider ranges to be tested. For molecules with stringent purity specifications the paper recommends including the combinations that produce the narrowest and broadest peaks as fixed experiments, and considering smaller ranges.<\/p>\n\n            <!-- Section 5 -->\n            <h2 id=\"supervision\">5. Supervising a Process That Runs for Days<\/h2>\n\n            <p>An MCSGP process producing eluate continuously for several days presents a sampling problem that batch chromatography does not. Collecting and analyzing every main cut separately is not cost-effective at production scale, but sampling too little leaves the process unsupervised. The answer here is a two-phase strategy.<\/p>\n\n            <ul class=\"card-list\">\n                <li>\n                    <strong>Start-up: intensive monitoring<\/strong>\n                    Every main cut is analyzed by an in-process control method until three criteria for cyclic steady state are met \u2014 comparable impurity profiles for the main cuts, good overlay of the UV traces on each column, and comparable main cut volume on a column basis.\n                <\/li>\n                <li>\n                    <strong>Steady state: strategic sampling<\/strong>\n                    Once those criteria are satisfied, HPLC sampling drops to two samples per day. Supervision then rests on three elements together: the strategic samples, the online UV trace overlay, and the recorded main cut volume per column.\n                <\/li>\n            <\/ul>\n\n            <p>The approach is aligned with the risk management expectations for product availability set out in ICH Q9 (R1).<\/p>\n\n            <h3>AutoPeak as Process Analytical Technology<\/h3>\n\n            <p>Underpinning the strategy is AutoPeak, which monitors UV at the column outlets and starts and stops the recycling and collection phases from absolute and relative UV triggers rather than from the clock. The main cut borders are set as UV thresholds entered into the control. Because the cut points track the peak rather than elapsed time, retention time shifts that accumulate over a long run do not move the pool composition.<\/p>\n\n            <p>The qualification runs illustrate this. Over PPQ batch 1, a slight peak shift appeared from cycle to cycle; when the traces were realigned to the AutoPeak trigger point marking the start of product collection, they overlaid exactly. On that basis the paper positions AutoPeak as Process Analytical Technology in the sense of the FDA PAT guidance \u2014 a framing supported by the FDA Process Validation and PAT guidance documents and by ICH Q8, Q11 and Q13, which explicitly support real-time monitoring as part of a control strategy.<\/p>\n\n            <!-- Section 6 -->\n            <h2 id=\"results\">6. The PPQ Campaign: Full Results<\/h2>\n\n            <p>A pre-PPQ GMP run came first: eleven elutions, 1.5 kg of crude purified to 0.8 kg of intermediate at 99.6% purity, with a PMI of 1,402 kg\/kg for the purification alone. The qualification campaign then ran four multiday MCSGP runs, the last batch split into two parts, to cover a range of batch sizes.<\/p>\n\n            <p>All four produced consistent elution profiles, main cut sizes and product purities. Comparing the third elution \u2014 the first at cyclic steady state \u2014 with elution 106 of the longest run showed the impurity profile holding across the full duration, and purity for every full elution stayed within the \u00b13\u03c3 band anticipated from characterization.<\/p>\n\n            <ul class=\"feature-list\">\n                <li>\n                    <span class=\"feature-label\">Crude in<\/span>\n                    <span>54.5 kg at 81% purity<\/span>\n                <\/li>\n                <li>\n                    <span class=\"feature-label\">MCSGP<\/span>\n                    <span>397 elutions over 235 hours, producing 1,576 L of main cut<\/span>\n                <\/li>\n                <li>\n                    <span class=\"feature-label\">SPE<\/span>\n                    <span>42 elutions over 65 hours on the same system and columns, alternately loading and eluting with a sharp gradient, producing 631 L of main cut<\/span>\n                <\/li>\n                <li>\n                    <span class=\"feature-label\">API out<\/span>\n                    <span>33.6 kg at 99.2% purity \u2014 a gross-to-gross yield of 62%, or 76% effective yield taking product and crude purity into account<\/span>\n                <\/li>\n                <li>\n                    <span class=\"feature-label\">Total<\/span>\n                    <span>300 hours of chromatography operating time<\/span>\n                <\/li>\n            <\/ul>\n\n            <h3>Against the legacy process<\/h3>\n\n            <p class=\"scroll-hint\">Swipe the table sideways to see the legacy and MCSGP columns.<\/p>\n\n            <div class=\"table-scroll\">\n                <table class=\"data-table\">\n                    <thead>\n                        <tr>\n                            <th scope=\"col\">Metric<\/th>\n                            <th scope=\"col\">Legacy batch process<\/th>\n                            <th scope=\"col\">MCSGP with AutoPeak<\/th>\n                        <\/tr>\n                    <\/thead>\n                    <tbody>\n                        <tr class=\"subhead\"><td colspan=\"3\">Bivalirudin <span>target purity &gt;99.0% \u00b7 impurity profile comparable to legacy<\/span><\/td><\/tr>\n                        <tr>\n                            <td>Column configuration<\/td>\n                            <td data-label=\"Legacy batch process\">One 60 cm i.d. column<\/td>\n                            <td data-label=\"MCSGP with AutoPeak\">Two 30 cm i.d. columns<\/td>\n                        <\/tr>\n                        <tr class=\"highlight\">\n                            <td>Gross-to-gross yield<\/td>\n                            <td data-label=\"Legacy batch process\">57%<\/td>\n                            <td data-label=\"MCSGP with AutoPeak\" class=\"is-up\">62%<\/td>\n                        <\/tr>\n                        <tr class=\"highlight\">\n                            <td>In-process controls per kg<\/td>\n                            <td data-label=\"Legacy batch process\">81<\/td>\n                            <td data-label=\"MCSGP with AutoPeak\" class=\"is-up\">3.2<\/td>\n                        <\/tr>\n                        <tr class=\"highlight\">\n                            <td>In-process controls, whole campaign<\/td>\n                            <td data-label=\"Legacy batch process\">2,753<\/td>\n                            <td data-label=\"MCSGP with AutoPeak\" class=\"is-up\">108<\/td>\n                        <\/tr>\n                        <tr class=\"highlight\">\n                            <td>Process mass intensity, purification stage<\/td>\n                            <td data-label=\"Legacy batch process\">~5,200 kg\/kg<\/td>\n                            <td data-label=\"MCSGP with AutoPeak\" class=\"is-up\">1,400 kg\/kg<\/td>\n                        <\/tr>\n                    <\/tbody>\n                <\/table>\n            <\/div>\n            <p class=\"table-note\">Source: Eisenhuth and M\u00fcller-Sp\u00e4th, <em>Processes<\/em> 2025, 13, 3950 (CC BY). The legacy figure is the existing Bivalirudin batch process, which includes extensive side-cut re-chromatography.<\/p>\n\n            <h3>Experimental conditions<\/h3>\n\n            <div class=\"component-grid\">\n                <div class=\"component-card\">\n                    <strong>Test molecule<\/strong>\n                    <p>Bivalirudin, a 20-mer direct thrombin inhibitor, 2,180 g\/mol, from crude of 81% purity produced by solid-phase peptide synthesis.<\/p>\n                <\/div>\n                <div class=\"component-card\">\n                    <strong>Preparative chemistry<\/strong>\n                    <p>C-18 stationary phase with a TFA \/ acetonitrile \/ water solvent system. UV detection at 280 nm.<\/p>\n                <\/div>\n                <div class=\"component-card\">\n                    <strong>Characterization system<\/strong>\n                    <p>Contichrom CUBE 30 (YMC ChromaCon, Zurich), with at least five MCSGP cycles per set point.<\/p>\n                <\/div>\n                <div class=\"component-card\">\n                    <strong>Qualification system<\/strong>\n                    <p>Contichrom TWIN 500 (YMC America) with 30 cm internal diameter dynamic axial compression columns.<\/p>\n                <\/div>\n                <div class=\"component-card\">\n                    <strong>Analytics<\/strong>\n                    <p>Waters CSH C18, 1.7 \u00b5m, with a TFA \/ acetonitrile mobile phase on an Acquity UPLC system.<\/p>\n                <\/div>\n                <div class=\"component-card\">\n                    <strong>Process control<\/strong>\n                    <p>AutoPeak UV-based control active on all MCSGP runs, setting recycling and collection phases from absolute and relative UV triggers.<\/p>\n                <\/div>\n            <\/div>\n\n            <!-- Section 7 -->\n            <h2 id=\"implications\">7. What This Means for Peptide Manufacturing<\/h2>\n\n            <p>On the evidence here, the regulatory framework does not need reinventing for continuous chromatography. The parameter list is largely the batch list, the risk assessment is the standard one, and the qualification requirement is the standard three-batch expectation. What changes is the number of elutions needed to generate data, and the shift from correcting a process to supervising one.<\/p>\n\n            <p>That is a useful result for anyone weighing continuous purification against the validation work it would imply. Of 34 identified parameters, four warranted experiments and one turned out to be critical \u2014 and the paper notes that those same four would also be investigated during characterization of the corresponding batch process. The characterization burden is comparable; the difference is material consumption, since cyclic steady state has to be confirmed from successive identical elution profiles. In this study that extra experimental time was minimized by daisy-chaining the required MCSGP runs and executing them automatically.<\/p>\n\n            <p>The operational advantages appear in the campaign figures rather than in the validation argument. Running uninterrupted over several days, with the control strategy supported by online measurement, produced a substantial reduction in analytical sampling and process mass intensity alongside a higher gross yield. The authors also note that data integrity and electronic batch record handling requirements are identical for batch and MCSGP.<\/p>\n\n            <div class=\"limits-box\">\n                <h4>What the study does not claim<\/h4>\n                <ul class=\"simple-list\">\n                    <li><strong>One molecule, one site.<\/strong> The approach was demonstrated on Bivalirudin at a single manufacturer. The paper states directly that for different peptides or oligonucleotides, other parameters may be identified as potential CPPs. The four tested here are not a general list.<\/li>\n                    <li><strong>The legacy comparison is not a controlled experiment.<\/strong> The 57% yield, 81 IPCs per kg and ~5,200 kg\/kg PMI describe the existing batch process for this peptide, which includes extensive side-cut re-chromatography. The paper presents them as reference figures for the legacy process, not as a controlled comparison run alongside the MCSGP campaign.<\/li>\n                    <li><strong>Two of the three validation elements.<\/strong> The study covers Process Characterization and Process Performance Qualification. Continued Process Verification, the ongoing monitoring phase, is outside its scope.<\/li>\n                    <li><strong>Column lifecycle is excluded.<\/strong> The paper omits it deliberately, noting it is usually stand-alone work extending well beyond the manufacture of PPQ batches.<\/li>\n                    <li><strong>Crude lots still need checking individually.<\/strong> The impurity profile has to be assessed case by case for each new crude lot with a small-scale use test until enough upstream batch experience exists to define standard parameters.<\/li>\n                    <li><strong>The authors have a commercial interest.<\/strong> Ralf Eisenhuth was employed by Bachem AG, which manufactures the peptide, and Thomas M\u00fcller-Sp\u00e4th by YMC ChromaCon, which commercializes MCSGP. The paper discloses both.<\/li>\n                <\/ul>\n            <\/div>\n\n            <!-- Section 8 -->\n            <h2 id=\"glossary\">8. Key Terms in This Study (Glossary)<\/h2>\n\n            <table class=\"glossary-table\">\n                <thead>\n                    <tr>\n                        <th>Term<\/th>\n                        <th>Definition<\/th>\n                    <\/tr>\n                <\/thead>\n                <tbody>\n                    <tr>\n                        <td>AutoPeak<\/td>\n                        <td>UV-based process control that starts and stops MCSGP recycling and collection phases from absolute and relative UV triggers at the column outlets, rather than from elapsed time.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Critical process parameter (CPP)<\/td>\n                        <td>A process parameter whose variation has a demonstrated impact on a critical quality attribute, and which therefore has to be controlled within defined limits.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Critical quality attribute (CQA)<\/td>\n                        <td>A property of the product that must fall within a defined range to ensure quality. The criteria used in this study were product purity, levels of individual related substances, and yield.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Continued Process Verification (CPV)<\/td>\n                        <td>The third element of FDA Process Validation: ongoing monitoring of the process during routine commercial manufacturing.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Cyclic steady state<\/td>\n                        <td>The condition in a continuous process where each cycle reproduces the previous one. Confirmed here from comparable impurity profiles, overlaid UV traces and consistent main cut volumes.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Design of Experiments (DoE)<\/td>\n                        <td>An experimental strategy that varies several parameters together, revealing interactions between them. Not used here \u2014 see OFAT.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Displacer slope<\/td>\n                        <td>The rate at which the eluting solvent strength increases during the gradient. The one parameter classified as critical in this study.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>FMEA<\/td>\n                        <td>Failure Mode and Effect Analysis, a structured risk assessment used to rank process parameters by their potential impact on quality attributes.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Gross-to-gross yield<\/td>\n                        <td>Mass of API produced divided by mass of crude loaded, ignoring the purity and peptide content of the crude. Used here for consistency with the legacy process.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>In-process control (IPC)<\/td>\n                        <td>An analytical test performed on material during manufacturing to confirm the process is performing as intended.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Main cut<\/td>\n                        <td>The product fraction collected from an elution, with its borders set in this process by UV thresholds entered into AutoPeak.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>MCSGP<\/td>\n                        <td>Multicolumn Countercurrent Solvent Gradient Purification: a continuous twin-column gradient chromatography process that recycles impure side fractions internally rather than discarding them.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>OFAT<\/td>\n                        <td>One Factor At A Time: varying a single parameter per experiment. Does not reveal interactions, but allows much wider ranges to be tested than a designed experiment.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Process Analytical Technology (PAT)<\/td>\n                        <td>A framework for designing and controlling manufacturing through timely measurement of critical attributes, set out in FDA guidance and supported by ICH Q8, Q11 and Q13.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Process Characterization (PC)<\/td>\n                        <td>The part of Process Design that identifies potential critical process parameters, tests the high-ranked ones experimentally, and defines the ranges within which quality attributes are met.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Process Mass Intensity (PMI)<\/td>\n                        <td>Total mass of material input per unit mass of product. Reported here for the purification stage only.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Process Performance Qualification (PPQ)<\/td>\n                        <td>The second element of Process Validation: demonstrating at commercial scale, in the actual facility, that the process consistently delivers product meeting specification.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>Proven Acceptable Range (PAR)<\/td>\n                        <td>The range of a process parameter within which quality attributes are demonstrated to be met. Where a parameter shows no effect, the PAR is the full characterized range.<\/td>\n                    <\/tr>\n                    <tr>\n                        <td>\u00b13\u03c3 band<\/td>\n                        <td>Three standard deviations either side of the mean, capturing roughly 99.7% of expected values for a normal distribution. Used here as the threshold for distinguishing a real effect from process noise.<\/td>\n                    <\/tr>\n                <\/tbody>\n            <\/table>\n\n            <!-- Section 9 - FAQ -->\n            <h2 id=\"faq\">9. Frequently Asked Questions<\/h2>\n\n            <div class=\"faq-section\">\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Can a continuous chromatography process be validated for GMP manufacturing?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>Yes, and this study is the first published account of how. It applies the standard FDA Process Validation framework to MCSGP, working through Process Characterization and Process Performance Qualification for the purification of Bivalirudin. The process parameter list turns out to be largely the same as for batch chromatography, with a few additions covering the recycling and collection step, and the qualification requirement is the standard expectation of at least three consecutive representative batches.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Which process parameters matter most in MCSGP?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>In this case, four of 34 identified parameters warranted experimental testing: linear elution velocity, gradient slope, column load, and detection wavelength. Of those, only gradient slope was ultimately classified as a critical process parameter. The paper is explicit that this is molecule-specific \u2014 for different peptides or oligonucleotides, other parameters may prove critical.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Why was gradient slope the critical parameter when purity stayed within specification?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>Because purity was not the attribute that moved. Every run produced pool purity above 99.0%, within a \u00b13\u03c3 band of 99.30% \u00b1 0.32% \u2014 statistically indistinguishable from process noise. The individual impurity profiles told a different story: at \u221225% displacer slope, one impurity rose from below the limit of quantitation to 0.13%. Since the specification required the impurity profile to be comparable to the legacy process, that single change was enough to classify the parameter as critical and tighten its permitted variance.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Does MCSGP need more or fewer in-process controls than batch chromatography?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>Fewer, once the process is at cyclic steady state. In this campaign the number of in-process controls fell from 81 per kg for the legacy batch process to 3.2 per kg \u2014 108 tests across the whole campaign against 2,753. The supervision strategy front-loads the sampling: every main cut is analyzed during start-up until steady state criteria are met, after which HPLC sampling drops to two samples per day, backed by online UV trace overlay and main cut volume recording.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Does Process Characterization of MCSGP need more material than batch?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>Yes. Where one elution per tested parameter is considered sufficient for a batch purification, an MCSGP experiment needs at least three cycles with two elutions each, so that cyclic steady state can be confirmed and impurity accumulation through the recycling streams ruled out. The paper notes this requirement, and that in this study the extra experimental time was minimized by daisy-chaining the required runs and executing them automatically.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Is AutoPeak considered Process Analytical Technology?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>The paper positions it as PAT in the sense of the FDA PAT guidance. AutoPeak monitors UV at the column outlets and uses absolute and relative triggers to start and stop the recycling and collection phases, so the cut points follow the peak rather than the clock. The FDA Process Validation and PAT guidance documents, together with ICH Q8, Q11 and Q13, explicitly support PAT and real-time monitoring as part of a control strategy.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        What scale was the qualification campaign run at?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>Commercial scale. Four multiday MCSGP runs on a Contichrom TWIN 500 system with two 30 cm internal diameter columns processed 54.5 kg of crude Bivalirudin into 33.6 kg of API at 99.2% purity, across 397 MCSGP elutions over 235 hours plus a solid phase extraction step of 42 elutions over 65 hours on the same equipment.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n\n                <div class=\"faq-item\">\n                    <button class=\"faq-question\" aria-expanded=\"false\">\n                        Is the full article freely available?\n                    <\/button>\n                    <div class=\"faq-answer\">\n                        <div class=\"faq-answer-inner\">\n                            <p>Yes. It is published open access under a CC BY license in <em>Processes<\/em> (MDPI), so it can be read, downloaded and reused with citation. The full parameter tables, the characterization results and the qualification campaign data are in the article itself.<\/p>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/article>\n    <\/div>\n\n\n\n<!-- Structured data. Replace the two page URLs below with this page's permalink. -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"ScholarlyArticle\",\n      \"@id\": \"https:\/\/doi.org\/10.3390\/pr13123950\",\n      \"headline\": \"Process Characterization and Performance Qualification of MCSGP\",\n      \"name\": \"Process Characterization and Performance Qualification of MCSGP\",\n      \"datePublished\": \"2025-12-06\",\n      \"inLanguage\": \"en\",\n      \"isAccessibleForFree\": true,\n      \"license\": \"https:\/\/creativecommons.org\/licenses\/by\/4.0\/\",\n      \"url\": \"https:\/\/www.mdpi.com\/2227-9717\/13\/12\/3950\",\n      \"sameAs\": \"https:\/\/doi.org\/10.3390\/pr13123950\",\n      \"identifier\": [{ \"@type\": \"PropertyValue\", \"propertyID\": \"DOI\", \"value\": \"10.3390\/pr13123950\" }],\n      \"keywords\": [\"continuous chromatography\",\"process characterization\",\"process validation\",\"process performance qualification\",\"MCSGP\",\"AutoPeak\",\"Process Analytical Technology\",\"Bivalirudin\",\"peptide purification\",\"critical process parameter\"],\n      \"abstract\": \"The first published Process Characterization and Process Performance Qualification approach for MCSGP continuous chromatography, demonstrated on the purification of synthetic Bivalirudin. Of 34 identified process parameters, four were tested experimentally and only gradient slope was classified as a critical process parameter. A two-phase supervision strategy backed by AutoPeak UV-based process analytical technology was verified across four qualification runs at commercial scale, reducing in-process controls from 81 to 3.2 per kg and process mass intensity from around 5200 to 1400 kg per kg, with gross-to-gross yield rising from 57 to 62 percent against the legacy batch process.\",\n      \"author\": [\n        { \"@type\": \"Person\", \"name\": \"Ralf Eisenhuth\", \"affiliation\": { \"@type\": \"Organization\", \"name\": \"Bachem AG\" } },\n        { \"@type\": \"Person\", \"name\": \"Thomas M\u00fcller-Sp\u00e4th\", \"identifier\": \"https:\/\/orcid.org\/0000-0002-4035-0705\", \"affiliation\": { \"@type\": \"Organization\", \"name\": \"ChromaCon AG\" } }\n      ],\n      \"publisher\": { \"@type\": \"Organization\", \"name\": \"MDPI\" },\n      \"isPartOf\": {\n        \"@type\": \"PublicationIssue\",\n        \"issueNumber\": \"12\",\n        \"datePublished\": \"2025-12\",\n        \"isPartOf\": {\n          \"@type\": \"PublicationVolume\",\n          \"volumeNumber\": \"13\",\n          \"isPartOf\": { \"@type\": \"Periodical\", \"name\": \"Processes\", \"issn\": \"2227-9717\" }\n        }\n      },\n      \"pagination\": \"3950\"\n    },\n    {\n      \"@type\": \"WebPage\",\n      \"@id\": \"https:\/\/www.chromacon.com\/mcsgp-process-validation-ppq\/\",\n      \"url\": \"https:\/\/www.chromacon.com\/mcsgp-process-validation-ppq\/\",\n      \"name\": \"A Validation Pathway for Continuous Peptide Chromatography\",\n      \"description\": \"How Process Characterization and Process Performance Qualification were carried out for MCSGP continuous chromatography, demonstrated on commercial-scale Bivalirudin purification.\",\n      \"mainEntity\": { \"@id\": \"https:\/\/doi.org\/10.3390\/pr13123950\" }\n    },\n    {\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Can a continuous chromatography process be validated for GMP manufacturing?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes, and this study is the first published account of how. It applies the standard FDA Process Validation framework to MCSGP, working through Process Characterization and Process Performance Qualification for the purification of Bivalirudin. The process parameter list turns out to be largely the same as for batch chromatography, with a few additions covering the recycling and collection step, and the qualification requirement is the standard expectation of at least three consecutive representative batches.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Which process parameters matter most in MCSGP?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"In this case, four of 34 identified parameters warranted experimental testing: linear elution velocity, gradient slope, column load, and detection wavelength. Of those, only gradient slope was ultimately classified as a critical process parameter. The paper is explicit that this is molecule-specific \u2014 for different peptides or oligonucleotides, other parameters may prove critical.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Why was gradient slope the critical parameter when purity stayed within specification?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Because purity was not the attribute that moved. Every run produced pool purity above 99.0%, within a \u00b13\u03c3 band of 99.30% \u00b1 0.32% \u2014 statistically indistinguishable from process noise. The individual impurity profiles told a different story: at \u221225% displacer slope, one impurity rose from below the limit of quantitation to 0.13%. Since the specification required the impurity profile to be comparable to the legacy process, that single change was enough to classify the parameter as critical and tighten its permitted variance.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Does MCSGP need more or fewer in-process controls than batch chromatography?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Fewer, once the process is at cyclic steady state. In this campaign the number of in-process controls fell from 81 per kg for the legacy batch process to 3.2 per kg \u2014 108 tests across the whole campaign against 2,753. The supervision strategy front-loads the sampling: every main cut is analyzed during start-up until steady state criteria are met, after which HPLC sampling drops to two samples per day, backed by online UV trace overlay and main cut volume recording.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Does Process Characterization of MCSGP need more material than batch?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. Where one elution per tested parameter is considered sufficient for a batch purification, an MCSGP experiment needs at least three cycles with two elutions each, so that cyclic steady state can be confirmed and impurity accumulation through the recycling streams ruled out. The paper notes this requirement, and that in this study the extra experimental time was minimized by daisy-chaining the required runs and executing them automatically.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is AutoPeak considered Process Analytical Technology?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"The paper positions it as PAT in the sense of the FDA PAT guidance. AutoPeak monitors UV at the column outlets and uses absolute and relative triggers to start and stop the recycling and collection phases, so the cut points follow the peak rather than the clock. The FDA Process Validation and PAT guidance documents, together with ICH Q8, Q11 and Q13, explicitly support PAT and real-time monitoring as part of a control strategy.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"What scale was the qualification campaign run at?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Commercial scale. Four multiday MCSGP runs on a Contichrom TWIN 500 system with two 30 cm internal diameter columns processed 54.5 kg of crude Bivalirudin into 33.6 kg of API at 99.2% purity, across 397 MCSGP elutions over 235 hours plus a solid phase extraction step of 42 elutions over 65 hours on the same equipment.\" }\n        },\n        {\n          \"@type\": \"Question\",\n          \"name\": \"Is the full article freely available?\",\n          \"acceptedAnswer\": { \"@type\": \"Answer\", \"text\": \"Yes. It is published open access under a CC BY license in Processes (MDPI), so it can be read, downloaded and reused with citation. The full parameter tables, the characterization results and the qualification campaign data are in the article itself.\" }\n        }\n      ]\n    },\n    {\n      \"@type\": \"BreadcrumbList\",\n      \"itemListElement\": [\n        {\"@type\":\"ListItem\",\"position\":1,\"name\":\"Research Highlights\",\"item\":\"https:\/\/www.chromacon.com\/research-highlights\/\"},\n        {\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Validation Pathway for Continuous Peptide Chromatography\",\"item\":\"https:\/\/www.chromacon.com\/mcsgp-process-validation-ppq\/\"}\n      ]\n    }\n  ]\n}\n<\/script>\n\n\n\n<script>\n        \/\/ FAQ Accordion functionality\n        document.querySelectorAll('.faq-question').forEach(button => {\n            button.addEventListener('click', () => {\n                const faqItem = button.parentElement;\n                const isOpen = faqItem.classList.contains('open');\n\n                \/\/ Close all other items\n                document.querySelectorAll('.faq-item').forEach(item => {\n                    item.classList.remove('open');\n                    item.querySelector('.faq-question').setAttribute('aria-expanded', 'false');\n                });\n\n                \/\/ Toggle current item\n                if (!isOpen) {\n                    faqItem.classList.add('open');\n                    button.setAttribute('aria-expanded', 'true');\n                }\n            });\n        });\n\n        \/\/ Mobile TOC toggle\n        const mobileToc = document.getElementById('mobileToc');\n        const mobileTocToggle = mobileToc.querySelector('.mobile-toc-toggle');\n\n        mobileTocToggle.addEventListener('click', () => {\n            const isOpen = mobileToc.classList.contains('open');\n            mobileToc.classList.toggle('open');\n            mobileTocToggle.setAttribute('aria-expanded', !isOpen);\n        });\n\n        \/\/ Close mobile TOC when clicking a link\n        document.querySelectorAll('.mobile-toc-list a').forEach(link => {\n            link.addEventListener('click', () => {\n                mobileToc.classList.remove('open');\n                mobileTocToggle.setAttribute('aria-expanded', 'false');\n            });\n        });\n\n        \/\/ Highlight active TOC item on scroll (desktop)\n        const observerOptions = {\n            rootMargin: '-100px 0px -70% 0px',\n            threshold: 0\n        };\n\n        const observer = new IntersectionObserver(entries => {\n            entries.forEach(entry => {\n                const id = entry.target.getAttribute('id');\n                const tocLink = document.querySelector(`.toc-list a[href=\"#${id}\"]`);\n\n                if (tocLink) {\n                    if (entry.isIntersecting) {\n                        document.querySelectorAll('.toc-list a').forEach(link => {\n                            link.classList.remove('active');\n                        });\n                        tocLink.classList.add('active');\n                    }\n                }\n            });\n        }, observerOptions);\n\n        document.querySelectorAll('h2[id]').forEach(section => {\n            observer.observe(section);\n        });\n\n        \/\/ Parameter explorer (Section 3)\n        (function () {\n            const DATA = {\n                a: {\n                    velocity: '\u00b12%', slope: '\u00b18%', load: '\u00b12%', wavelength: '\u00b11.6<span> nm<\/span>',\n                    caption: 'What the equipment actually does. Each flow meter on the TWIN pumps carries a ' +\n                             '<strong>\u00b12%<\/strong> calibration tolerance, and eluent preparation adds to the spread ' +\n                             'on the gradient slope. These are the ranges routine manufacturing has to live with.'\n                },\n                b: {\n                    velocity: '\u00b110%<span> 5\u00d7 normal<\/span>', slope: '\u00b125%<span> \u22483\u00d7 normal<\/span>',\n                    load: '\u00b110%<span> 5\u00d7 normal<\/span>', wavelength: '\u00b15<span> nm \u00b7 \u22483\u00d7 normal<\/span>',\n                    caption: 'Characterization pushed every parameter at least three times wider than its normal ' +\n                             'variation, and in two cases five times wider, to stress the process beyond ' +\n                             'what it encounters in production.'\n                },\n                c: {\n                    velocity: 'Robust', slope: 'CPP<span> tighter limits<\/span>', load: 'Robust', wavelength: 'Robust',\n                    caption: 'Across every set point, pool purity stayed above 99.0% and inside a \u00b13\u03c3 band of ' +\n                             '<strong>99.30% \u00b1 0.32%<\/strong> \u2014 indistinguishable from process noise. Only the ' +\n                             'shallow gradient slope changed the impurity profile, lifting one impurity from below ' +\n                             'the limit of quantitation to 0.13%.'\n                }\n            };\n\n            const tabs = document.querySelectorAll('.explorer-tab');\n            if (!tabs.length) return;\n\n            const caption = document.getElementById('pcCaption');\n            const fields = {\n                velocity:   document.getElementById('pcVelocity'),\n                slope:      document.getElementById('pcSlope'),\n                load:       document.getElementById('pcLoad'),\n                wavelength: document.getElementById('pcWavelength')\n            };\n\n            function show(key) {\n                const d = DATA[key];\n                if (!d) return;\n\n                ['a', 'b', 'c'].forEach(k => {\n                    const g = document.getElementById('pc-st-' + k);\n                    if (g) g.classList.toggle('is-on', k === key);\n                });\n\n                Object.keys(fields).forEach(f => {\n                    if (fields[f]) fields[f].innerHTML = d[f];\n                });\n\n                if (caption) caption.innerHTML = d.caption;\n\n                tabs.forEach(t => t.setAttribute('aria-pressed', String(t.dataset.state === key)));\n            }\n\n            tabs.forEach(t => t.addEventListener('click', () => show(t.dataset.state)));\n        })();\n    <\/script>\n","protected":false},"excerpt":{"rendered":"<p>Continuous chromatography is already in production use, but there was no published account of how to validate it for a regulatory filing. This study provides one, working through Process Characterization and Performance Qualification for MCSGP on commercial-scale Bivalirudin purification: 34 parameters assessed, four tested, one critical.<\/p>\n","protected":false},"featured_media":3015,"comment_status":"closed","ping_status":"closed","template":"","article_category":[298],"class_list":["post-16569","articles","type-articles","status-publish","has-post-thumbnail","","article_category-peptide-purification"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/articles\/16569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/articles"}],"about":[{"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/types\/articles"}],"replies":[{"embeddable":true,"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/comments?post=16569"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/media\/3015"}],"wp:attachment":[{"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/media?parent=16569"}],"wp:term":[{"taxonomy":"article_category","embeddable":true,"href":"https:\/\/www.chromacon.com\/en\/wp-json\/wp\/v2\/article_category?post=16569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}