// Clown Catcher Research — catalog from official price list (updated 06/03/2026).
// For research use only. SINGLE-UNIT PRICING ONLY — kit/pack options removed per client.
// Ordering: ClownCatcherResearch@pm.me · S/H $20, free over $300.

const RAW = [
  // ── WEIGHT LOSS ──────────────────────────────
  { id: "semaglutide", name: "Semaglutide", sub: "GLP-1 Analog", cat: "Weight Loss", form: "Injectable", tag: "GLP-1 receptor research", bench: ["Metabolic", "Appetite"], vars: [{ l: "10mg", p: 60 }], note: "Higher mg available" },
  { id: "tirzepatide", name: "Tirzepatide", sub: "GIP / GLP-1 Dual Agonist", cat: "Weight Loss", form: "Injectable", tag: "Dual incretin pathway", bench: ["Metabolic", "Glucose"], vars: [{ l: "10mg", p: 70 }, { l: "15mg", p: 80 }, { l: "20mg", p: 90 }, { l: "30mg", p: 130 }] },
  { id: "retatrutide", name: "Retatrutide", sub: "GIP / GLP-1 / Glucagon", cat: "Weight Loss", form: "Injectable", tag: "Triple agonist research", bench: ["Metabolic", "Energy"], vars: [{ l: "10mg", p: 80 }, { l: "15mg", p: 95 }, { l: "20mg", p: 130 }, { l: "30mg", p: 150 }] },
  { id: "cagrilintide", name: "Cagrilintide", sub: "Amylin Analog", cat: "Weight Loss", form: "Injectable", tag: "Amylin receptor research", bench: ["Satiety"], vars: [{ l: "5mg", p: 60 }] },
  { id: "mazdutide", name: "Mazdutide", sub: "GLP-1 / Glucagon Agonist", cat: "Weight Loss", form: "Injectable", tag: "Dual receptor model", bench: ["Metabolic"], vars: [{ l: "10mg", p: 120 }] },
  { id: "aod-9604", name: "AOD-9604", sub: "hGH Fragment 176-191", cat: "Weight Loss", form: "Injectable", tag: "Lipolysis fragment", bench: ["Body comp"], vars: [{ l: "5mg", p: 50 }] },
  { id: "5-amino-1mq-inj", name: "5-Amino-1MQ", sub: "NNMT Inhibitor · Injectable", cat: "Weight Loss", form: "Injectable", tag: "Methyl pool research", bench: ["Body comp"], vars: [{ l: "50mg", p: 70 }] },
  { id: "tesofensine", name: "Tesofensine", sub: "Monoamine Reuptake · Oral", cat: "Weight Loss", form: "Oral", tag: "Appetite signaling", bench: ["Metabolic"], vars: [{ l: "500mcg · 100ct", p: 100 }] },
  { id: "orforglipron", name: "Orforglipron", sub: "Oral GLP-1", cat: "Weight Loss", form: "Oral", tag: "Non-peptide GLP-1", bench: ["Metabolic"], vars: [{ l: "3mg · 50ct", p: 100 }] },
  { id: "orforglipron-combo", name: "Orforglipron Combo", sub: "Titration Pack · Oral", cat: "Weight Loss", form: "Oral", tag: "Stepped-dose set", bench: ["Metabolic"], vars: [{ l: "3mg + 6mg · 50ct", p: 120 }] },
  { id: "5-amino-1mq-oral", name: "5-Amino-1MQ Oral", sub: "NNMT Inhibitor · Capsules", cat: "Weight Loss", form: "Oral", tag: "Methyl pool research", bench: ["Body comp"], vars: [{ l: "70mg · 50ct", p: 120 }, { l: "70mg · 180ct", p: 300 }] },
  { id: "bam15", name: "BAM15", sub: "Mitochondrial Uncoupler", cat: "Weight Loss", form: "Oral", tag: "Uncoupling research", bench: ["Energy", "Body comp"], vars: [{ l: "18mg · 75ct", p: 75 }, { l: "30mg · 50ct", p: 95 }] },
  { id: "bam15-slu", name: "BAM15 + SLU-PP-332", sub: "Combo · Oral", cat: "Weight Loss", form: "Oral", tag: "Uncoupler + ERR agonist", bench: ["Energy"], vars: [{ l: "20mg · 50ct", p: 70 }] },
  { id: "slu-pp-332", name: "SLU-PP-332", sub: "ERR Agonist · \u201cSloop\u201d", cat: "Weight Loss", form: "Injectable", tag: "Exercise-mimetic model", bench: ["Endurance"], vars: [{ l: "5mg", p: 85 }, { l: "10mg", p: 90 }, { l: "20mg", p: 120 }] },

  // ── HEALING & ENERGY ─────────────────────────
  { id: "wolverine", name: "Wolverine Combo", sub: "TB-500 5mg + BPC-157 5mg", cat: "Healing & Energy", form: "Injectable", tag: "Soft-tissue pairing", bench: ["Recovery", "Tissue"], vars: [{ l: "10mg", p: 60 }] },
  { id: "tb-500", name: "TB-500", sub: "Thymosin Beta-4 Fragment", cat: "Healing & Energy", form: "Injectable", tag: "Cellular migration assay", bench: ["Recovery", "Vascular"], vars: [{ l: "10mg", p: 65 }] },
  { id: "bpc-157", name: "BPC-157", sub: "Pentadecapeptide", cat: "Healing & Energy", form: "Injectable", tag: "Tissue repair signal", bench: ["Soft tissue", "Gut"], vars: [{ l: "10mg", p: 45 }] },
  { id: "bpc-157-oral", name: "BPC-157 Oral", sub: "Pentadecapeptide · Capsules", cat: "Healing & Energy", form: "Oral", tag: "Gut-stable research form", bench: ["Gut"], vars: [{ l: "500mcg · 100ct", p: 100 }] },
  { id: "kpv", name: "KPV", sub: "Tripeptide", cat: "Healing & Energy", form: "Injectable", tag: "Anti-inflammatory model", bench: ["Gut", "Inflammation"], vars: [{ l: "10mg", p: 60 }] },
  { id: "mots-c", name: "MOTS-c", sub: "Mitochondrial Peptide", cat: "Healing & Energy", form: "Injectable", tag: "Metabolic substrate", bench: ["Energy", "Endurance"], vars: [{ l: "10mg", p: 60 }, { l: "30mg", p: 100 }] },
  { id: "ss-31", name: "SS-31", sub: "Mitochondrial Targeting", cat: "Healing & Energy", form: "Injectable", tag: "ROS modulator", bench: ["Mitochondria"], vars: [{ l: "10mg", p: 70 }, { l: "50mg", p: 110 }] },
  { id: "ghk-cu", name: "GHK-Cu", sub: "Copper Tripeptide", cat: "Healing & Energy", form: "Injectable", tag: "Collagen pathway", bench: ["Skin", "Wound"], vars: [{ l: "50mg", p: 60 }, { l: "100mg", p: 80 }] },
  { id: "glow", name: "GLOW", sub: "GHK-Cu + BPC-157 + TB-500", cat: "Healing & Energy", form: "Injectable", tag: "Skin & repair blend", bench: ["Skin", "Recovery"], vars: [{ l: "70mg", p: 95 }] },
  { id: "klow", name: "KLOW", sub: "KPV + GHK-Cu + BPC-157 + TB-500", cat: "Healing & Energy", form: "Injectable", tag: "Four-compound blend", bench: ["Skin", "Gut", "Recovery"], vars: [{ l: "80mg", p: 105 }] },
  { id: "vip", name: "VIP", sub: "Vasoactive Intestinal Peptide", cat: "Healing & Energy", form: "Injectable", tag: "Immune / vascular model", bench: ["Immune"], vars: [{ l: "10mg", p: 65 }] },
  { id: "nad", name: "NAD+", sub: "Nicotinamide Adenine Dinucleotide", cat: "Healing & Energy", form: "Injectable", tag: "Cellular energy coenzyme", bench: ["Energy", "Longevity"], vars: [{ l: "500mg", p: 75 }] },
  { id: "glutathione", name: "Glutathione", sub: "Master Antioxidant", cat: "Healing & Energy", form: "Injectable", tag: "Redox research", bench: ["Antioxidant"], vars: [{ l: "1500mg", p: 50 }] },
  { id: "korean-glutathione", name: "Korean Glutathione", sub: "Antioxidant", cat: "Healing & Energy", form: "Injectable", tag: "Redox research", bench: ["Antioxidant"], vars: [{ l: "1200mg", p: 60 }] },
  { id: "dsip", name: "DSIP", sub: "Delta Sleep-Inducing Peptide", cat: "Healing & Energy", form: "Injectable", tag: "Slow-wave sleep model", bench: ["Sleep"], vars: [{ l: "5mg", p: 60 }] },
  { id: "ara-290", name: "ARA-290", sub: "Cibinetide", cat: "Healing & Energy", form: "Injectable", tag: "Tissue-protective / nerve", bench: ["Nerve", "Inflammation"], vars: [{ l: "10mg", p: 70 }] },

  // ── GH CLASS ─────────────────────────────────
  { id: "tesamorelin", name: "Tesamorelin", sub: "GHRH Analog", cat: "GH Class", form: "Injectable", tag: "Adipose research", bench: ["GH axis", "Body comp"], vars: [{ l: "10mg", p: 75 }] },
  { id: "tesa-ipa", name: "Tesamorelin + Ipamorelin", sub: "GHRH + Secretagogue Combo", cat: "GH Class", form: "Injectable", tag: "Combined pulse model", bench: ["GH axis"], vars: [{ l: "10mg", p: 95 }] },
  { id: "cjc-dac", name: "CJC-1295 with DAC", sub: "GHRH Analog", cat: "GH Class", form: "Injectable", tag: "Extended half-life", bench: ["GH axis"], vars: [{ l: "5mg", p: 60 }] },
  { id: "cjc-no-dac", name: "CJC-1295 No-DAC", sub: "GHRH Analog", cat: "GH Class", form: "Injectable", tag: "Pulse amplifier", bench: ["GH axis"], vars: [{ l: "5mg", p: 45 }] },
  { id: "cjc-ipa", name: "CJC No-DAC + Ipamorelin", sub: "5mg each · 10mg total", cat: "GH Class", form: "Injectable", tag: "Classic GH pairing", bench: ["GH axis"], vars: [{ l: "10mg", p: 45 }] },
  { id: "ipamorelin", name: "Ipamorelin", sub: "Selective GH Secretagogue", cat: "GH Class", form: "Injectable", tag: "Selective release", bench: ["GH axis"], vars: [{ l: "5mg", p: 45 }] },
  { id: "sermorelin", name: "Sermorelin", sub: "GHRH 1-29", cat: "GH Class", form: "Injectable", tag: "Pulsatile model", bench: ["GH axis"], vars: [{ l: "10mg", p: 75 }] },
  { id: "mk-677", name: "MK-677", sub: "Ibutamoren · Oral", cat: "GH Class", form: "Oral", tag: "Oral GH secretagogue", bench: ["GH axis"], vars: [{ l: "10mg · 50ct", p: 60 }] },
  { id: "mk-2866", name: "MK-2866", sub: "Ostarine · Oral", cat: "GH Class", form: "Oral", tag: "SARM research", bench: ["Hypertrophy"], vars: [{ l: "25mg · 50ct", p: 60 }] },
  { id: "sr9009", name: "SR9009", sub: "Stenabolic · Oral", cat: "GH Class", form: "Oral", tag: "Rev-ErbA agonist", bench: ["Endurance"], vars: [{ l: "10mg · 50ct", p: 65 }] },
  { id: "enclomiphene", name: "Enclomiphene", sub: "SERM · Oral", cat: "GH Class", form: "Oral", tag: "HPTA research", bench: ["Hormone"], vars: [{ l: "11.5mg · 50ct", p: 90 }] },
  { id: "cardarine", name: "Cardarine", sub: "GW-501516 · Oral", cat: "GH Class", form: "Oral", tag: "PPARδ research", bench: ["Endurance"], vars: [{ l: "10mg · 100ct", p: 65 }] },

  // ── SEXUAL HEALTH ────────────────────────────
  { id: "kisspeptin", name: "Kisspeptin", sub: "GnRH Stimulator", cat: "Sexual Health", form: "Injectable", tag: "Reproductive axis", bench: ["Hormone"], vars: [{ l: "5mg", p: 45 }] },
  { id: "pt-141", name: "PT-141", sub: "Bremelanotide", cat: "Sexual Health", form: "Injectable", tag: "Melanocortin pathway", bench: ["Libido"], vars: [{ l: "10mg", p: 50 }] },
  { id: "cockbombs", name: "CockBombs", sub: "Tadalafil 20mg + Sildenafil 50mg", cat: "Sexual Health", form: "Oral", tag: "PDE5 research combo", bench: ["Vascular"], vars: [{ l: "50ct", p: 40 }, { l: "100ct", p: 70 }] },
  { id: "sildenafil", name: "Sildenafil", sub: "PDE5 Inhibitor · Oral", cat: "Sexual Health", form: "Oral", tag: "Vasodilation research", bench: ["Vascular"], vars: [{ l: "100mg · 50ct", p: 50 }] },
  { id: "tadalafil-5", name: "Tadalafil 5mg", sub: "PDE5 Inhibitor · Oral", cat: "Sexual Health", form: "Oral", tag: "Daily-dose model", bench: ["Vascular"], vars: [{ l: "5mg · 100ct", p: 40 }] },
  { id: "tadalafil-20", name: "Tadalafil 20mg", sub: "PDE5 Inhibitor · Oral", cat: "Sexual Health", form: "Oral", tag: "Vasodilation research", bench: ["Vascular"], vars: [{ l: "20ct", p: 25 }, { l: "50ct", p: 50 }, { l: "100ct", p: 85 }] },

  // ── SKIN & TAN ───────────────────────────────
  { id: "mt-1", name: "Melanotan I", sub: "MC1R Agonist", cat: "Skin & Tan", form: "Injectable", tag: "Pigment pathway", bench: ["Pigment"], vars: [{ l: "10mg", p: 40 }] },
  { id: "mt-2", name: "Melanotan II", sub: "Melanocortin Agonist", cat: "Skin & Tan", form: "Injectable", tag: "Pigment + libido model", bench: ["Pigment"], vars: [{ l: "10mg", p: 40 }] },
  { id: "snap-8", name: "SNAP-8", sub: "Octapeptide", cat: "Skin & Tan", form: "Injectable", tag: "Expression-line research", bench: ["Skin"], vars: [{ l: "10mg", p: 50 }] },
  { id: "ghk-cu-topical", name: "GHK-Cu Powder", sub: "Copper Tripeptide · Topical", cat: "Skin & Tan", form: "Topical", tag: "Topical collagen research", bench: ["Skin"], vars: [{ l: "1g tube", p: 25 }] },

  // ── NOOTROPICS & LONGEVITY ───────────────────
  { id: "semax", name: "Semax", sub: "ACTH Fragment", cat: "Nootropics", form: "Injectable", tag: "BDNF pathway", bench: ["Focus", "Memory"], vars: [{ l: "10mg", p: 65 }] },
  { id: "selank", name: "Selank", sub: "Anxiolytic Peptide", cat: "Nootropics", form: "Injectable", tag: "Anxiolytic profile", bench: ["Mood", "Focus"], vars: [{ l: "10mg", p: 65 }] },
  { id: "epithalon", name: "Epithalon", sub: "Tetrapeptide", cat: "Nootropics", form: "Injectable", tag: "Telomere studies", bench: ["Longevity", "Sleep"], vars: [{ l: "10mg", p: 60 }] },
  { id: "pinealon", name: "Pinealon", sub: "Tripeptide Bioregulator", cat: "Nootropics", form: "Injectable", tag: "Neuroprotective model", bench: ["Cognition"], vars: [{ l: "10mg", p: 60 }] },
  { id: "cerebrolysin", name: "Cerebrolysin", sub: "Neurotrophic Peptide Blend", cat: "Nootropics", form: "Injectable", tag: "Neurotrophic research", bench: ["Cognition"], vars: [{ l: "60mg", p: 50 }] },
  { id: "dihexa-inj", name: "Dihexa", sub: "Angiotensin IV Derivative", cat: "Nootropics", form: "Injectable", tag: "Synaptogenesis model", bench: ["Memory"], vars: [{ l: "8mg", p: 55 }] },
  { id: "dihexa-oral", name: "Dihexa Oral", sub: "Angiotensin IV Derivative · Capsules", cat: "Nootropics", form: "Oral", tag: "Synaptogenesis model", bench: ["Memory"], vars: [{ l: "7.5mg · 50ct", p: 80 }] },
  { id: "prl-8-53", name: "PRL-8-53", sub: "Nootropic Compound · Oral", cat: "Nootropics", form: "Oral", tag: "Verbal memory research", bench: ["Memory"], vars: [{ l: "10mg · 50ct", p: 55 }] },
  { id: "modafinil", name: "Modafinil", sub: "Eugeroic · Oral", cat: "Nootropics", form: "Oral", tag: "Wakefulness research", bench: ["Focus"], vars: [{ l: "100mg · 10ct", p: 40 }, { l: "200mg · 10ct", p: 70 }] },
  { id: "methylene-blue", name: "Methylene Blue", sub: "Redox Compound · Oral", cat: "Nootropics", form: "Oral", tag: "Mitochondrial research", bench: ["Energy"], vars: [{ l: "20mg · 100ct", p: 65 }, { l: "10mg · 60ml dropper", p: 50 }], note: "Dropper out of stock — in route" },

  // ── IMMUNITY ─────────────────────────────────
  { id: "ll-37", name: "LL-37", sub: "Cathelicidin", cat: "Immunity", form: "Injectable", tag: "Antimicrobial profile", bench: ["Immune"], vars: [{ l: "2mg", p: 60 }] },
  { id: "ta-1", name: "Thymosin Alpha 1", sub: "TA-1 Immune Modulator", cat: "Immunity", form: "Injectable", tag: "Th1 response", bench: ["Immune"], vars: [{ l: "5mg", p: 80 }] },
  { id: "ivermectin", name: "Ivermectin", sub: "Antiparasitic · Oral", cat: "Immunity", form: "Oral", tag: "Antiparasitic research", bench: ["Immune"], vars: [{ l: "5mg · 50ct", p: 50 }, { l: "10mg · 100ct", p: 80 }] },
  { id: "boswellic", name: "Beta Boswellic Acid", sub: "Botanical Extract · Oral", cat: "Immunity", form: "Oral", tag: "Inflammation research", bench: ["Inflammation"], vars: [{ l: "500mg · 80ct", p: 22 }] },

  // ── BIO-REGULATORS ───────────────────────────
  { id: "bronchogen", name: "Bronchogen", sub: "Peptide Bioregulator", cat: "Bio-Regulators", form: "Injectable", tag: "Respiratory model", bench: ["Respiratory"], vars: [{ l: "20mg", p: 55 }] },
  { id: "cartalax", name: "Cartalax", sub: "Peptide Bioregulator", cat: "Bio-Regulators", form: "Injectable", tag: "Cartilage model", bench: ["Joint"], vars: [{ l: "20mg", p: 65 }] },
  { id: "livagen", name: "Livagen", sub: "Peptide Bioregulator", cat: "Bio-Regulators", form: "Injectable", tag: "Hepatic model", bench: ["Liver"], vars: [{ l: "20mg", p: 65 }] },
  { id: "pancragen", name: "Pancragen", sub: "Peptide Bioregulator", cat: "Bio-Regulators", form: "Injectable", tag: "Pancreatic model", bench: ["Pancreas"], vars: [{ l: "20mg", p: 70 }] },
  { id: "vilon", name: "Vilon", sub: "Peptide Bioregulator", cat: "Bio-Regulators", form: "Injectable", tag: "Immune / longevity model", bench: ["Immune"], vars: [{ l: "10mg", p: 50 }] },
  { id: "chonluten", name: "Chonluten", sub: "Peptide Bioregulator", cat: "Bio-Regulators", form: "Injectable", tag: "Bronchial / GI model", bench: ["Respiratory"], vars: [{ l: "20mg", p: 50 }] },

  // ── SUPPLIES ─────────────────────────────────
  { id: "pen-v1", name: "Injection Pen", sub: "Non-Reusable · 3ml", cat: "Supplies", form: "Supply", tag: "Single-use research pen", bench: ["Supply"], vars: [{ l: "3ml", p: 12 }] },
  { id: "pen-v2", name: "Injection Pen V2", sub: "Reusable · 3ml", cat: "Supplies", form: "Supply", tag: "Reusable research pen", bench: ["Supply"], vars: [{ l: "3ml", p: 30 }] },
  { id: "bac-water", name: "Bacteriostatic Water", sub: "Hospira · 30ml", cat: "Supplies", form: "Supply", tag: "Reconstitution diluent", bench: ["Supply"], vars: [{ l: "30ml", p: 25 }] },
  { id: "bac-water-nacl", name: "Bacteriostatic Sodium Chloride", sub: "Hospira · 20ml", cat: "Supplies", form: "Supply", tag: "Reconstitution diluent", bench: ["Supply"], vars: [{ l: "20ml", p: 25 }] },
];

