/* global React */
// data.jsx — product / ingredient / journal data

const PRODUCTS = [
  {
    id: "01",
    name: "Biological Detergent",
    actives: "Protease 5% + Lipase Complex 3%",
    short: "Multi-enzyme system for organic soils, proteinaceous staining, and sebum.",
    pct: { water: 64, surfactants: 18, enzymes: 8, chelators: 6, buffers: 4 },
    fabric: ["Cotton", "Linen", "Polyester", "Cotton blends"],
    avoidFabric: ["Wool", "Silk"],
    temp: "20–60°C",
    dosage: "15 ml / 4.5 kg load",
    ph: 8.4,
    color: "#c43a1f",
    capacity: "500 ml",
    batch: "B25/06/A",
    mechanism: "Hydrolysis",
    price: "12.00",
    desc: "A concentrated multi-enzyme detergent for biological soiling. Protease cleaves peptide bonds in proteinaceous residues (blood, dairy, sweat); lipase fractionates triglycerides typical of sebum and food fats. Builders sequester Ca²⁺ and Mg²⁺ to prevent enzyme inhibition in hard water."
  },
  {
    id: "02",
    name: "Non-Biological Detergent",
    actives: "Anionic Surfactant Blend 18%",
    short: "Enzyme-free system for sensitive skin, infant garments, and wool-safe washing.",
    pct: { water: 72, surfactants: 18, builders: 6, chelators: 3, buffers: 1 },
    fabric: ["Cotton", "Wool", "Silk", "Linen", "Synthetics"],
    avoidFabric: [],
    temp: "20–40°C",
    dosage: "20 ml / 4.5 kg load",
    ph: 7.8,
    color: "#c43a1f",
    capacity: "500 ml",
    batch: "B25/06/B",
    mechanism: "Micellar lift",
    price: "12.00",
    desc: "An enzyme-free surfactant blend formulated for sensitive skin, infant garments, and protein-based fibres. Combines LAS and AEC surfactants for soil suspension without the irritant load of biological actives."
  },
  {
    id: "03",
    name: "Oxidising Brightener",
    actives: "Sodium Percarbonate 22%",
    short: "Oxygen-based whitening and stain removal. No optical brighteners.",
    pct: { percarbonate: 22, sulfate: 60, soda: 12, silicate: 4, surfactant: 2 },
    fabric: ["White cotton", "White linen"],
    avoidFabric: ["Wool", "Silk", "Leather"],
    temp: "30–60°C",
    dosage: "1 scoop (30 g) / load",
    ph: 10.4,
    color: "#c43a1f",
    capacity: "500 g",
    batch: "B25/06/C",
    mechanism: "Oxidation",
    price: "10.00",
    desc: "A solid oxygen-release formulation. On contact with water, sodium percarbonate dissociates into sodium carbonate and hydrogen peroxide; the peroxide oxidises chromophore bonds, decolourising stains without bleaching the substrate fibre. No chlorine. No optical brighteners."
  },
  {
    id: "04",
    name: "Fabric Conditioner",
    actives: "Cationic Esterquat 6%",
    short: "Silicone-free softening through static neutralisation. Unfragranced.",
    pct: { water: 88, esterquat: 6, fattyAlcohol: 3, acid: 2, preservative: 1 },
    fabric: ["Cotton", "Linen", "Cotton blends"],
    avoidFabric: ["Performance synthetics", "Microfibre"],
    temp: "20–40°C",
    dosage: "30 ml / 4.5 kg load",
    ph: 3.1,
    color: "#c43a1f",
    capacity: "500 ml",
    batch: "B25/06/D",
    mechanism: "Ionic deposition",
    price: "9.00",
    desc: "A biodegradable esterquat softener. The cationic head adsorbs to anionic sites on natural fibres, neutralising static and reducing inter-fibre friction. No silicones. No fragrance. No dye."
  },
  {
    id: "05",
    name: "Stain Pre-Treatment",
    actives: "Enzyme Concentrate 12%",
    short: "Targeted hydrolysis. Apply directly. Allow 5–10 minutes contact time.",
    pct: { water: 70, enzymeBlend: 12, surfactants: 14, chelator: 3, buffer: 1 },
    fabric: ["All except wool & silk"],
    avoidFabric: ["Wool", "Silk"],
    temp: "Cold direct application",
    dosage: "3–5 ml per stain",
    ph: 8.6,
    color: "#c43a1f",
    capacity: "100 ml",
    batch: "B25/06/E",
    mechanism: "Targeted hydrolysis",
    price: "8.00",
    desc: "A concentrated four-enzyme stain pre-treatment containing protease, amylase, lipase, and mannanase. Apply directly to set-in stains and allow 5–10 minutes contact time before laundering."
  },
  {
    id: "06",
    name: "Wool & Silk Wash",
    actives: "Mild Surfactant Blend 8%",
    short: "Neutral-pH non-ionic system for keratin and fibroin fibres.",
    pct: { water: 88, nonIonic: 8, chelator: 2, conditioner: 1.5, buffer: 0.5 },
    fabric: ["Wool", "Silk", "Cashmere", "Alpaca"],
    avoidFabric: [],
    temp: "Cold–30°C",
    dosage: "20 ml / hand or 4 kg machine",
    ph: 7.0,
    color: "#c43a1f",
    capacity: "500 ml",
    batch: "B25/06/F",
    mechanism: "Non-ionic lift",
    price: "14.00",
    desc: "A neutral-pH non-ionic surfactant system formulated to preserve keratin and fibroin fibres. No enzymes. No alkaline builders. Approved for hand-wash and machine wool-cycle."
  }
];

