{
  "schemaVersion": 1,
  "slug": "water-intake-calculator",
  "category": "health",
  "kind": "implementation",
  "independentValidation": false,
  "implementationHash": "11c591614688848773e915180816f2bd54ad34a7c7e6b1fde6c69268aa898543",
  "provenance": "Generated from the calculation contract used by the published page. Publication is not external validation.",
  "sourceFiles": [
    "data/calculators/water-intake-calculator.json",
    "src/engine.js"
  ],
  "runtimeSource": "/sources/engine.txt",
  "runtimeHash": "5c888d8898afbdee36267bb9977829e1e2ac568f6677c8ee87469c139864645c",
  "scope": "The compute function records implemented equations, constants, lookup tables and custom rules. Inputs record defaults and allowed values; outputs record precision and units. Defaults are examples, not recommendations. General background references are not evidence for this specific algorithm.",
  "publishedFormula": {
    "formula": "V = (35 × m + 350 × t ÷ 30) × k ÷ 1000",
    "vars": [
      [
        "m",
        "Body weight (kg)"
      ],
      [
        "t",
        "Exercise (min/day)"
      ],
      [
        "k",
        "Climate factor 1 / 1.1 / 1.2"
      ],
      [
        "V",
        "Daily water (liters)"
      ]
    ],
    "note": "Arithmetic scenario V=(35m+350t/30)k ml; glasses=V/250; ml/kg=V/m. These coefficients are user-facing assumptions, not a recommended intake."
  },
  "externalEvidence": {
    "reviewedAt": "2026-10-12",
    "sources": [
      {
        "name": "National Academies — Total water, beverages and individual needs",
        "url": "https://nap.nationalacademies.org/catalog/10925/dietary-reference-intakes-for-water-potassium-sodium-chloride-and-sulfate"
      }
    ],
    "referenceRole": "context",
    "implementationHash": "11c591614688848773e915180816f2bd54ad34a7c7e6b1fde6c69268aa898543",
    "basis": "V = (35 × m + 350 × t ÷ 30) × k ÷ 1000",
    "limitations": "The references provide context and limitations. They do not validate this page’s illustrative multipliers, lookup values or predictions."
  },
  "contract": {
    "compute": "const base = weight*35; const exercise = exerciseMinutes/30*350; const total = (base+exercise)*climate; return { liters: total/1000, glasses: total/250, mlPerKg: total/weight };",
    "inputs": [
      {
        "name": "weight",
        "type": "number",
        "default": 70,
        "min": 20,
        "max": 400,
        "step": 0.5,
        "slider": true
      },
      {
        "name": "exerciseMinutes",
        "type": "number",
        "default": 30,
        "min": 0,
        "max": 600,
        "step": 5,
        "slider": true
      },
      {
        "name": "climate",
        "type": "select",
        "default": 1,
        "options": [
          {
            "value": 1
          },
          {
            "value": 1.1
          },
          {
            "value": 1.2
          }
        ]
      }
    ],
    "outputs": [
      {
        "name": "liters",
        "precision": 2,
        "unit": "L"
      },
      {
        "name": "glasses",
        "precision": 1,
        "unit": "glasses"
      },
      {
        "name": "mlPerKg",
        "precision": 1,
        "unit": "ml/kg"
      }
    ],
    "interpret": null
  }
}