const PRODUCTS = RAW.map(r => ({
  ...r,
  subtitle: r.sub,
  category: r.cat,
  tagline: r.tag,
  variants: r.vars,
  mass: r.vars[0].l,
  dose: r.vars[0].l.split(" · ")[0],
  price: r.vars[0].p,
}));

const CATEGORIES = ["All", "Weight Loss", "Healing & Energy", "GH Class", "Sexual Health", "Skin & Tan", "Nootropics", "Immunity", "Bio-Regulators", "Supplies"];

const ORDER_INFO = {
  email: "ClownCatcherResearch@pm.me",
  shipping: 20,
  freeOver: 300,
  updated: "06/03/2026",
};

// Payment preference options — shown as a dropdown at checkout. No handles or
// instructions on-site: the seller replies to each order email with payment
// details for the buyer's chosen method.
const PAYMENT_METHODS = [
  { id: "cashapp", label: "Cash App" },
  { id: "venmo", label: "Venmo" },
  { id: "zelle", label: "Zelle" },
  { id: "btc", label: "Bitcoin" },
  { id: "cim", label: "CIM (cash in mail)" },
  { id: "paypal", label: "PayPal (+5% fee)" },
  { id: "card", label: "Credit Card (+7% fee · limited)" },
];

// Unit word for per-unit pricing labels (single-unit pricing only — no kits)
const UNIT_WORD = (form) => form === "Oral" ? "bottle" : form === "Topical" ? "tube" : form === "Supply" ? "unit" : "vial";

// Canonical site origin — used for canonical tags, sitemap, and OG URLs.
// Change this one line if the site moves to a custom domain.
const SITE_URL = "https://clown-catcher-research.vercel.app";

// Category ↔ URL slug. Readable slugs ("weight-loss") beat encoded names
// ("Weight%20Loss") for both search engines and link sharing.
const catSlug = (name) => name.toLowerCase().replace(/&/g, "and").replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
const CAT_SLUGS = CATEGORIES.filter(c => c !== "All").map(c => ({ name: c, slug: catSlug(c) }));
const CAT_FROM_SLUG = (slug) => (CAT_SLUGS.find(c => c.slug === slug) || {}).name || null;

window.UNIT_WORD = UNIT_WORD;
window.PRODUCTS = PRODUCTS;
window.CATEGORIES = CATEGORIES;
window.ORDER_INFO = ORDER_INFO;
window.PAYMENT_METHODS = PAYMENT_METHODS;
window.SITE_URL = SITE_URL;
window.CAT_SLUG = catSlug;
window.CAT_SLUGS = CAT_SLUGS;
window.CAT_FROM_SLUG = CAT_FROM_SLUG;