const INGREDIENTS = [
  { name: "Alkyl Ether Carboxylate (AEC)", abbr: "AEC", fn: "Anionic surfactant", range: "4–12%", note: "Mild secondary surfactant. Good salt tolerance." },
  { name: "Amylase", abbr: "AMY", fn: "Enzyme", range: "0.2–1.5%", note: "Hydrolyses starch-based soils (sauces, gravies, batter)." },
  { name: "C12-15 Pareth-7", abbr: "C12-15", fn: "Non-ionic surfactant", range: "2–8%", note: "Low-foam, biodegradable. Neutral pH compatible." },
  { name: "Cationic Esterquat", abbr: "EQ", fn: "Fabric softener", range: "4–8%", note: "Biodegradable softening agent. Replaces DTDMAC." },
  { name: "Citric Acid", abbr: "CTR", fn: "Chelator / pH adjuster", range: "0.5–4%", note: "Sequesters polyvalent metal ions; reduces enzyme inhibition." },
  { name: "Etidronic Acid (HEDP)", abbr: "HEDP", fn: "Chelator", range: "0.3–1.0%", note: "Stabilises hydrogen peroxide. Lipid-soluble." },
  { name: "Lipase", abbr: "LIP", fn: "Enzyme", range: "0.3–1.5%", note: "Fractionates triglycerides — sebum, butter, cooking oils." },
  { name: "Mannanase", abbr: "MAN", fn: "Enzyme", range: "0.1–0.5%", note: "Targets galactomannan polysaccharides (ice cream, salad dressing)." },
  { name: "Protease", abbr: "PRT", fn: "Enzyme", range: "0.5–3%", note: "Cleaves peptide bonds. Active against blood, dairy, egg." },
  { name: "Sodium Carbonate", abbr: "NaCO₃", fn: "Builder / pH", range: "4–12%", note: "Softens water. Raises wash pH for surfactant activity." },
  { name: "Sodium Percarbonate", abbr: "SPC", fn: "Oxidising agent", range: "12–25%", note: "Releases H₂O₂ in solution. Bleach action without chlorine." },
  { name: "Sodium Silicate", abbr: "SiO₃", fn: "Corrosion inhibitor", range: "1–4%", note: "Protects machine components from alkaline corrosion." }
];

const JOURNAL = [
  {
    id: "J/01",
    title: "On the absence of fragrance",
    excerpt: "Masking agents add load to the rinse cycle and the lymphatic system. A statement on why Protocol formulations exclude fragrance — and how the residual scent of detergent is, in fact, a failure of formulation.",
    read: "4 min"
  },
  {
    id: "J/02",
    title: "Reading a label: an instruction manual",
    excerpt: "A walkthrough of the Protocol label hierarchy — what each numeric value indicates, why concentrations are listed first, and how to translate enzyme activity units into a dosing decision.",
    read: "7 min"
  },
  {
    id: "J/03",
    title: "Protocol for hard water (>250 mg/L CaCO₃)",
    excerpt: "Calcium and magnesium ions inhibit anionic surfactant activity and deactivate enzymes. A six-step compensation protocol involving pre-chelation, dosage adjustment, and second rinse.",
    read: "6 min"
  },
  {
    id: "J/04",
    title: "Why we do not use optical brighteners",
    excerpt: "Stilbene derivatives absorb UV and re-emit in the blue spectrum, producing a perceived whiteness that has no relationship to garment cleanliness. We consider this dishonest.",
    read: "5 min"
  },
  {
    id: "J/05",
    title: "The four-enzyme system, explained",
    excerpt: "Protease, amylase, lipase, mannanase. The biochemistry of how each enzyme isolates a soil class and why a multi-enzyme system outperforms a single high-concentration enzyme.",
    read: "9 min"
  },
  {
    id: "J/06",
    title: "On dosing by load weight, not volume",
    excerpt: "The industry standard of 'one cap per wash' overdoses small loads by a factor of 3 and underdoses large loads by 50%. The case for a kitchen scale in the utility room.",
    read: "5 min"
  }
];

Object.assign(window, { PRODUCTS, INGREDIENTS, JOURNAL });
