Master Data Management for Pharma | ZMDM
:root {
–primary: #1a365d;
–primary-dark: #0f2744;
–accent: #2b6cb0;
–accent-light: #4299e1;
–warning: #c53030;
–success: #276749;
–light-bg: #f7fafc;
–border: #e2e8f0;
–text: #2d3748;
–text-muted: #718096;
–pharma-accent: #5b21b6;
–pharma-light: #ede9fe;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
font-size: 16px;
}
body {
font-family: ‘DM Sans’, ‘Segoe UI’, system-ui, -apple-system, sans-serif;
font-size: 1rem;
line-height: 1.7;
color: var(–text);
background: #fff;
}
.container {
max-width: 1100px;
margin: 0 auto;
padding: 0 2rem;
}
/* Hero Section */
.hero {
background: linear-gradient(135deg, var(–primary) 0%, var(–pharma-accent) 50%, var(–primary-dark) 100%);
color: white;
padding: 5rem 2rem;
text-align: center;
position: relative;
overflow: hidden;
}
.hero::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(circle at 20% 80%, rgba(91, 33, 182, 0.2) 0%, transparent 50%),
radial-gradient(circle at 80% 20%, rgba(255, 255, 255, 0.08) 0%, transparent 40%);
pointer-events: none;
}
.hero-content {
position: relative;
z-index: 1;
}
.hero-badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: rgba(255,255,255,0.15);
backdrop-filter: blur(10px);
padding: 0.625rem 1.5rem;
border-radius: 50px;
font-size: 0.75rem;
margin-bottom: 1.5rem;
text-transform: uppercase;
letter-spacing: 1.5px;
border: 1px solid rgba(255,255,255,0.2);
}
.hero h1 {
font-size: 2.5rem;
font-weight: 700;
margin-bottom: 1.25rem;
line-height: 1.2;
letter-spacing: -0.5px;
color: #ffffff;
}
.hero .tagline {
font-size: 1.125rem;
opacity: 0.95;
max-width: 750px;
margin: 0 auto 2rem;
line-height: 1.6;
}
.hero-buttons {
display: flex;
justify-content: center;
gap: 1rem;
flex-wrap: wrap;
}
.hero-btn {
display: inline-block;
padding: 0.875rem 1.75rem;
font-size: 0.875rem;
font-weight: 600;
text-decoration: none;
border-radius: 8px;
transition: all 0.3s ease;
}
.hero-btn-primary {
background: white;
color: var(–primary);
}
.hero-btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px rgba(0,0,0,0.2);
}
.hero-btn-secondary {
background: transparent;
color: white;
border: 2px solid rgba(255,255,255,0.5);
}
.hero-btn-secondary:hover {
background: rgba(255,255,255,0.1);
border-color: white;
}
/* Problem Section */
.problem-section {
padding: 4rem 2rem;
background: white;
}
.problem-section h2 {
font-size: 1.75rem;
color: var(–primary);
margin-bottom: 1rem;
text-align: center;
}
.problem-section > .container > p {
text-align: center;
color: var(–text);
max-width: 800px;
margin: 0 auto 2.5rem;
}
.problem-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
gap: 1.25rem;
margin-bottom: 2.5rem;
}
.problem-card {
background: #fff5f5;
border-radius: 12px;
padding: 1.5rem;
border-left: 4px solid var(–warning);
}
.problem-card h4 {
color: var(–warning);
font-size: 1rem;
margin-bottom: 0.5rem;
}
.problem-card p {
font-size: 0.875rem;
color: var(–text);
margin: 0;
}
.systems-scatter {
background: var(–light-bg);
border-radius: 16px;
padding: 2rem;
text-align: center;
}
.systems-scatter h4 {
color: var(–primary);
margin-bottom: 1.5rem;
font-size: 1rem;
}
.systems-grid {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 0.75rem;
}
.system-tag {
background: white;
padding: 0.5rem 1rem;
border-radius: 8px;
font-size: 0.8125rem;
font-weight: 500;
color: var(–text);
border: 1px solid var(–border);
}
/* Business Value Section */
.value-section {
padding: 4rem 2rem;
background: var(–light-bg);
}
.section-header {
text-align: center;
margin-bottom: 3rem;
}
.section-header h2 {
font-size: 1.75rem;
color: var(–primary);
margin-bottom: 0.75rem;
font-weight: 700;
}
.section-header p {
color: var(–text-muted);
font-size: 1rem;
max-width: 650px;
margin: 0 auto;
}
.value-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 1.5rem;
}
.value-card {
background: white;
border-radius: 16px;
padding: 2rem;
text-align: center;
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
border-top: 4px solid var(–pharma-accent);
}
.value-card h3 {
font-size: 1.125rem;
color: var(–primary);
margin-bottom: 0.75rem;
}
.value-card p {
font-size: 0.9375rem;
color: var(–text-muted);
margin-bottom: 1.5rem;
}
.value-metric {
background: var(–pharma-light);
border-radius: 12px;
padding: 1rem;
}
.value-metric .metric-value {
font-size: 2rem;
font-weight: 700;
color: var(–pharma-accent);
line-height: 1;
}
.value-metric .metric-label {
font-size: 0.75rem;
color: var(–text-muted);
text-transform: uppercase;
letter-spacing: 0.5px;
margin-top: 0.25rem;
}
/* Value Chain Section */
.value-chain-section {
padding: 4rem 2rem;
background: white;
}
.value-chain-section h2 {
font-size: 1.75rem;
color: var(–primary);
margin-bottom: 1rem;
text-align: center;
}
.value-chain-section > .container > p {
text-align: center;
color: var(–text-muted);
max-width: 700px;
margin: 0 auto 2.5rem;
}
.value-chain {
display: flex;
justify-content: center;
flex-wrap: wrap;
gap: 0.5rem;
margin-bottom: 1rem;
}
.chain-step {
background: linear-gradient(135deg, var(–pharma-accent) 0%, var(–primary) 100%);
color: white;
padding: 0.75rem 1.25rem;
border-radius: 8px;
font-size: 0.875rem;
font-weight: 600;
position: relative;
}
.chain-arrow {
color: var(–text-muted);
font-size: 1.25rem;
display: flex;
align-items: center;
}
/* Process Tabs Section */
.process-section {
padding: 4rem 2rem;
background: var(–light-bg);
}
.process-section h2 {
font-size: 1.75rem;
color: var(–primary);
margin-bottom: 1rem;
text-align: center;
}
.process-section > .container > p {
text-align: center;
color: var(–text-muted);
max-width: 650px;
margin: 0 auto 2rem;
}
.process-tabs {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 0.5rem;
margin-bottom: 2rem;
}
.process-tab {
background: white;
border: 2px solid var(–border);
padding: 0.625rem 1.25rem;
border-radius: 8px;
font-size: 0.875rem;
font-weight: 600;
color: var(–text);
cursor: pointer;
transition: all 0.2s ease;
}
.process-tab:hover,
.process-tab.active {
background: var(–pharma-accent);
border-color: var(–pharma-accent);
color: white;
}
.process-content {
background: white;
border-radius: 16px;
padding: 2rem;
box-shadow: 0 4px 20px rgba(0,0,0,0.06);
}
.process-content h3 {
font-size: 1.375rem;
color: var(–primary);
margin-bottom: 1rem;
}
.process-content .process-question {
font-size: 1.0625rem;
font-style: italic;
color: var(–pharma-accent);
margin-bottom: 1rem;
}
.process-content > p {
margin-bottom: 1.5rem;
color: var(–text);
}
.process-benefits {
list-style: none;
margin-bottom: 1.5rem;
}
.process-benefits li {
padding: 0.5rem 0;
padding-left: 1.75rem;
position: relative;
color: var(–text);
}
.process-benefits li::before {
content: “✓”;
position: absolute;
left: 0;
color: var(–success);
font-weight: bold;
}
.process-content h4 {
font-size: 1rem;
color: var(–primary);
margin-bottom: 1rem;
}
.mdo-tags {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.mdo-tag {
background: var(–pharma-light);
color: var(–pharma-accent);
padding: 0.375rem 0.875rem;
border-radius: 6px;
font-size: 0.8125rem;
font-weight: 500;
}
/* Master Data Objects Section */
.mdo-section {
padding: 4rem 2rem;
background: white;
}
.mdo-section h2 {
font-size: 1.75rem;
color: var(–primary);
margin-bottom: 1rem;
text-align: center;
}
.mdo-section > .container > p {
text-align: center;
color: var(–text-muted);
max-width: 700px;
margin: 0 auto 2.5rem;
}
.mdo-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 1.5rem;
}
.mdo-card {
background: var(–light-bg);
border-radius: 12px;
padding: 1.5rem;
border-top: 4px solid var(–accent);
}
.mdo-card h4 {
font-size: 1.0625rem;
color: var(–primary);
margin-bottom: 1rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.mdo-card h4 .icon {
width: 28px;
height: 28px;
background: var(–accent);
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.mdo-card h4 .icon svg {
width: 14px;
height: 14px;
stroke: white;
fill: none;
stroke-width: 2;
}
.mdo-card ul {
list-style: none;
}
.mdo-card li {
padding: 0.375rem 0;
font-size: 0.875rem;
color: var(–text);
border-bottom: 1px solid var(–border);
}
.mdo-card li:last-child {
border-bottom: none;
}
/* Results Section */
.results-section {
padding: 4rem 2rem;
background: linear-gradient(135deg, var(–primary) 0%, var(–pharma-accent) 100%);
color: white;
}
.results-section h2 {
font-size: 1.75rem;
color: white;
margin-bottom: 2rem;
text-align: center;
}
.results-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
}
.result-card {
text-align: center;
}
.result-card .result-value {
font-size: 3.5rem;
font-weight: 700;
line-height: 1;
margin-bottom: 0.5rem;
}
.result-card .result-label {
font-size: 1rem;
font-weight: 600;
margin-bottom: 0.5rem;
opacity: 0.95;
}
.result-card .result-detail {
font-size: 0.875rem;
opacity: 0.8;
}
/* Compliance Section */
.compliance-section {
padding: 4rem 2rem;
background: var(–light-bg);
}
.compliance-section h2 {
font-size: 1.75rem;
color: var(–primary);
margin-bottom: 1rem;
text-align: center;
}
.compliance-section > .container > p {
text-align: center;
color: var(–text-muted);
max-width: 700px;
margin: 0 auto 2.5rem;
}
.compliance-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
}
.compliance-card {
background: white;
border-radius: 12px;
padding: 1.5rem;
text-align: center;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
border: 1px solid var(–border);
}
.compliance-card .compliance-icon {
width: 48px;
height: 48px;
background: linear-gradient(135deg, var(–success) 0%, #2f855a 100%);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 0.75rem;
}
.compliance-card .compliance-icon svg {
width: 24px;
height: 24px;
stroke: white;
fill: none;
stroke-width: 2;
}
.compliance-card h4 {
font-size: 0.9375rem;
color: var(–primary);
margin-bottom: 0.25rem;
}
.compliance-card p {
font-size: 0.8125rem;
color: var(–text-muted);
margin: 0;
}
/* CTA Section */
.cta-section {
background: linear-gradient(135deg, var(–primary) 0%, var(–pharma-accent) 100%);
padding: 5rem 2rem;
text-align: center;
position: relative;
overflow: hidden;
}
.cta-section::before {
content: ”;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background:
radial-gradient(circle at 30% 70%, rgba(255, 255, 255, 0.1) 0%, transparent 50%),
radial-gradient(circle at 70% 30%, rgba(255, 255, 255, 0.05) 0%, transparent 40%);
pointer-events: none;
}
.cta-content {
position: relative;
z-index: 1;
}
.cta-section h2 {
color: white;
font-size: 2rem;
font-weight: 700;
margin-bottom: 1rem;
}
.cta-section p {
color: rgba(255,255,255,0.9);
font-size: 1.125rem;
max-width: 600px;
margin: 0 auto 2.5rem;
}
.cta-buttons {
display: flex;
justify-content: center;
gap: 1.25rem;
flex-wrap: wrap;
}
.cta-btn {
display: inline-block;
padding: 0.875rem 1.75rem;
font-size: 0.875rem;
font-weight: 600;
text-decoration: none;
border-radius: 8px;
transition: all 0.3s ease;
text-align: center;
}
.cta-primary {
background: white;
color: var(–primary);
}
.cta-primary:hover {
background: var(–light-bg);
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(0,0,0,0.2);
}
.cta-secondary {
background: transparent;
color: white;
border: 2px solid rgba(255,255,255,0.5);
}
.cta-secondary:hover {
background: rgba(255,255,255,0.1);
border-color: white;
transform: translateY(-3px);
}
/* Responsive */
@media (max-width: 768px) {
html {
font-size: 15px;
}
.hero h1 {
font-size: 2rem;
}
.value-grid {
grid-template-columns: 1fr;
}
.results-grid {
grid-template-columns: 1fr;
gap: 2rem;
}
.chain-arrow {
display: none;
}
.cta-section h2 {
font-size: 1.75rem;
}
}
Master Data Management for Pharma
Accelerate New Product Introduction. Ensure Compliance. Optimize Your Supply Chain.
Pharmaceutical master data spans R&D, regulatory, manufacturing, quality, and commercial — all under intense scrutiny. When data is fragmented, timelines slip and compliance risks multiply. ZMDM gives your teams control.
Your Drug Data Lives in Silos. Your Regulators Don’t Care.
Pharmaceutical companies manage some of the most complex master data in any industry — spanning molecules to markets. Yet most still maintain this data across disconnected systems, spreadsheets, and tribal knowledge. When the FDA asks a question, how long does it take to answer?
Regulatory Delays
Submission packages held up because product specs, manufacturing sites, and supplier data don’t align across systems
Batch Release Bottlenecks
QA waiting on master data verification while finished goods sit in quarantine
Serialization Failures
GTIN/NDC mismatches causing aggregation errors and shipment delays at the packaging line
CMO Data Gaps
Contract manufacturers working from outdated specs because change control didn’t propagate
Audit Scrambles
Every inspection requires weeks of data gathering from multiple systems and owners
Launch Readiness Issues
Commercial and supply chain data not ready when regulatory approval comes through
Where Your Pharma Master Data Lives Today
ERP
LIMS
QMS
RIM
PLM
CDMS
Serialization
MES
Spreadsheets
Regulatory Portals
Supplier Portals
CTMS
Safety DB
Email
Speed to Market
Accelerate NDA/BLA submissions. Get commercial-ready data in place before approval. Launch in weeks, not months.
40%+
Launch Cycle Time Reduction
Regulatory Confidence
Answer regulator questions in hours, not weeks. Maintain audit-ready data with complete traceability and change history.
Supply Chain Reliability
Right first time manufacturing. Faster batch release. Confident cold chain management from API to patient.
Master Data Across Your Entire Pharma Value Chain
From molecule discovery to patient delivery, every step depends on accurate, complete, compliant data.
R&D / Discovery
→
Clinical Development
→
Regulatory
→
Manufacturing
→
Quality
→
Supply Chain
→
Commercial
→
Pharmacovigilance
Master Data for Every Pharma Business Process
Click on a process to see how better master data drives better outcomes.
Product Registration
Clinical Trials
Manufacturing
Serialization
Quality
Supply Chain
Commercial Launch
Pharmacovigilance
Product Registration & Regulatory Affairs
Why does preparing a regulatory submission feel like an archaeological dig?
Because product specifications, manufacturing site data, supplier qualifications, and stability data live in different systems owned by different teams. Regulatory affairs spends more time gathering and reconciling data than actually preparing submissions.
- Single source of truth for registered product specifications across all markets
- Manufacturing site master with equipment, processes, and regulatory status by region
- Excipient and API supplier qualifications linked to product registrations
- Change control automatically flags impacted registrations
- Variation tracking with regulatory timeline management
- eCTD-ready data structures for Module 3 content
Key Master Data Objects
Product Registration Master
Drug Product Specifications
Manufacturing Site Master
Stability Protocols
Excipient Master
API Source Master
Container Closure Systems
Regulatory Submission Tracker
Clinical Trial Master Data
Why is clinical supply always scrambling at the last minute?
Because investigational product specifications, site requirements, comparator sourcing, and labeling requirements are managed in disconnected systems. When protocol amendments happen, the downstream impact takes weeks to assess.
- Investigational product master linked to clinical protocols and amendments
- Clinical site master with investigator qualifications and regulatory status
- Comparator and reference product specifications centrally managed
- Clinical supply packaging configurations by country and protocol
- IRT integration for real-time randomization and supply management
- Temperature excursion protocols and cold chain requirements
Key Master Data Objects
Investigational Product Master
Clinical Protocol Master
Investigator Site Master
Comparator Product Specs
Clinical Labeling Requirements
Kit Configurations
Country Regulatory Requirements
Depot/Distribution Master
Manufacturing & Batch Records
Why do batch record deviations keep pointing back to master data issues?
Because the BOM in the ERP doesn’t match the registered formulation. Equipment qualifications are tracked separately from recipes. And when you use a contract manufacturer, they’re working from PDF specifications that may be two revisions old.
- Formulation and BOM with full revision control and regulatory linkage
- Master batch record templates synchronized with manufacturing sites
- Equipment master with qualification status and cleaning requirements
- Process parameters with validated ranges and critical process parameters
- In-process control specifications linked to batch records
- CMO/CDMO data packages with controlled distribution and acknowledgment
Key Master Data Objects
Formulation / BOM
Master Batch Record
Equipment Master
Process Parameters
Work Centers
In-Process Controls
Cleaning Validation
CMO Site Master
Serialization & Track and Trace
Why do serialization errors keep stopping your packaging lines?
Because GTIN assignments, NDC codes, market-specific requirements, and packaging hierarchy data are managed across multiple systems. When a new SKU is introduced or a market requirement changes, the serialization system is the last to know.
- GTIN/NDC master with packaging hierarchy and market assignments
- Serialization configuration by product, market, and packaging level
- Aggregation rules and parent-child relationships managed centrally
- Market-specific regulatory requirements (DSCSA, FMD, NMPA, etc.)
- CMO serialization master data packages with validation protocols
- Returns and repackaging serialization requirements
Key Master Data Objects
GTIN Master
NDC Directory
Packaging Hierarchy
Market Requirements
Serialization Configuration
Aggregation Rules
Trading Partner Master
GLN Directory
Quality Management
Why does batch release take so long when nothing is actually wrong?
Because QA has to verify master data across multiple systems — specifications, test methods, approved suppliers, stability data, and certificates. The data exists, but finding it, confirming it’s current, and documenting the verification takes time.
- Product specifications with complete test method linkage
- Approved supplier list with qualification status and audit history
- Stability protocols and specifications integrated with product master
- Certificate of Analysis templates with dynamic specification lookup
- Reference standard master with qualification and expiry tracking
- Deviation and CAPA linkage to affected master data records
Key Master Data Objects
Product Specifications
Test Methods
Approved Supplier List
Stability Protocols
Reference Standards
Sampling Plans
Certificate Templates
Audit Schedule Master
Supply Chain & Distribution
Why is your planning team always asking for “the real” lead times?
Because the lead times in the system were set at launch and never updated. Storage requirements vary by product but aren’t reflected in your network model. And when you qualified a new supplier, nobody updated the sourcing rules.
- API and excipient supplier master with lead times, MOQs, and qualifications
- Storage and handling requirements by product with cold chain specifications
- Distribution network master with GDP-qualified sites and capabilities
- Shelf life and dating rules by market and product configuration
- Import/export requirements by country with controlled substance classifications
- Planning parameters owned and maintained by planning teams
Key Master Data Objects
Supplier Master
Material Master
Storage Requirements
Distribution Network
Lead Times
Shelf Life Rules
Cold Chain Specs
Trade Compliance
Commercial Launch Readiness
Why isn’t commercial data ready when regulatory approval comes through?
Because commercial, supply chain, and regulatory operate on different timelines with different systems. The focus is on getting approval — commercial readiness is an afterthought. Then it’s a scramble to set up pricing, contracts, and customer data.
- Launch readiness dashboard with master data completeness by market
- Pricing master with WAC, AWP, ASP, and government pricing structures
- Contract and rebate structures linked to product and customer hierarchies
- Wholesaler and distributor setup with credit and compliance requirements
- Pharmacy and HCO/HCP master for commercial operations
- Patient program data structures for copay cards and assistance programs
Key Master Data Objects
Pricing Master
Contract Master
Customer Hierarchy
Wholesaler Master
HCO/HCP Master
340B Eligibility
Rebate Structures
Patient Programs
Pharmacovigilance & Safety
Why does the safety database have different product names than the commercial systems?
Because product master data for pharmacovigilance was set up separately, often by different vendors. When formulations change or new presentations launch, the safety database isn’t always updated — creating reconciliation issues for aggregate reports.
- Product dictionary aligned with regulatory submissions and commercial systems
- Medicinal product identifiers (MPID, PhPID) managed centrally
- Formulation and ingredient data synchronized for coding accuracy
- Reporter and site master for case processing efficiency
- Literature source master for systematic review tracking
- Signal management reference data for benefit-risk assessment
Key Master Data Objects
Product Dictionary
MPID / PhPID
Ingredient Master
Reporter Master
MedDRA Mapping
WHODrug Integration
Regulatory Authority Master
Literature Sources
The Master Data That Runs Your Pharma Business
Every process depends on these core data objects. When they’re accurate, complete, and compliant, everything works. When they’re not, you’re managing risk.
Drug Product Master
- Product identifiers (NDC, GTIN, proprietary)
- Dosage form and strength
- Route of administration
- Therapeutic classification
- Regulatory status by market
- Lifecycle stage
Formulation & BOM
- Active ingredients and quantities
- Excipient specifications
- Overage allowances
- Revision history
- Scale-up factors
- Registration linkage
Supplier / Vendor Master
- Supplier qualification status
- Quality agreements
- Audit history and findings
- API/excipient certifications
- Lead times and capacities
- Alternative suppliers
Manufacturing Site Master
- Site regulatory licenses
- Production capabilities
- Equipment qualifications
- Capacity and constraints
- CMO/CDMO relationships
- Quality system status
Specifications & Test Methods
- Release specifications
- Stability specifications
- Test method references
- Acceptance criteria
- Compendial references
- Method validation status
Packaging & Serialization
- Packaging hierarchy (unit/bundle/case/pallet)
- GTIN assignments by market
- Serialization requirements
- Artwork and labeling specs
- Container closure systems
- Storage conditions
Pricing & Contracts
- WAC / AWP / ASP pricing
- Government pricing (FSS, 340B, Medicaid)
- Contract terms and rebates
- Chargebacks and adjustments
- Global price referencing
- Launch sequencing
Regulatory & Compliance
- Registration status by country
- Submission and approval tracking
- Labeling requirements
- Controlled substance schedules
- Import/export licenses
- Pharmacovigilance requirements
Built for Pharma Compliance
ZMDM is designed to meet the rigorous regulatory requirements of the pharmaceutical industry.
21 CFR Part 11
Electronic records and signatures
EU Annex 11
Computerised systems compliance
GxP Ready
GMP, GLP, GDP, GCP support
Data Integrity
ALCOA+ principles enforced
Audit Trail
Complete change history
Validation Ready
IQ/OQ/PQ documentation
Ready to Put Your Teams in Control?
See how ZMDM helps pharmaceutical companies improve master data management
// Simple tab functionality
document.querySelectorAll(‘.process-tab’).forEach(tab => {
tab.addEventListener(‘click’, function() {
// Remove active class from all tabs
document.querySelectorAll(‘.process-tab’).forEach(t => t.classList.remove(‘active’));
// Add active class to clicked tab
this.classList.add(‘active’);
// Here you would show/hide content based on tab
// For static HTML, all content is shown. In WordPress, you’d implement JS to toggle visibility
});
});