{"id":18840,"date":"2026-09-25T22:56:55","date_gmt":"2026-09-25T19:56:55","guid":{"rendered":"https:\/\/zeolife.gr\/?page_id=18840"},"modified":"2026-10-11T17:52:34","modified_gmt":"2026-10-11T14:52:34","slug":"em-dosage-guide","status":"publish","type":"page","link":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/","title":{"rendered":"Effective Microorganisms Dosage Guide (EM-Active + FKE)"},"content":{"rendered":"\n<!-- ==========================================================\n     Effective Microorganisms Dosage Guide (EM-Active + FKE)  (CLEAN) \u2014 ENGLISH\n     Path: \/en\/em-dosage-guide\/\n     ----------------------------------------------------------\n     NO <style>\/<link> (AMP safe) \u2014 styling comes from the\n     Customizer, sections \u00a716 \u2192 \u00a716\u03b5 .zlcalc (shared by all\n     the \/ergaleia\/ guides).\n     JS stays here, in an IIFE. Root hook for the JS: id=\"emCalc\".\n\n     v2 (fixes):\n      \u2022 Added PIGEONS to livestock (FKE) \u2014 feed & water.\n      \u2022 New: \"ml FKE per litre of drinking water\" calculation + daily recipe.\n      \u2022 Fix: markdown link in the print header \u2192 plain <a>.\n      \u2022 Fix: isPositive() accepted text (NaN <= 0 === false).\n      \u2022 Fix: water-route wording for poultry (same dose in feed\/water).\n      \u2022 Fix: dynamic quantity labels per sub-option (birds\/animals\/points).\n      \u2022 Fix: guard in smartPackaging, each() helper for old NodeList.\n      \u2022 Fix: --muted \u2192 --em-muted with fallback.\n     ========================================================== -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"WebApplication\",\n      \"name\": \"Effective Microorganisms (EM) Dosage Guide (Online Calculator)\",\n      \"alternateName\": \"Effective Microorganisms (EM) Calculator\",\n      \"url\": \"https:\/\/zeolife.gr\/en\/em-dosage-guide\/\",\n      \"description\": \"Free Dosage Guide (online calculator) for EM-Active and FKE Effective Microorganisms for agriculture, livestock, poultry and pigeons, composting, the home and farm hygiene. Smart packaging.\",\n      \"applicationCategory\": \"AgricultureApplication\",\n      \"operatingSystem\": \"Any (web)\",\n      \"inLanguage\": \"en\",\n      \"isAccessibleForFree\": true,\n      \"publisher\": { \"@type\": \"Organization\", \"name\": \"Zeolife\", \"url\": \"https:\/\/zeolife.gr\/\" }\n    }\n  ]\n}\n<\/script>\n<div class=\"zl zlcalc\" id=\"emCalc\">\n<div class=\"intro\">\n  <h2>\ud83e\udda0 Effective Microorganisms (EM) Dosage Guide<\/h2>\n  <p>Choose a use and see exactly how much <strong>EM-Active<\/strong> or <strong>FKE<\/strong> you need, with smart packaging. The ideal complement to <strong>zeolite<\/strong> for synergistic results.<\/p>\n  <div class=\"badges\">\n    <span class=\"badge\">\ud83d\udccb 4-step guide<\/span>\n    <span class=\"badge\">EM-Active (farming\/home)<\/span>\n    <span class=\"badge\">FKE (livestock)<\/span>\n    <span class=\"badge\">\ud83d\udc26 Poultry &amp; pigeons<\/span>\n    <span class=\"badge\">Multikraft\u00ae<\/span>\n    <span class=\"badge\">Organic-compatible<\/span>\n  <\/div>\n<\/div>\n<div class=\"progress\" aria-hidden=\"true\"><div class=\"progress-bar\" id=\"emProgress\"><\/div><\/div>\n<div id=\"emProgressSpacer\" aria-hidden=\"true\" style=\"height:0\"><\/div>\n<!-- STEP 1: USE CASE -->\n<div class=\"step active\" data-step=\"1\">\n  <h3><span class=\"step-num\">1<\/span>Choose a use<\/h3>\n  <div class=\"options cols-3\">\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"crops\">\n      <span class=\"opt-title\">\ud83c\udf3e Crops<\/span>\n      <span class=\"opt-desc\">Stremmata \u2014 vegetables, cereals etc.<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"trees\">\n      <span class=\"opt-title\">\ud83c\udf33 Tree crops<\/span>\n      <span class=\"opt-desc\">Olive, vineyard, fruit trees<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"garden\">\n      <span class=\"opt-title\">\ud83e\udeb4 Garden\/Pots<\/span>\n      <span class=\"opt-desc\">Vegetable garden, pots, garden<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"compost\">\n      <span class=\"opt-title\">\ud83c\udf31 Composting<\/span>\n      <span class=\"opt-desc\">Bokashi, compost m\u00b3<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"livestock\">\n      <span class=\"opt-title\">\ud83d\udc04 Livestock (FKE)<\/span>\n      <span class=\"opt-desc\">Animals, poultry, pigeons \u2014 feed or water<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"hygiene\">\n      <span class=\"opt-title\">\ud83d\udc14 Farm hygiene<\/span>\n      <span class=\"opt-desc\">m\u00b2 of barns, poultry houses, lofts<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"home\">\n      <span class=\"opt-title\">\ud83c\udfe0 Home\/Cleaning<\/span>\n      <span class=\"opt-desc\">Odours, laundry, cleaning<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"ensilage\">\n      <span class=\"opt-title\">\ud83c\udf3d Silage<\/span>\n      <span class=\"opt-desc\">Grass, hay, maize (m\u00b3)<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"spray\">\n      <span class=\"opt-title\">\ud83d\udca8 Crop spraying<\/span>\n      <span class=\"opt-desc\">1-4% dilution every 7-30 days<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"useCase\" value=\"other\">\n      <span class=\"opt-title\">\u2795 Ask us<\/span>\n      <span class=\"opt-desc\">Don&#8217;t see your use? Ask us<\/span>\n    <\/label>\n  <\/div>\n<\/div>\n<!-- STEP 2: SUB-USE CASE -->\n<div class=\"step\" data-step=\"2\">\n  <h3><span class=\"step-num\">2<\/span>Use details<\/h3>\n  <div id=\"emSubContainer\">\n    <p style=\"color:var(--em-muted,#6b6a64);font-style:italic;\">First choose a use in Step 1.<\/p>\n  <\/div>\n<\/div>\n<!-- STEP 3: QUANTITY -->\n<div class=\"step\" data-step=\"3\">\n  <h3><span class=\"step-num\">3<\/span>Quantity\/Area<\/h3>\n  <div id=\"emQtyContainer\">\n    <p style=\"color:var(--em-muted,#6b6a64);font-style:italic;\">First choose a use.<\/p>\n  <\/div>\n<\/div>\n<!-- STEP 4: DURATION -->\n<div class=\"step\" data-step=\"4\">\n  <h3><span class=\"step-num\">4<\/span>Duration<\/h3>\n  <div class=\"options cols-4\">\n    <label class=\"option\"><input type=\"radio\" name=\"duration\" value=\"30\">\n      <span class=\"opt-title\">\ud83d\udcc5 1 month<\/span>\n      <span class=\"opt-desc\">30 days<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"duration\" value=\"90\">\n      <span class=\"opt-title\">\ud83d\udcc5 3 months<\/span>\n      <span class=\"opt-desc\">90 days<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"duration\" value=\"180\">\n      <span class=\"opt-title\">\ud83d\udcc5 6 months<\/span>\n      <span class=\"opt-desc\">180 days<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"duration\" value=\"365\">\n      <span class=\"opt-title\">\ud83d\udcc5 1 year<\/span>\n      <span class=\"opt-desc\">365 days<\/span>\n    <\/label>\n  <\/div>\n  <div style=\"margin-top:0.85rem;\">\n    <label class=\"qty-label\" for=\"emCustomDays\">Or exact number of days:<\/label>\n    <input type=\"number\" id=\"emCustomDays\" class=\"qty-input\" min=\"1\" placeholder=\"e.g. 60\">\n  <\/div>\n  <p class=\"sublabel\" id=\"emDurationNote\">\ud83d\udca1 The duration determines how many applications are needed.<\/p>\n<\/div>\n<!-- STEP (conditional): REQUEST FOR ANOTHER USE \u2014 shown only when \"Ask us\" is selected -->\n<div class=\"step\" id=\"emOtherStep\" style=\"display:none\">\n  <button type=\"button\" class=\"btn btn-secondary\" id=\"emOtherBack\" style=\"padding:.5rem 1.1rem;font-size:.9rem;margin-bottom:1rem\">\u2190 Back to the guide<\/button>\n  <h3><span class=\"step-num\">\u2795<\/span>Tell us what you need<\/h3>\n  <p style=\"margin:.2rem 0 1rem;color:var(--em-muted,#6b6a64)\">Can&#8217;t find your use or crop in the list? Write to us and our team will recommend the exact Effective Microorganisms dosage <strong>free of charge<\/strong>.<\/p>\n  <label class=\"qty-label\" for=\"emOtherCrop\">Which use \/ crop?<\/label>\n  <input type=\"text\" id=\"emOtherCrop\" class=\"qty-input\" placeholder=\"e.g. Beehives, Fish farming, Specialty crop\u2026\" autocomplete=\"off\">\n  <div style=\"margin-top:1rem\">\n    <label class=\"qty-label\" for=\"emOtherDetails\">Details <span style=\"font-weight:400;color:var(--em-muted,#6b6a64)\">(optional)<\/span><\/label>\n    <textarea id=\"emOtherDetails\" class=\"qty-input\" rows=\"3\" placeholder=\"e.g. area\/number of animals, goal, application frequency\u2026\"><\/textarea>\n  <\/div>\n  <div class=\"contact-box\">\n    <strong class=\"ttl\">\ud83d\udce9 Send us your request<\/strong>\n    <span class=\"opt-desc\" style=\"margin-bottom:.25rem\">You&#8217;ll receive a personalised dosage recommendation for your case.<\/span>\n    <div class=\"contact-btns\">\n      <a id=\"emOtherWhatsapp\" href=\"https:\/\/wa.me\/306985838343\" class=\"btn btn-secondary\" target=\"_blank\" rel=\"noopener\">\ud83d\udcac WhatsApp<\/a>\n      <a id=\"emOtherViber\" href=\"viber:\/\/chat?number=306985838343\" class=\"btn btn-secondary\">\ud83d\udfe3 Viber<\/a>\n      <a id=\"emOtherEmail\" href=\"mailto:info@zeolife.gr\" class=\"btn btn-secondary\">\u2709\ufe0f Email<\/a>\n      <a href=\"tel:+302311295520\" class=\"btn btn-secondary\">\ud83d\udcde +30 2311 29 55 20<\/a>\n    <\/div>\n  <\/div>\n<\/div>\n<div class=\"actions\">\n  <button type=\"button\" class=\"btn\" id=\"emCalculate\" disabled=\"\">\ud83d\udccb See the dosage<\/button>\n  <button type=\"button\" class=\"btn btn-secondary\" id=\"emReset\">\ud83d\udd04 Clear<\/button>\n  <button type=\"button\" class=\"btn btn-print\" id=\"emPrint\">\ud83d\udda8\ufe0f Print<\/button>\n<\/div>\n<!-- RESULT -->\n<div class=\"result\" id=\"emResult\">\n  <div class=\"print-only\" style=\"text-align:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #2a9ca0;\">\n    <img decoding=\"async\" src=\"https:\/\/zeolife.gr\/wp-content\/uploads\/\/2019\/11\/logo-zeolife-hor.svg\" alt=\"Zeolife.gr\" style=\"max-width:280px;height:auto;margin:0 auto 0.5rem;display:block;\">\n    <h2 style=\"color:#26231e;margin:0;font-size:1.2rem;\">Effective Microorganisms Programme<\/h2>\n    <p style=\"margin:0.3rem 0 0;font-size:0.9rem;color:#6b6a64;\"><a href=\"https:\/\/zeolife.gr\/en\/\">www.zeolife.gr<\/a> \u00b7 \u260e +30 2311 29 55 20 \u00b7 \u2709 info@zeolife.gr<\/p>\n  <\/div>\n  <h3>Your personalised recommendation<\/h3>\n  <div id=\"emResultBody\"><\/div>\n<\/div>\n<\/div>\n<script>\n(function(){\n  \/\/ ===== PRODUCTS =====\n  \/\/ Both EM-Active and FKE have same 3-tier pricing\n  var products = {\n    em_active: {\n      name: 'EM-Active',\n      brand: 'Multikraft\u00ae',\n      desc: 'Effective Microorganisms for agriculture, gardens, compost, the home and farm hygiene. A natural soil bio-enhancer with live cultures.',\n      url: 'https:\/\/shop.zeolife.gr\/en\/product\/active-microorganisms-em-active\/',\n      packages: [\n        { lit: 1,  price: 10,  label: '1 litre',   pricePerLit: 10 },\n        { lit: 5,  price: 36,  label: '5 litres',  pricePerLit: 7.20 },\n        { lit: 25, price: 125, label: '25 litres', pricePerLit: 5.00 }\n      ]\n    },\n    fke: {\n      name: 'FKE (EM + herbs)',\n      brand: 'Multikraft\u00ae',\n      desc: 'Liquid feed supplement with Effective Microorganisms and extracts of 10 organic herbs. For cattle, pigs, sheep & goats, horses, poultry and pigeons. Given in feed or drinking water. Certified for organic livestock farming.',\n      url: 'https:\/\/shop.zeolife.gr\/en\/product\/fke-2\/',\n      packages: [\n        { lit: 1,  price: 10,  label: '1 litre',   pricePerLit: 10 },\n        { lit: 5,  price: 36,  label: '5 litres',  pricePerLit: 7.20 },\n        { lit: 25, price: 125, label: '25 litres', pricePerLit: 5.00 }\n      ]\n    }\n  };\n  \/\/ ===== USE CASE CONFIG =====\n  \/\/ For each use case: which product, sub-options, qty inputs, dosage calculation\n  var useCases = {\n    crops: {\n      product: 'em_active',\n      title: '\ud83c\udf3e Crops',\n      subOptions: [\n        { value: 'low_organic',  label: 'Low organic matter (depleted soil)', litPerStremmaWeek: 3 },\n        { value: 'med_organic',  label: 'Medium organic matter', litPerStremmaWeek: 2 },\n        { value: 'high_organic', label: 'High organic matter (rich soil)', litPerStremmaWeek: 1 }\n      ],\n      qty: { label: 'Stremmata (1 stremma = 1,000 m\u00b2)', placeholder: 'e.g. 5', unit: 'stremmata' },\n      applyEvery: 7, \/\/ weekly\n      durationLabel: 'Spraying period (days)'\n    },\n    trees: {\n      product: 'em_active',\n      title: '\ud83c\udf33 Tree crops',\n      subOptions: [\n        { value: 'low',  label: 'Few applications (4\u00d7\/year)', litPerStremmaApp: 2, appsPerYear: 4 },\n        { value: 'high', label: 'Many applications (6\u00d7\/year)', litPerStremmaApp: 1.5, appsPerYear: 6 }\n      ],\n      qty: { label: 'Stremmata (1 stremma = 1,000 m\u00b2)', placeholder: 'e.g. 10', unit: 'stremmata' },\n      durationLabel: 'Period (usually 365 days = 1 year)'\n    },\n    garden: {\n      product: 'em_active',\n      title: '\ud83e\udeb4 Garden\/Pots',\n      subOptions: [\n        { value: 'weekly',  label: 'Weekly (1:200) \u2014 50ml\/10L of water', mlPerWeek: 50, applyEvery: 7 },\n        { value: 'each',    label: 'Every watering (1:1000) \u2014 10ml\/10L of water', mlPerWeek: 10, applyEvery: 3, note: 'Every ~3 days' }\n      ],\n      qty: { label: 'Litres of irrigation water per application', placeholder: 'e.g. 50', unit: 'litres of water' },\n      durationLabel: 'Watering period (days)'\n    },\n    compost: {\n      product: 'em_active',\n      title: '\ud83c\udf31 Composting',\n      subOptions: [\n        { value: 'initial',  label: 'Initial inoculation \u2014 1 L\/m\u00b3 compost', litPerM3: 1, oneTime: true, qtyLabel: 'Compost volume (m\u00b3)', qtyUnit: 'm\u00b3' },\n        { value: 'refresh',  label: 'Top-up \u2014 0.1 L per addition of material', litPerAddition: 0.1, perAddition: true, qtyLabel: 'Number of material additions', qtyUnit: 'additions' }\n      ],\n      qty: { label: 'Compost volume (m\u00b3) or number of additions', placeholder: 'e.g. 2', unit: '' },\n      durationLabel: 'No duration needed \u2014 one application'\n    },\n    livestock: {\n      product: 'fke',\n      title: '\ud83d\udc04 Livestock (FKE)',\n      \/\/ route: 'feed' or 'water' (drinking water).\n      \/\/  - Animals dosed per animal\/day (cattle, sheep, horses): SAME amount either way.\n      \/\/  - Pigs: feed 7 L\/tonne \u2192 water 3 L\/tonne (litPerTonFeedWater).\n      \/\/  - Poultry & pigeons: SAME dose in feed & water (5-7 L\/tonne of feed).\n      \/\/  - waterLPerAnimalDay: average daily water intake per animal \u2014 used ONLY\n      \/\/    to show the practical \"ml FKE per litre of drinking water\" ratio.\n      hasRoute: true,\n      subOptions: [\n        { value: 'cattle_dairy',  label: '\ud83d\udc04 Dairy cattle (75 ml\/animal\/day)', mlPerAnimalDay: 75, waterLPerAnimalDay: 80, unitNoun: 'cows' },\n        { value: 'cattle_dairy_start', label: '\ud83d\udc04 Dairy cattle \u2014 first-month start-up (150 ml\/animal\/day)', mlPerAnimalDay: 150, waterLPerAnimalDay: 80, unitNoun: 'cows' },\n        { value: 'cattle_young', label: '\ud83d\udc2e Young cattle (45 ml\/animal\/day)', mlPerAnimalDay: 45, waterLPerAnimalDay: 40, unitNoun: 'cows' },\n        { value: 'pigs',         label: '\ud83d\udc16 Pigs \u2014 feed 7 \/ water 3 L per tonne of feed', litPerTonFeed: 7, litPerTonFeedWater: 3, feedPerAnimalKg: 2.5, waterLPerAnimalDay: 8, unitNoun: 'pigs' },\n        { value: 'poultry_meat', label: '\ud83d\udc14 Broilers (5-7 L\/tonne of feed)', litPerTonFeed: 6, feedPerAnimalKg: 0.12, waterLPerAnimalDay: 0.25, qtyLabel: 'Number of birds', qtyUnit: 'birds', unitNoun: 'birds' },\n        { value: 'poultry_egg',  label: '\ud83d\udc13 Laying hens (5-7 L\/tonne of feed)', litPerTonFeed: 6, feedPerAnimalKg: 0.13, waterLPerAnimalDay: 0.25, qtyLabel: 'Number of hens', qtyUnit: 'hens', unitNoun: 'hens' },\n        { value: 'pigeons',      label: '\ud83d\udc26 Pigeons (5-7 L\/tonne of feed)', litPerTonFeed: 6, feedPerAnimalKg: 0.03, waterLPerAnimalDay: 0.05, qtyLabel: 'Number of pigeons', qtyUnit: 'pigeons', unitNoun: 'pigeons' },\n        { value: 'sheep_goats',  label: '\ud83d\udc11 Sheep\/Goats (30 ml\/animal\/day)', mlPerAnimalDay: 30, waterLPerAnimalDay: 6, unitNoun: 'animals' },\n        { value: 'horses',       label: '\ud83d\udc0e Horses (50 ml\/horse\/day)', mlPerAnimalDay: 50, waterLPerAnimalDay: 30, unitNoun: 'horses' }\n      ],\n      qty: { label: 'Number of animals', placeholder: 'e.g. 50', unit: 'animals' },\n      durationLabel: 'Administration period (days)'\n    },\n    ensilage: {\n      product: 'fke',\n      title: '\ud83c\udf3d Silage',\n      subOptions: [\n        { value: 'grass',   label: 'Grass\/hay \u2014 1 L FKE\/m\u00b3', litPerM3: 1 },\n        { value: 'corn',    label: 'Maize \u2014 2 L FKE\/m\u00b3', litPerM3: 2 }\n      ],\n      qty: { label: 'Silage volume (m\u00b3)', placeholder: 'e.g. 50', unit: 'm\u00b3' },\n      durationLabel: 'Not needed \u2014 one application per silage'\n    },\n    hygiene: {\n      product: 'em_active',\n      title: '\ud83d\udc14 Farm hygiene',\n      \/\/ NOTE: mlSolutionPerM2 is READY-TO-USE SOLUTION (water + EM), not pure EM-Active.\n      \/\/ Pure EM-Active = solution \u00d7 pctDilution (e.g. 100 ml\/m\u00b2 \u00d7 2% = 2 ml EM-Active\/m\u00b2).\n      subOptions: [\n        { value: 'low',   label: 'Light sanitising (1% dilution) \u2014 50 ml solution\/m\u00b2', pctDilution: 0.01, mlSolutionPerM2: 50 },\n        { value: 'med',   label: 'Medium sanitising (2% dilution) \u2014 100 ml solution\/m\u00b2', pctDilution: 0.02, mlSolutionPerM2: 100 },\n        { value: 'high',  label: 'Intensive sanitising (4% dilution) \u2014 200 ml solution\/m\u00b2', pctDilution: 0.04, mlSolutionPerM2: 200 }\n      ],\n      qty: { label: 'Surface area (m\u00b2)', placeholder: 'e.g. 200', unit: 'm\u00b2' },\n      applyEvery: 14, \/\/ bi-weekly typical\n      durationLabel: 'Frequency\/Duration \u2014 applied every 2 weeks'\n    },\n    home: {\n      product: 'em_active',\n      title: '\ud83c\udfe0 Home \/ Cleaning',\n      subOptions: [\n        { value: 'air',         label: 'Room air \/ odours \u2014 20 ml in 1 L of water', mlPerLNeeded: 20, perL: 1, qtyLabel: 'Number of applications', qtyUnit: 'applications' },\n        { value: 'furniture',   label: 'Furniture\/floors\/tiles \u2014 10 ml in 5 L of water', mlPerLNeeded: 10, perL: 5, qtyLabel: 'Number of applications', qtyUnit: 'applications' },\n        { value: 'dust',        label: 'Dust binding (antistatic) \u2014 20 ml in 5 L', mlPerLNeeded: 20, perL: 5, qtyLabel: 'Number of applications', qtyUnit: 'applications' },\n        { value: 'odors',       label: 'Unpleasant odours \u2014 20 ml in 10 L', mlPerLNeeded: 20, perL: 10, qtyLabel: 'Number of applications', qtyUnit: 'applications' },\n        { value: 'laundry',     label: 'Laundry \u2014 10 ml\/load', mlPerLoad: 10, isLoad: true, qtyLabel: 'Number of washes', qtyUnit: 'washes' },\n        { value: 'drains',      label: 'Drain pipes \u2014 undiluted, 100 ml\/month', mlDirect: 100, monthly: true, qtyLabel: 'Number of drain points', qtyUnit: 'points' }\n      ],\n      qty: { label: 'Number of applications or litres of water', placeholder: 'e.g. 20', unit: '' },\n      durationLabel: 'Period of use (days)'\n    },\n    spray: {\n      product: 'em_active',\n      title: '\ud83d\udca8 Foliar spray',\n      subOptions: [\n        { value: 'low',   label: '1% dilution (10 ml\/L of water) \u2014 preventive', pctDilution: 0.01 },\n        { value: 'med',   label: '2% dilution (20 ml\/L of water) \u2014 after a problem', pctDilution: 0.02 },\n        { value: 'high',  label: '4% dilution (40 ml\/L of water) \u2014 intensive treatment', pctDilution: 0.04 }\n      ],\n      qty: { label: 'Litres of spray solution', placeholder: 'e.g. 200', unit: 'litres of solution' },\n      applyEvery: 14, \/\/ 7-30 days, average 14\n      durationLabel: 'Spraying period (usually 90-180 days of growing season)'\n    }\n  };\n  \/\/ ===== NO VOLUME DISCOUNT for EM products =====\n  function getVolumeDiscount(n20L) { return 0; }\n  \/\/ ===== ELEMENTS =====\n  var calc = document.getElementById('emCalc');\n  if (!calc) { return; }\n  var steps = calc.querySelectorAll('.step:not(#emOtherStep)');\n  var otherStep = document.getElementById('emOtherStep');\n  var actionsRow = calc.querySelector('.actions');\n  var tankSection = calc.querySelector('.tank-section'); \/\/ optional, may not exist\n  var progressBar = document.getElementById('emProgress');\n  var calcBtn = document.getElementById('emCalculate');\n  var resetBtn = document.getElementById('emReset');\n  var printBtn = document.getElementById('emPrint');\n  var resultBox = document.getElementById('emResult');\n  var resultBody = document.getElementById('emResultBody');\n  var subContainer = document.getElementById('emSubContainer');\n  var qtyContainer = document.getElementById('emQtyContainer');\n  var customDaysInput = document.getElementById('emCustomDays');\n  var durationNote = document.getElementById('emDurationNote');\n  var MUTED = 'var(--em-muted,#6b6a64)';\n  \/\/ ===== HELPERS =====\n  function each(list, fn) { Array.prototype.forEach.call(list, fn); }\n  \/\/ FIX: the old isPositive accepted text \u2014 Number('abc') <= 0 is false (NaN).\n  function isPositive(v) {\n    if (v === null || v === undefined || v === '') return false;\n    var n = Number(v);\n    if (!isFinite(n)) { return false; }\n    return n > 0;\n  }\n  function getChecked(name) {\n    var el = calc.querySelector('input[name=\"' + name + '\"]:checked');\n    return el ? el.value : null;\n  }\n  function getVal(id) {\n    var el = document.getElementById(id);\n    return el ? el.value : null;\n  }\n  \/\/ Number formatting (decimal point, no trailing zeros)\n  function fmtNum(n, dec) {\n    if (dec === undefined || dec === null) dec = 2;\n    var s = Number(n).toFixed(dec);\n    if (s.indexOf('.') !== -1) { s = s.replace(\/(\\.\\d*?)0+$\/, '$1').replace(\/\\.$\/, ''); }\n    return s;\n  }\n  function fmtL(ml) {\n    if (ml >= 1000) return fmtNum(ml \/ 1000, 2) + ' L';\n    return fmtNum(ml, ml < 10 ? 2 : 0) + ' ml';\n  }\n  function fmtEuro(n) {\n    return '\u20ac' + n.toFixed(2);\n  }\n  function getSubData(uc, sub) {\n    var ucData = useCases[uc];\n    if (!ucData || !sub) return null;\n    for (var i = 0; i < ucData.subOptions.length; i++) {\n      if (ucData.subOptions[i].value === sub) return ucData.subOptions[i];\n    }\n    return null;\n  }\n  \/\/ ===== \"ASK US\" \u2014 REQUEST MODE =====\n  function updateOtherLinks() {\n    var cropEl = document.getElementById('emOtherCrop');\n    var detEl = document.getElementById('emOtherDetails');\n    var cropName = cropEl ? cropEl.value.trim() : '';\n    var details = detEl ? detEl.value.trim() : '';\n    var msg = 'Hello! I would like a personalised Effective Microorganisms (EM) dosage recommendation for: ' + (cropName || '[enter use\/crop]');\n    if (details) { msg += '. Additional details: ' + details; }\n    var wa = document.getElementById('emOtherWhatsapp');\n    var vb = document.getElementById('emOtherViber');\n    var em = document.getElementById('emOtherEmail');\n    if (wa) { wa.href = 'https:\/\/wa.me\/306985838343?text=' + encodeURIComponent(msg); }\n    if (vb) { vb.href = 'viber:\/\/chat?number=' + encodeURIComponent('306985838343') + '&#038;text=' + encodeURIComponent(msg); }\n    if (em) { em.href = 'mailto:info@zeolife.gr?subject=' + encodeURIComponent('EM dosage request' + (cropName ? (' \u2013 ' + cropName) : '')) + '&#038;body=' + encodeURIComponent(msg); }\n  }\n  function enterOtherMode() {\n    each(steps, function(s) { s.style.display = 'none'; s.classList.remove('active'); });\n    if (actionsRow) { actionsRow.style.display = 'none'; }\n    if (tankSection) { tankSection.style.display = 'none'; }\n    resultBox.classList.remove('show');\n    if (otherStep) {\n      otherStep.style.display = '';\n      otherStep.classList.add('active');\n      otherStep.scrollIntoView({ behavior: 'smooth', block: 'start' });\n    }\n    progressBar.style.width = '100%';\n    calcBtn.disabled = true;\n    updateOtherLinks();\n  }\n  function exitOtherMode() {\n    each(steps, function(s) { s.style.display = ''; });\n    if (actionsRow) { actionsRow.style.display = ''; }\n    if (tankSection) { tankSection.style.display = ''; }\n    if (otherStep) { otherStep.style.display = 'none'; otherStep.classList.remove('active'); }\n  }\n  \/\/ ===== RENDER SUB-OPTIONS =====\n  function renderSubStep(uc) {\n    if (!uc) {\n      subContainer.innerHTML = '<p style=\"color:' + MUTED + ';font-style:italic;\">First choose a use in Step 1.<\/p>';\n      return;\n    }\n    var ucData = useCases[uc];\n    if (!ucData) return;\n    var html = '<div class=\"options cols-2\">';\n    for (var i = 0; i < ucData.subOptions.length; i++) {\n      var s = ucData.subOptions[i];\n      html += '<label class=\"option\"><input type=\"radio\" name=\"subOption\" value=\"' + s.value + '\">';\n      html += '<span class=\"opt-title\">' + s.label.split(' \u2014 ')[0] + '<\/span>';\n      var descPart = s.label.indexOf(' \u2014 ') !== -1 ? s.label.split(' \u2014 ')[1] : '';\n      if (descPart) html += '<span class=\"opt-desc\">' + descPart + '<\/span>';\n      html += '<\/label>';\n    }\n    html += '<\/div>';\n    \/\/ Farm hygiene: make it clear the ml\/m\u00b2 refers to READY-TO-USE SOLUTION\n    if (uc === 'hygiene') {\n      html += '<p class=\"sublabel\">\ud83d\udca7 The ml\/m\u00b2 refer to the <strong>ready-to-use (diluted) solution<\/strong>. Pure EM-Active is the dilution percentage of that \u2014 e.g. 100 ml of solution\/m\u00b2 at 2% = <strong>2 ml EM-Active\/m\u00b2<\/strong>.<\/p>';\n    }\n    \/\/ ===== ADMINISTRATION ROUTE (Livestock only): feed or drinking water =====\n    if (ucData.hasRoute) {\n      html += '<div style=\"margin-top:1.1rem\">';\n      html += '<label class=\"qty-label\">\ud83d\udca7 How FKE is given<\/label>';\n      html += '<div class=\"options cols-2\">';\n      html += '<label class=\"option\"><input type=\"radio\" name=\"feedRoute\" value=\"feed\">';\n      html += '<span class=\"opt-title\">\ud83e\udd63 In the feed<\/span><span class=\"opt-desc\">Sprayed\/mixed into the feed<\/span><\/label>';\n      html += '<label class=\"option\"><input type=\"radio\" name=\"feedRoute\" value=\"water\">';\n      html += '<span class=\"opt-title\">\ud83d\udca7 In drinking water<\/span><span class=\"opt-desc\">Dissolved in the day\\'s water<\/span><\/label>';\n      html += '<\/div>';\n      html += '<p class=\"sublabel\">Both methods are official (Multikraft\u00ae) \u2014 choose the one that suits your farm. For poultry and pigeons the dose is the <strong>same<\/strong> either way.<\/p>';\n      html += '<\/div>';\n    }\n    subContainer.innerHTML = html;\n    each(subContainer.querySelectorAll('input'), function(inp) {\n      inp.addEventListener('change', function() {\n        \/\/ Quantity labels change per sub-option (e.g. \"Number of pigeons\")\n        renderQtyStep(getChecked('useCase'), getChecked('subOption'));\n        updateProgress();\n      });\n    });\n  }\n  function renderQtyStep(uc, sub) {\n    if (!uc) {\n      qtyContainer.innerHTML = '<p style=\"color:' + MUTED + ';font-style:italic;\">First choose a use.<\/p>';\n      return;\n    }\n    var ucData = useCases[uc];\n    var subData = getSubData(uc, sub);\n    var label = (subData ? subData.qtyLabel : false) ? subData.qtyLabel : ucData.qty.label;\n    var unit  = (subData ? (subData.qtyUnit !== undefined) : false) ? subData.qtyUnit  : ucData.qty.unit;\n    var prevEl = document.getElementById('emQty');\n    var prevVal = prevEl ? prevEl.value : '';\n    var html = '<label class=\"qty-label\" for=\"emQty\">' + label + '<\/label>';\n    html += '<input type=\"number\" id=\"emQty\" class=\"qty-input\" min=\"0\" step=\"0.1\" placeholder=\"' + ucData.qty.placeholder + '\">';\n    if (unit) html += '<p class=\"sublabel\">Unit: ' + unit + '<\/p>';\n    qtyContainer.innerHTML = html;\n    var inp = document.getElementById('emQty');\n    if (inp) {\n      if (prevVal) inp.value = prevVal; \/\/ keep whatever the user already typed\n      inp.addEventListener('input', updateProgress);\n    }\n    \/\/ Update duration note\n    if (durationNote ? ucData.durationLabel : false) {\n      durationNote.innerHTML = '\ud83d\udca1 ' + ucData.durationLabel;\n    }\n  }\n  \/\/ ===== VALIDATION =====\n  function isFormValid() {\n    var uc = getChecked('useCase');\n    if (!uc) return false;\n    if (uc === 'other') return false;\n    if (!getChecked('subOption')) return false;\n    \/\/ Livestock: the administration route (feed\/water) is also required\n    if ((useCases[uc] ? useCases[uc].hasRoute : false) ? !getChecked('feedRoute') : false) return false;\n    if (!isPositive(getVal('emQty'))) return false;\n    \/\/ Duration not required for one-time use cases\n    if (uc === 'compost' || uc === 'ensilage') return true;\n    if (!getChecked('duration')) {\n      if (!isPositive(getVal('emCustomDays'))) return false;\n    }\n    return true;\n  }\n  \/\/ ===== PROGRESS =====\n  function updateProgress() {\n    var uc = getChecked('useCase');\n    \/\/ \"Ask us\" \u2192 request mode, not a calculation. Handled by enterOtherMode().\n    if (uc === 'other') { return; }\n    var needsRoute = !!(uc ? (useCases[uc] ? useCases[uc].hasRoute : false) : false);\n    var filled = 0;\n    if (uc) filled++;\n    \/\/ Step 2 counts as complete only when a sub-option is selected\n    \/\/ AND (for livestock) the administration route.\n    var subOk = !!getChecked('subOption');\n    if (needsRoute ? !getChecked('feedRoute') : false) subOk = false;\n    if (subOk) filled++;\n    if (isPositive(getVal('emQty'))) filled++;\n    if (uc === 'compost' || uc === 'ensilage') {\n      \/\/ No duration needed\n      if (filled === 3) filled = 4;\n    } else {\n      if (getChecked('duration') || isPositive(getVal('emCustomDays'))) filled++;\n    }\n    progressBar.style.width = (filled \/ 4 * 100) + '%';\n    each(steps, function(s, i) {\n      var isActive = (i === filled) || (i === filled - 1);\n      s.classList.toggle('active', isActive);\n    });\n    calcBtn.disabled = !isFormValid();\n  }\n  \/\/ ===== LISTENERS =====\n  each(calc.querySelectorAll('input[name=\"useCase\"]'), function(r) {\n    r.addEventListener('change', function() {\n      if (r.value === 'other') {\n        enterOtherMode();\n      } else {\n        exitOtherMode();\n        renderSubStep(r.value);\n        renderQtyStep(r.value, null);\n      }\n      updateProgress();\n    });\n  });\n  each(calc.querySelectorAll('input[name=\"duration\"]'), function(r) {\n    r.addEventListener('change', function() {\n      if (customDaysInput) customDaysInput.value = '';\n      updateProgress();\n    });\n  });\n  if (customDaysInput) {\n    customDaysInput.addEventListener('input', function() {\n      if (isPositive(customDaysInput.value)) {\n        each(calc.querySelectorAll('input[name=\"duration\"]'), function(r) { r.checked = false; });\n      }\n      updateProgress();\n    });\n  }\n  \/\/ Live-update the WhatsApp\/Viber\/Email links as the user types\n  each(['emOtherCrop', 'emOtherDetails'], function(id) {\n    var el = document.getElementById(id);\n    if (el) { el.addEventListener('input', updateOtherLinks); }\n  });\n  \/\/ \"\u2190 Back to the guide\"\n  var otherBackBtn = document.getElementById('emOtherBack');\n  if (otherBackBtn) {\n    otherBackBtn.addEventListener('click', function() {\n      var otherRadio = calc.querySelector('input[name=\"useCase\"][value=\"other\"]');\n      if (otherRadio) { otherRadio.checked = false; }\n      exitOtherMode();\n      updateProgress();\n      steps[0].classList.add('active');\n      steps[0].scrollIntoView({ behavior: 'smooth', block: 'start' });\n    });\n  }\n  resetBtn.addEventListener('click', function() {\n    each(calc.querySelectorAll('input[type=\"radio\"]'), function(r) { r.checked = false; });\n    each(calc.querySelectorAll('input[type=\"number\"]'), function(r) { r.value = ''; });\n    var oc = document.getElementById('emOtherCrop'); if (oc) oc.value = '';\n    var od = document.getElementById('emOtherDetails'); if (od) od.value = '';\n    exitOtherMode();\n    subContainer.innerHTML = '<p style=\"color:' + MUTED + ';font-style:italic;\">First choose a use in Step 1.<\/p>';\n    qtyContainer.innerHTML = '<p style=\"color:' + MUTED + ';font-style:italic;\">First choose a use.<\/p>';\n    resultBox.classList.remove('show');\n    updateProgress();\n    steps[0].classList.add('active');\n    steps[0].scrollIntoView({ behavior: 'smooth', block: 'start' });\n  });\n  printBtn.addEventListener('click', function() {\n    if (!resultBox.classList.contains('show')) {\n      alert('Please calculate the dosage first.');\n      return;\n    }\n    window.print();\n  });\n  \/\/ ===== SMART PACKAGING (1L + 5L + 25L combo) =====\n  \/\/ Find cheapest combo that covers totalLit\n  function smartPackaging(totalLit, productKey) {\n    var p = products[productKey];\n    var pkgs = p.packages; \/\/ [1L, 5L, 25L]\n    var p1 = pkgs[0];\n    var p5 = pkgs[1];\n    var p20 = pkgs[2];\n    var best = null;\n    var max20 = Math.ceil(totalLit \/ p20.lit) + 1;\n    for (var n20 = 0; n20 <= max20; n20++) {\n      var after20 = totalLit - n20 * p20.lit;\n      if (after20 < 0) after20 = 0;\n      var max5 = Math.ceil(after20 \/ 5) + 1;\n      for (var n5 = 0; n5 <= max5; n5++) {\n        var after5 = after20 - n5 * 5;\n        if (after5 < 0) after5 = 0;\n        var n1 = Math.ceil(after5 - 1e-9);\n        if (n1 < 0) n1 = 0;\n        var coveredLit = n20 * p20.lit + n5 * 5 + n1;\n        if (coveredLit < totalLit - 1e-9) continue;\n        if (n20 + n5 + n1 === 0) continue;\n        var discount = getVolumeDiscount(n20);\n        var cost = n20 * p20.price * (1 - discount) + n5 * p5.price + n1 * p1.price;\n        if (!best || cost < best.cost) {\n          var combo = [];\n          if (n20 > 0) combo.push({ pkg: p20, qty: n20, discount: discount, lineCost: n20 * p20.price * (1 - discount), baseCost: n20 * p20.price });\n          if (n5 > 0)  combo.push({ pkg: p5,  qty: n5,  discount: 0,        lineCost: n5 * p5.price,  baseCost: n5 * p5.price });\n          if (n1 > 0)  combo.push({ pkg: p1,  qty: n1,  discount: 0,        lineCost: n1 * p1.price,  baseCost: n1 * p1.price });\n          best = { combo: combo, cost: cost, coveredLit: coveredLit, n20: n20, discount: discount };\n        }\n      }\n    }\n    \/\/ Safety: if for any reason no combination was found, fall back to 1\u00d7 1L.\n    if (!best) {\n      best = { combo: [{ pkg: p1, qty: 1, discount: 0, lineCost: p1.price, baseCost: p1.price }], cost: p1.price, coveredLit: 1, n20: 0, discount: 0 };\n    }\n    var baseTotal = 0;\n    for (var i = 0; i < best.combo.length; i++) baseTotal += best.combo[i].baseCost;\n    return {\n      product: p,\n      productKey: productKey,\n      totalLit: totalLit,\n      combo: best.combo,\n      coveredLit: best.coveredLit,\n      basePrice: baseTotal,\n      discount: best.discount,\n      finalPrice: best.cost,\n      n20: best.n20\n    };\n  }\n  \/\/ ===== CALCULATE TOTAL LITERS NEEDED =====\n  function calculateTotalLit(uc, sub, qty, days, route) {\n    var ucData = useCases[uc];\n    var subData = getSubData(uc, sub);\n    if (!subData) return { totalLit: 0, breakdown: '' };\n    var totalLit = 0;\n    var breakdown = '';\n    var extra = null; \/\/ optional extra data (e.g. dilution recipe)\n    if (uc === 'crops') {\n      var weeks = Math.ceil(days \/ 7);\n      totalLit = qty * subData.litPerStremmaWeek * weeks;\n      breakdown = qty + ' stremmata \u00d7 ' + fmtNum(subData.litPerStremmaWeek, 1) + ' L\/week \u00d7 ' + weeks + ' weeks = <strong>' + fmtNum(totalLit, 1) + ' L<\/strong>';\n    } else if (uc === 'trees') {\n      var apps = subData.appsPerYear;\n      \/\/ Scale by days proportional to year (365)\n      var actualApps = Math.max(1, Math.round(apps * days \/ 365));\n      totalLit = qty * subData.litPerStremmaApp * actualApps;\n      breakdown = qty + ' stremmata \u00d7 ' + fmtNum(subData.litPerStremmaApp, 1) + ' L\/application \u00d7 ' + actualApps + ' applications (instead of ' + apps + '\/year, scaled to ' + days + ' days) = <strong>' + fmtNum(totalLit, 1) + ' L<\/strong>';\n    } else if (uc === 'garden') {\n      var appsG = Math.ceil(days \/ subData.applyEvery);\n      var mlPerApp = qty * subData.mlPerWeek \/ 10; \/\/ qty = litres of water, dosage is ml per 10L water\n      totalLit = (mlPerApp * appsG) \/ 1000; \/\/ ml to L\n      breakdown = qty + ' L water \u00d7 ' + subData.mlPerWeek + ' ml per 10L \u00d7 ' + appsG + ' applications = <strong>' + fmtNum(totalLit, 2) + ' L EM-Active<\/strong>';\n    } else if (uc === 'compost') {\n      if (subData.oneTime) {\n        totalLit = qty * subData.litPerM3;\n        breakdown = qty + ' m\u00b3 \u00d7 ' + fmtNum(subData.litPerM3, 1) + ' L\/m\u00b3 = <strong>' + fmtNum(totalLit, 1) + ' L<\/strong>';\n      } else {\n        totalLit = qty * subData.litPerAddition;\n        breakdown = qty + ' additions \u00d7 ' + fmtNum(subData.litPerAddition, 2) + ' L\/addition = <strong>' + fmtNum(totalLit, 2) + ' L<\/strong>';\n      }\n    } else if (uc === 'livestock') {\n      \/\/ Administration route: 'feed' or 'water' (drinking water).\n      var isWater = (route === 'water');\n      var routeLabel = isWater ? 'in water' : 'in feed';\n      \/\/ Start from the FEED coefficients and, if on water, replace them\n      \/\/ with the official water coefficients where they differ.\n      var mlDay = (subData.mlPerAnimalDay != null) ? subData.mlPerAnimalDay : null;   \/\/ ml\/animal\/day (ruminants\/horses)\n      var litTon = (subData.litPerTonFeed != null) ? subData.litPerTonFeed : null;    \/\/ L\/tonne of feed (pigs\/poultry\/pigeons)\n      var noun = subData.unitNoun || 'animals';\n      var nounSing = (noun === 'pigeons') ? 'pigeon' : (noun === 'birds' ? 'bird' : (noun === 'hens' ? 'hen' : 'animal'));\n      var sameDoseBothRoutes = false;\n      if (isWater) {\n        if (subData.mlPerAnimalDayWater != null) {        \/\/ specific water dose per animal\n          mlDay = subData.mlPerAnimalDayWater; litTon = null;\n        } else if (subData.litPerTonFeedWater != null) {  \/\/ pigs: 3 L\/tonne of feed\n          litTon = subData.litPerTonFeedWater; mlDay = null;\n        } else {\n          sameDoseBothRoutes = true;                      \/\/ ruminants\/horses\/poultry\/pigeons\n        }\n      }\n      var mlPerAnimalDay = null;\n      if (mlDay != null) {\n        mlPerAnimalDay = mlDay;\n        totalLit = (qty * mlDay * days) \/ 1000;\n        breakdown = qty + ' ' + noun + ' \u00d7 ' + fmtNum(mlDay, 2) + ' ml\/' + nounSing + '\/day (' + routeLabel + ') \u00d7 ' + days + ' days = <strong>' + fmtNum(totalLit, 2) + ' L FKE<\/strong>';\n      } else if (litTon != null) {\n        var dailyFeedTons = (qty * subData.feedPerAnimalKg) \/ 1000;\n        mlPerAnimalDay = litTon * subData.feedPerAnimalKg; \/\/ L\/t \u00d7 kg = ml\/animal\/day\n        totalLit = dailyFeedTons * litTon * days;\n        breakdown = qty + ' ' + noun + ' \u00d7 ' + fmtNum(subData.feedPerAnimalKg * 1000, 0) + ' g feed\/day \u00d7 ' + days + ' days = ' + fmtNum(dailyFeedTons * days, 2) + ' t of feed \u00d7 ' + fmtNum(litTon, 1) + ' L\/t (' + routeLabel + ') = <strong>' + fmtNum(totalLit, 2) + ' L FKE<\/strong>';\n      }\n      if (sameDoseBothRoutes) {\n        breakdown += '<br>\u2139\ufe0f The dose is the <strong>same<\/strong> in feed and water \u2014 only the method changes.';\n      }\n      \/\/ Practical ratio in drinking water (ml FKE per litre of water)\n      if ((isWater ? mlPerAnimalDay != null : false) ? subData.waterLPerAnimalDay : false) {\n        var concMlPerL = mlPerAnimalDay \/ subData.waterLPerAnimalDay;\n        extra = {\n          water: true,\n          mlPerAnimalDay: mlPerAnimalDay,\n          dailyMlTotal: qty * mlPerAnimalDay,\n          dailyWaterL: qty * subData.waterLPerAnimalDay,\n          waterLPerAnimalDay: subData.waterLPerAnimalDay,\n          concMlPerL: concMlPerL,\n          noun: noun,\n          nounSing: nounSing\n        };\n        breakdown += '<br>\ud83d\udca7 In practice: <strong>\u2248 ' + fmtNum(concMlPerL, 2) + ' ml FKE per litre of drinking water<\/strong> (\u2248 ' + fmtNum(concMlPerL \/ 10, 2) + '% dilution), based on ~' + fmtNum(subData.waterLPerAnimalDay, 2) + ' L water\/' + nounSing + '\/day.';\n      }\n    } else if (uc === 'ensilage') {\n      totalLit = qty * subData.litPerM3;\n      breakdown = qty + ' m\u00b3 \u00d7 ' + fmtNum(subData.litPerM3, 1) + ' L\/m\u00b3 = <strong>' + fmtNum(totalLit, 1) + ' L FKE<\/strong>';\n    } else if (uc === 'hygiene') {\n      \/\/ NOTE: the ml\/m\u00b2 refer to the READY-TO-USE (diluted) solution.\n      \/\/ Pure EM-Active is only the dilution percentage of the solution.\n      var apps2 = Math.ceil(days \/ ucData.applyEvery);\n      var pct = subData.pctDilution;                                 \/\/ e.g. 0.02 for 2%\n      var solutionMlPerApp = qty * subData.mlSolutionPerM2;          \/\/ ml of ready solution per application\n      var emMlPerApp = solutionMlPerApp * pct;                       \/\/ pure EM-Active per application\n      var waterMlPerApp = solutionMlPerApp - emMlPerApp;             \/\/ water per application\n      totalLit = (emMlPerApp * apps2) \/ 1000;\n      var solLitPerApp = solutionMlPerApp \/ 1000;\n      breakdown =\n        '\u2460 Spray solution: ' + qty + ' m\u00b2 \u00d7 ' + subData.mlSolutionPerM2 + ' ml\/m\u00b2 = <strong>' + fmtNum(solLitPerApp, 1) + ' L of ready-to-use solution<\/strong> per application<br>' +\n        '\u2461 Pure EM-Active: ' + fmtNum(solLitPerApp, 1) + ' L \u00d7 ' + fmtNum(pct * 100, 0) + '% = <strong>' + fmtL(emMlPerApp) + ' EM-Active<\/strong> per application<br>' +\n        '\u2462 Total: ' + fmtL(emMlPerApp) + ' \u00d7 ' + apps2 + ' applications (every 2 weeks) = <strong>' + fmtNum(totalLit, 2) + ' L EM-Active<\/strong>';\n      extra = {\n        hygiene: true,\n        solLitPerApp: solLitPerApp,\n        emMlPerApp: emMlPerApp,\n        waterLitPerApp: waterMlPerApp \/ 1000,\n        apps: apps2,\n        pct: pct\n      };\n    } else if (uc === 'home') {\n      if (subData.monthly) {\n        var months = Math.max(1, Math.ceil(days \/ 30));\n        totalLit = (qty * subData.mlDirect * months) \/ 1000;\n        breakdown = qty + ' points \u00d7 ' + subData.mlDirect + ' ml \u00d7 ' + months + ' months = <strong>' + fmtNum(totalLit, 2) + ' L<\/strong>';\n      } else if (subData.isLoad) {\n        totalLit = (qty * subData.mlPerLoad) \/ 1000;\n        breakdown = qty + ' laundry loads \u00d7 ' + subData.mlPerLoad + ' ml = <strong>' + fmtNum(totalLit, 2) + ' L<\/strong>';\n      } else {\n        \/\/ qty = number of applications\n        totalLit = (qty * subData.mlPerLNeeded) \/ 1000;\n        breakdown = qty + ' applications \u00d7 ' + subData.mlPerLNeeded + ' ml EM in ' + subData.perL + ' L of water = <strong>' + fmtNum(totalLit, 2) + ' L EM-Active<\/strong>';\n      }\n    } else if (uc === 'spray') {\n      var apps3 = Math.ceil(days \/ ucData.applyEvery);\n      var mlPerSpray = qty * 1000 * subData.pctDilution; \/\/ qty = L of solution \u2192 EM = % of solution\n      totalLit = (mlPerSpray * apps3) \/ 1000;\n      breakdown = qty + ' L of solution \u00d7 ' + fmtNum(subData.pctDilution * 100, 0) + '% \u00d7 ' + apps3 + ' sprays = <strong>' + fmtNum(totalLit, 2) + ' L EM-Active<\/strong>';\n    }\n    return { totalLit: totalLit, breakdown: breakdown, extra: extra };\n  }\n  \/\/ ===== APPLICATION INSTRUCTIONS =====\n  function getApplicationInstructions(uc, sub, route) {\n    \/\/ Livestock: instructions change depending on the administration route.\n    if (uc === 'livestock') {\n      var isBird = (sub === 'pigeons' || sub === 'poultry_meat' || sub === 'poultry_egg');\n      if (route === 'water') {\n        var txt = '\ud83d\udca7 Add the daily dose to the day\\'s <strong>clean drinking water<\/strong> (preferably unchlorinated \u2014 leave tap water uncovered overnight or filter it). Stir well and make sure the animals drink it <strong>the same day<\/strong>; keep drinkers\/pipes clean (biofilm). At first, start with half the dose for 3-4 days until they get used to the taste.';\n        if (isBird) {\n          txt += '<br><br>\ud83d\udc26 <strong>Poultry &amp; pigeons:<\/strong> fresh solution every day and wash the drinker \u2014 in small birds the solution ferments quickly. Do not give it together with antibiotics or water disinfectants (chlorine); give FKE <strong>after<\/strong> the treatment ends, when it helps most in restoring the gut flora. In summer heat, make sure water intake does not drop.';\n        }\n        return txt;\n      }\n      var txtF = '\ud83e\udd63 Spray or mix the daily dose into the <strong>feed<\/strong>. With pelleted feed, spray after cooling (&lt;40\u00b0C) so the microorganisms are not destroyed. Mix well for even distribution.';\n      if (isBird) {\n        txtF += '<br><br>\ud83d\udc26 <strong>Poultry &amp; pigeons:<\/strong> spray the dose onto the seed\/feed, mix and give it straight away \u2014 don\\'t prepare sprayed feed several days ahead.';\n      }\n      return txtF;\n    }\n    var instructions = {\n      crops:    'Dilute with irrigation water. Apply weekly with a watering can or irrigation system. <strong>Use within 1-2 days of dilution.<\/strong>',\n      trees:    'Apply at the root with irrigation water, 4-6 times a year. Best season: spring + summer.',\n      garden:   'Dilute in watering water. Apply with a watering can or sprayer. Compatible with organic growing.',\n      compost:  'Spray diluted 1:10 with water onto the organic material. Repeat when adding new material (0.1 L EM-Active each time).',\n      ensilage: 'Spray evenly while compacting the silage. Better fermentation + reduced nutrient loss.',\n      hygiene:  'First prepare the solution (EM-Active + water at the dilution ratio) and mist-spray floors, walls, nests, perches and equipment. Repeat every 2 weeks. Combined with zeolite in the bedding, ammonia and moisture are noticeably reduced.',\n      home:     'Dilute according to the ratios. For odours: spray evenly. For cleaning: use as a cleaner.',\n      spray:    'Spray the leaves early in the morning or late in the afternoon. Repeat every 7-30 days as needed.'\n    };\n    return instructions[uc] || 'Dilute with water and apply according to the instructions.';\n  }\n  \/\/ ===== RENDER PRODUCT CARD =====\n  function renderProductCard(packaging) {\n    var p = packaging.product;\n    var html = '<div class=\"product-card\">';\n    html += '<div class=\"badge-pos\">\u2b50 RECOMMENDED<\/div>';\n    html += '<h5>' + p.name + '<\/h5>';\n    html += '<p class=\"desc\">' + p.desc + '<\/p>';\n    html += '<div class=\"combo-list\">';\n    html += '<p class=\"combo-title\">\ud83d\udce6 Optimal packaging<\/p>';\n    for (var i = 0; i < packaging.combo.length; i++) {\n      var c = packaging.combo[i];\n      html += '<div class=\"combo-line\">';\n      html += '<div><a href=\"' + p.url + '\" target=\"_blank\" rel=\"noopener\">' + c.qty + '\u00d7 ' + c.pkg.label + '<\/a>';\n      html += ' <span class=\"ppl\">(' + fmtEuro(c.pkg.pricePerLit) + '\/L)<\/span>';\n      html += '<\/div>';\n      html += '<div class=\"price\">' + fmtEuro(c.lineCost) + '<\/div>';\n      html += '<\/div>';\n    }\n    html += '<\/div>';\n    html += '<div class=\"total\">';\n    html += '<strong>' + fmtEuro(packaging.finalPrice) + '<\/strong>';\n    html += '<span class=\"per\">Available: ' + fmtNum(packaging.coveredLit, 1) + ' L \u00b7 Covers: ' + fmtNum(packaging.totalLit, 2) + ' L<\/span>';\n    html += '<\/div>';\n    html += '<a href=\"' + p.url + '\" class=\"cta-btn\" target=\"_blank\" rel=\"noopener\">\ud83d\uded2 Order ' + p.name + ' \u2192<\/a>';\n    html += '<\/div>';\n    return html;\n  }\n  \/\/ ===== CALCULATE =====\n  function calculate() {\n    var uc = getChecked('useCase');\n    var sub = getChecked('subOption');\n    var route = getChecked('feedRoute'); \/\/ 'feed' | 'water' | null (livestock only)\n    var qty = Number(getVal('emQty'));\n    var duration = getChecked('duration');\n    var customDays = getVal('emCustomDays');\n    var days = duration ? Number(duration) : (isPositive(customDays) ? Number(customDays) : 30);\n    var ucData = useCases[uc];\n    \/\/ NOTE: called \"dose\", NOT \"calc\" \u2014 \"calc\" is the root element of the guide.\n    var dose = calculateTotalLit(uc, sub, qty, days, route);\n    if (!(dose.totalLit > 0)) {\n      resultBody.innerHTML = '<p style=\"color:#a12b2b;\">\u26a0\ufe0f The calculation did not produce a quantity. Please check your inputs.<\/p>';\n      resultBox.classList.add('show');\n      return;\n    }\n    var packaging = smartPackaging(dose.totalLit, ucData.product);\n    var html = '';\n    \/\/ ===== SUMMARY =====\n    var durSub;\n    if (uc === 'compost' || uc === 'ensilage') {\n      durSub = 'One application';\n    } else {\n      durSub = days + ' days';\n      if (uc === 'livestock') { durSub += ' \u00b7 ' + (route === 'water' ? '\ud83d\udca7 in water' : '\ud83e\udd63 in feed'); }\n    }\n    html += '<div class=\"summary-grid\">';\n    html += '<div class=\"summary-card\">';\n    html += '<div class=\"label\">\ud83e\udda0 Total required<\/div>';\n    html += '<div class=\"value\">' + fmtNum(dose.totalLit, 2) + ' L<\/div>';\n    html += '<div class=\"sub\">' + products[ucData.product].name + '<\/div>';\n    html += '<\/div>';\n    html += '<div class=\"summary-card\">';\n    html += '<div class=\"label\">\ud83c\udfaf Use<\/div>';\n    html += '<div class=\"value\">' + ucData.title + '<\/div>';\n    html += '<div class=\"sub\">' + durSub + '<\/div>';\n    html += '<\/div>';\n    html += '<\/div>';\n    \/\/ ===== BREAKDOWN =====\n    html += '<h4>\ud83d\udcca How it was calculated<\/h4>';\n    html += '<div class=\"schedule\"><strong>Dosage breakdown<\/strong>';\n    html += dose.breakdown;\n    html += '<\/div>';\n    \/\/ ===== DAILY RECIPE (Livestock \u2192 drinking water) =====\n    if ((uc === 'livestock' ? dose.extra : false) ? dose.extra.water : false) {\n      var e = dose.extra;\n      html += '<h4>\ud83e\uddea Daily recipe in drinking water<\/h4>';\n      html += '<div class=\"recipe\">';\n      html += '<h5>Daily dose for ' + fmtNum(qty, 0) + ' ' + (e.noun || 'animals') + '<\/h5>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">1<\/div><div>Measure <strong>' + fmtL(e.dailyMlTotal) + ' FKE<\/strong> (\u2248 ' + fmtNum(e.mlPerAnimalDay, 2) + ' ml per ' + (e.nounSing || 'animal') + '\/day).<\/div><\/div>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">2<\/div><div>Dissolve it in the day\\'s water \u2014 estimated intake <strong>~' + fmtNum(e.dailyWaterL, 1) + ' L<\/strong>. Ratio: <strong>\u2248 ' + fmtNum(e.concMlPerL, 2) + ' ml per litre of water<\/strong>.<\/div><\/div>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">3<\/div><div>Fresh solution every day, clean drinkers, chlorine-free water. Start with half the dose for 3-4 days.<\/div><\/div>';\n      html += '<p class=\"sublabel\">\ud83d\udca1 Water intake is an estimate (temperature, age and feed type change it). Keep the <strong>dose per ' + (e.nounSing || 'animal') + '<\/strong> constant and adjust the water.<\/p>';\n      html += '<\/div>';\n    }\n    \/\/ ===== DILUTION RECIPE (Farm hygiene) =====\n    if ((uc === 'hygiene' ? dose.extra : false) ? dose.extra.hygiene : false) {\n      html += '<h4>\ud83e\uddea Dilution recipe per application<\/h4>';\n      html += '<div class=\"recipe\">';\n      html += '<h5>For ' + qty + ' m\u00b2 you need ' + fmtNum(dose.extra.solLitPerApp, 1) + ' L of ready-to-use solution<\/h5>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">1<\/div><div>Pour <strong>' + fmtL(dose.extra.emMlPerApp) + ' EM-Active<\/strong> into the sprayer tank.<\/div><\/div>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">2<\/div><div>Top up with <strong>' + fmtNum(dose.extra.waterLitPerApp, 1) + ' L of water<\/strong> (chlorine-free) to ' + fmtNum(dose.extra.solLitPerApp, 1) + ' L \u2014 ' + fmtNum(dose.extra.pct * 100, 0) + '% dilution.<\/div><\/div>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">3<\/div><div>Spray the whole surface evenly. Repeat every 2 weeks (' + dose.extra.apps + ' applications in total).<\/div><\/div>';\n      html += '<p class=\"sublabel\">\ud83d\udca7 Total water for all applications: ~' + fmtNum(dose.extra.waterLitPerApp * dose.extra.apps, 0) + ' L<\/p>';\n      html += '<\/div>';\n    }\n    \/\/ ===== PRODUCT CARD =====\n    html += '<h4>\ud83d\udce6 Recommended order<\/h4>';\n    html += renderProductCard(packaging);\n    \/\/ ===== INSTRUCTIONS =====\n    html += '<h4>\ud83d\udca1 Application instructions<\/h4>';\n    html += '<div class=\"recipe\">';\n    html += '<p>' + getApplicationInstructions(uc, sub, route) + '<\/p>';\n    html += '<\/div>';\n    \/\/ ===== CROSS-SELL ZEOLITE =====\n    html += '<div class=\"cross-sell\">';\n    html += '<h5>\ud83e\udea8 Combine with Zeolite for 2\u00d7 results<\/h5>';\n    html += '<p>Effective Microorganisms work <strong>synergistically<\/strong> with zeolite: zeolite provides the \"structure\" (a micro-home for the microorganisms) and boosts the ability to retain nutrients.<\/p>';\n    if (uc === 'livestock' || uc === 'ensilage' || uc === 'hygiene') {\n      html += '<p>\ud83d\udccb <a href=\"https:\/\/zeolife.gr\/en\/zeolite-livestock-dosage-guide\/\">Zeolite Dosage Guide for Livestock<\/a><\/p>';\n    } else if (uc === 'crops' || uc === 'trees' || uc === 'spray') {\n      html += '<p>\ud83d\udccb <a href=\"https:\/\/zeolife.gr\/en\/zeolite-agriculture-dosage-calculator\/\">Zeolite Dosage Guide for Agriculture<\/a> \u00b7 \ud83c\udf31 <a href=\"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/\">EcoPlant\u00ae Dosage Guide<\/a> \u00b7 \ud83d\udca8 <a href=\"https:\/\/zeolife.gr\/en\/zete-dosage-guide\/\">ZeTe Dosage Guide<\/a><\/p>';\n    } else {\n      html += '<p>\ud83d\udccb <a href=\"https:\/\/zeolife.gr\/en\/zeolite-agriculture-dosage-calculator\/\">Zeolite Dosage Guide for Agriculture<\/a><\/p>';\n    }\n    html += '<\/div>';\n    \/\/ ===== WARNING =====\n    html += '<div class=\"warning\"><strong>\u26a0\ufe0f Important information<\/strong>';\n    html += '\ud83d\udd50 <strong>Use within 1-2 days of dilution<\/strong> (the live microorganisms lose activity) \u2014 in drinking water, fresh solution every day.<br>';\n    html += '\ud83d\udeab Not together with antibiotics or disinfectants\/chlorinated water.<br>';\n    html += '\ud83c\udf21\ufe0f Store in a shaded, cool place.<br>';\n    html += '\u2600\ufe0f Avoid direct sunlight when spraying.<br>';\n    html += '\ud83d\udc3e Safe for animals and pets \u2014 compatible with organic production.';\n    html += '<\/div>';\n    \/\/ ===== DISCLAIMER =====\n    html += '<p class=\"disclaimer\"><strong>Note:<\/strong> Dosages based on official Multikraft\u00ae (Austria) guidelines. This is a feed supplement \/ way to improve husbandry conditions \u2014 it does not replace veterinary treatment. Adjust according to the conditions and needs of the crop\/animal. For special cases: +30 2311 29 55 20.<\/p>';\n    resultBody.innerHTML = html;\n    resultBox.classList.add('show');\n    resultBox.scrollIntoView({ behavior: 'smooth', block: 'start' });\n  }\n  calcBtn.addEventListener('click', calculate);\n  \/\/ ===== STICKY PROGRESS BAR (JS-driven position:fixed, WordPress-safe) =====\n  \/\/ Keeps the bar pinned EXACTLY below the Kadence sticky menu (+ WP admin bar).\n  \/\/ Measured dynamically on every scroll \u2014 desktop\/mobile, with or without the admin bar. The code\n  \/\/ is written WordPress-safe so the WP editor doesn't break the comparison on save.\n  var progressEl = calc.querySelector('.progress');\n  var progressSpacer = document.getElementById('emProgressSpacer');\n  var progFlowHeight = 0;\n  function emMeasure() {\n    if (!progressEl) return;\n    var cs = window.getComputedStyle(progressEl);\n    var mt = parseFloat(cs.marginTop) || 0;\n    var mb = parseFloat(cs.marginBottom) || 0;\n    progFlowHeight = progressEl.offsetHeight + mt + mb;\n  }\n  var EM_EXTRA_OFFSET = 0; \/\/ optional extra gap in px (e.g. 6) if you want some breathing room\n  function emFixedTopBottom(el) {\n    if (!el) return 0;\n    var cs = window.getComputedStyle(el);\n    if (cs.position !== 'fixed') return 0;\n    if (cs.display === 'none') return 0;\n    if (cs.visibility === 'hidden') return 0;\n    var r = el.getBoundingClientRect();\n    if (r.height === 0) return 0;\n    if (r.top > 300) return 0;   \/\/ must sit at the top, not somewhere lower\n    if (r.bottom <= 0) return 0;\n    return r.bottom;\n  }\n  function emTopOffset() {\n    var offset = 0;\n    var ab = emFixedTopBottom(document.getElementById('wpadminbar'));\n    if (ab > offset) { offset = ab; }\n    var heads = document.querySelectorAll('.kadence-sticky-header');\n    for (var i = 0; i < heads.length; i++) {\n      var hb = emFixedTopBottom(heads[i]);\n      if (hb > offset) { offset = hb; }\n    }\n    return offset + EM_EXTRA_OFFSET;\n  }\n  var emPinned = false;\n  function emUpdateSticky() {\n    if (!progressEl) return;\n    var offset = emTopOffset();\n    var rect = calc.getBoundingClientRect();\n    var shouldPin = false;\n    if (offset >= rect.top) {\n      if (rect.bottom > (offset + 24)) { shouldPin = true; }\n    }\n    if (shouldPin) {\n      var s = progressEl.style;\n      s.position = 'fixed'; s.top = offset + 'px'; s.left = rect.left + 'px';\n      s.width = rect.width + 'px'; s.zIndex = '99999';\n      progressEl.classList.add('em-stuck');\n      if (progressSpacer) progressSpacer.style.height = progFlowHeight + 'px';\n      emPinned = true;\n    } else if (emPinned || progressEl.style.position === 'fixed') {\n      var s2 = progressEl.style;\n      s2.position = ''; s2.top = ''; s2.left = ''; s2.width = ''; s2.zIndex = '';\n      progressEl.classList.remove('em-stuck');\n      if (progressSpacer) progressSpacer.style.height = '0px';\n      emPinned = false;\n    }\n  }\n  emMeasure();\n  window.addEventListener('load', function() { emMeasure(); emUpdateSticky(); });\n  window.addEventListener('scroll', emUpdateSticky, { passive: true });\n  window.addEventListener('resize', function() { emMeasure(); emUpdateSticky(); });\n  emUpdateSticky();\n  updateProgress();\n})();\n<\/script>\n\n<!-- ==== ZL PRINT: \u03b5\u03ba\u03c4\u03c5\u03c0\u03ce\u03bd\u03b5\u03b9 \u039c\u039f\u039d\u039f \u03c4\u03bf \u03b1\u03c0\u03bf\u03c4\u03ad\u03bb\u03b5\u03c3\u03bc\u03b1 \u03c4\u03bf\u03c5 \u03bf\u03b4\u03b7\u03b3\u03bf\u03cd (\u03c7\u03c9\u03c1\u03af\u03c2 header\/\u03bc\u03b5\u03bd\u03bf\u03cd\/\u03c4\u03af\u03c4\u03bb\u03bf\/footer\/newsletter\/ZeoBot) ==== -->\n<script>\n(function(){\n  if (window.zlPrintOnlyResult) { return; }\n  window.zlPrintOnlyResult = true;\n  var zlHidden = null;\n  function zlHide(el) {\n    if (el.tagName === 'SCRIPT') { return; }\n    if (el.tagName === 'STYLE') { return; }\n    if (el.tagName === 'LINK') { return; }\n    zlHidden.push([el, el.style.getPropertyValue('display'), el.style.getPropertyPriority('display')]);\n    el.style.setProperty('display', 'none', 'important');\n  }\n  function zlStyle(el, prop, val) {\n    zlHidden.push([el, el.style.getPropertyValue(prop), el.style.getPropertyPriority(prop), prop]);\n    el.style.setProperty(prop, val, 'important');\n  }\n  function zlPrintPrep() {\n    if (zlHidden) { return; }\n    var res = document.querySelector('.zlcalc .result.show');\n    if (!res) { return; }\n    zlHidden = [];\n    var node = res;\n    while (node.parentElement) {\n      var parent = node.parentElement;\n      var sibs = parent.children;\n      for (var i = 0; i !== sibs.length; i++) {\n        if (sibs[i] !== node) { zlHide(sibs[i]); }\n      }\n      if (parent === document.body) { break; }\n      zlStyle(parent, 'margin', '0');\n      zlStyle(parent, 'padding', '0');\n      zlStyle(parent, 'border', '0');\n      zlStyle(parent, 'box-shadow', 'none');\n      zlStyle(parent, 'max-width', 'none');\n      node = parent;\n    }\n  }\n  function zlPrintRestore() {\n    if (!zlHidden) { return; }\n    for (var i = zlHidden.length - 1; i !== -1; i--) {\n      var h = zlHidden[i];\n      var prop = h[3] ? h[3] : 'display';\n      if (h[1]) { h[0].style.setProperty(prop, h[1], h[2]); } else { h[0].style.removeProperty(prop); }\n    }\n    zlHidden = null;\n  }\n  window.addEventListener('beforeprint', zlPrintPrep);\n  window.addEventListener('afterprint', zlPrintRestore);\n  if (window.matchMedia) {\n    var mq = window.matchMedia('print');\n    var onChange = function(e) { if (e.matches) { zlPrintPrep(); } else { zlPrintRestore(); } };\n    if (mq.addEventListener) { mq.addEventListener('change', onChange); } else if (mq.addListener) { mq.addListener(onChange); }\n  }\n})();\n<\/script>\n\n\n\n<script id=\"zl-deeplink\">\n\/* zl-deeplink v2 \u00b7 Zeolife \u00b7 \u03c0\u03c1\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae \u03b1\u03c0\u03b1\u03bd\u03c4\u03ae\u03c3\u03b5\u03c9\u03bd \u03b1\u03c0\u03cc \u03c4\u03bf URL (\u03c0.\u03c7. ?crop=olive \u03ba\u03b1\u03b9 soil=light) + \u03ba\u03bf\u03c5\u03bc\u03c0\u03af \u00ab\u03a0\u03af\u03c3\u03c9 \u03c3\u03c4\u03bf \u03c0\u03c1\u03bf\u03ca\u03cc\u03bd\u00bb. \u03a7\u03c9\u03c1\u03af\u03c2 ampersand \u03c3\u03c4\u03bf\u03bd \u03ba\u03ce\u03b4\u03b9\u03ba\u03b1: \u03c4\u03bf WordPress \u03c4\u03bf\u03bd \u03bc\u03b5\u03c4\u03b1\u03c4\u03c1\u03ad\u03c0\u03b5\u03b9 \u03c3\u03b5 HTML entity. *\/\n(function () {\n  if (window.__zlDeeplink) { return; }\n  window.__zlDeeplink = 1;\n  var en = location.pathname.indexOf('\/en\/') === 0;\n  var qs;\n  try { qs = new URLSearchParams(location.search); } catch (e) { return; }\n  var SKIP = \/^(utm_[a-z_]+|from|fbclid|gclid|_ga|ref|lang)$\/;\n\n  function esc(s) {\n    if (window.CSS) { if (CSS.escape) { return CSS.escape(s); } }\n    return String(s).replace(\/[\"\\\\]\/g, function (c) { return '\\\\' + c; });\n  }\n\n  function backButton() {\n    var target = '';\n    var from = qs.get('from') || '';\n    if (\/^\\\/(en\\\/)?product\\\/[a-z0-9%\\-_.\\\/]+$\/i.test(from)) {\n      target = 'https:\/\/shop.zeolife.gr' + from;\n    } else if (\/^https:\\\/\\\/shop\\.zeolife\\.gr\\\/(en\\\/)?product\\\/\/.test(document.referrer || '')) {\n      target = document.referrer.split('#')[0];\n    }\n    if (!target) { return; }\n    var a = document.createElement('a');\n    a.href = target;\n    a.className = 'zl-back-to-product';\n    a.textContent = en ? '\u2190 Back to the product' : '\u2190 \u03a0\u03af\u03c3\u03c9 \u03c3\u03c4\u03bf \u03c0\u03c1\u03bf\u03ca\u03cc\u03bd';\n    a.setAttribute('style', 'position:fixed;left:16px;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:99990;' +\n      'display:inline-flex;align-items:center;gap:6px;padding:11px 18px;border-radius:999px;text-decoration:none;' +\n      'background:linear-gradient(120deg,#0098d2 0%,#2a9ca0 52%,#7ba341 100%);color:#fff;' +\n      \"font:700 14px\/1.2 'Manrope',system-ui,sans-serif;box-shadow:0 12px 26px -10px rgba(0,152,210,.6)\");\n    document.body.appendChild(a);\n  }\n\n  function preselect() {\n    var pairs = [];\n    qs.forEach(function (v, k) {\n      if (SKIP.test(k)) { return; }\n      if (v === '') { return; }\n      pairs.push([k, v]);\n    });\n    if (!pairs.length) { return; }\n    var applied = 0, i = 0;\n    function next(tries) {\n      if (i >= pairs.length) { finish(); return; }\n      var k = pairs[i][0], v = pairs[i][1];\n      var el = document.querySelector('input[name=\"' + esc(k) + '\"][value=\"' + esc(v) + '\"]');\n      if (!el) {\n        if (tries < 10) { setTimeout(function () { next(tries + 1); }, 80); return; }\n      }\n      i++;\n      if (el) {\n        if (!el.checked) { el.click(); }\n        applied++;\n      }\n      setTimeout(function () { next(0); }, 80);\n    }\n    next(0);\n\n    function finish() {\n      if (!applied) { return; }\n      var steps = document.querySelectorAll('.step');\n      var target = null;\n      for (var s = 0; s < steps.length; s++) {\n        var st = steps[s];\n        if (st.offsetParent === null) { continue; }\n        if (!st.querySelector('input[type=\"radio\"]')) { continue; }\n        if (!st.querySelector('input[type=\"radio\"]:checked')) { target = st; break; }\n      }\n      if (!target) { target = document.querySelector('.actions'); }\n      if (target) {\n        var y = target.getBoundingClientRect().top + window.pageYOffset - 110;\n        window.scrollTo({ top: Math.max(0, y), behavior: 'smooth' });\n      }\n    }\n  }\n\n  function start() { backButton(); setTimeout(preselect, 150); }\n  if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start); } else { start(); }\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\ud83e\udda0 Effective Microorganisms (EM) Dosage Guide Choose a use and see exactly how much EM-Active or FKE you need, with smart packaging. The ideal complement to zeolite for synergistic results. \ud83d\udccb 4-step guide EM-Active (farming\/home) FKE (livestock) \ud83d\udc26 Poultry &amp; pigeons Multikraft\u00ae Organic-compatible 1Choose a use \ud83c\udf3e Crops Stremmata \u2014 vegetables, cereals etc. \ud83c\udf33 Tree&#8230;<\/p>\n","protected":false},"author":7,"featured_media":17414,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"content-type":"","_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-18840","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr<\/title>\n<meta name=\"description\" content=\"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zeolife.gr\/en\/em-dosage-guide\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\" \/>\n<meta property=\"og:description\" content=\"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zeolife.gr\/en\/em-dosage-guide\/\" \/>\n<meta property=\"og:site_name\" content=\"Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/zeolifegr\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-11T14:52:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/zeolife.gr\/wp-content\/uploads\/2025\/04\/Effective-Microorganisms-1lit.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"900\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ZeolifeGr\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/\",\"name\":\"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Effective-Microorganisms-1lit.jpg\",\"datePublished\":\"2026-09-25T19:56:55+00:00\",\"dateModified\":\"2026-10-11T14:52:34+00:00\",\"description\":\"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/#primaryimage\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Effective-Microorganisms-1lit.jpg\",\"contentUrl\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2025\\\/04\\\/Effective-Microorganisms-1lit.jpg\",\"width\":900,\"height\":900,\"caption\":\"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03af \u03bc\u03b9\u03ba\u03c1\u03bf\u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03af (\u0395\u039c), \u03c4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9, \u03c4\u03b9 \u03ba\u03ac\u03bd\u03bf\u03c5\u03bd \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9;\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/em-dosage-guide\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Effective Microorganisms Dosage Guide (EM-Active + FKE)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/\",\"name\":\"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03cc\u03c2 \u0396\u03b5\u03cc\u03bb\u03b9\u03b8\u03bf\u03c2 & \u0392\u03b9\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac \u039f\u03c1\u03c5\u03ba\u03c4\u03ac \u2013 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 & \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 | Zeolife.gr\",\"description\":\"Applications and purchase of Greek zeolite, zeolite products and industrial minerals | Zeolife.gr\",\"publisher\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#organization\"},\"alternateName\":\"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03cc\u03c2 \u0396\u03b5\u03cc\u03bb\u03b9\u03b8\u03bf\u03c2: \u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2, \u03a7\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2 & \u03a0\u03c1\u03bf\u03ca\u03cc\u03bd\u03c4\u03b1 | Zeolife.gr\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#organization\",\"name\":\"Zeolite | Diatomite | Zeolife.gr\",\"alternateName\":\"Zeolife.gr\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/icon-color-square.png\",\"contentUrl\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/icon-color-square.png\",\"width\":1200,\"height\":1200,\"caption\":\"Zeolite | Diatomite | Zeolife.gr\"},\"image\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/zeolifegr\",\"https:\\\/\\\/x.com\\\/ZeolifeGr\",\"https:\\\/\\\/www.instagram.com\\\/zeolife.gr\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/zeolifegr\",\"https:\\\/\\\/www.pinterest.com\\\/zeolifegr\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCUR1v-vb6vutCU3uvnu98WQ\",\"https:\\\/\\\/zeolifegr.tumblr.com\\\/\",\"https:\\\/\\\/www.tiktok.com\\\/@zeolifegr\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","description":"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/","og_locale":"en_US","og_type":"article","og_title":"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","og_description":"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","og_url":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/","og_site_name":"Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","article_publisher":"https:\/\/www.facebook.com\/zeolifegr","article_modified_time":"2026-10-11T14:52:34+00:00","og_image":[{"width":900,"height":900,"url":"https:\/\/zeolife.gr\/wp-content\/uploads\/2025\/04\/Effective-Microorganisms-1lit.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@ZeolifeGr","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/","url":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/","name":"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","isPartOf":{"@id":"https:\/\/zeolife.gr\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/#primaryimage"},"image":{"@id":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/#primaryimage"},"thumbnailUrl":"https:\/\/zeolife.gr\/wp-content\/uploads\/2025\/04\/Effective-Microorganisms-1lit.jpg","datePublished":"2026-09-25T19:56:55+00:00","dateModified":"2026-10-11T14:52:34+00:00","description":"Effective Microorganisms Dosage Guide (EM-Active + FKE) - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","breadcrumb":{"@id":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zeolife.gr\/en\/em-dosage-guide\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/#primaryimage","url":"https:\/\/zeolife.gr\/wp-content\/uploads\/2025\/04\/Effective-Microorganisms-1lit.jpg","contentUrl":"https:\/\/zeolife.gr\/wp-content\/uploads\/2025\/04\/Effective-Microorganisms-1lit.jpg","width":900,"height":900,"caption":"\u0395\u03bd\u03b5\u03c1\u03b3\u03bf\u03af \u03bc\u03b9\u03ba\u03c1\u03bf\u03bf\u03c1\u03b3\u03b1\u03bd\u03b9\u03c3\u03bc\u03bf\u03af (\u0395\u039c), \u03c4\u03b9 \u03b5\u03af\u03bd\u03b1\u03b9, \u03c4\u03b9 \u03ba\u03ac\u03bd\u03bf\u03c5\u03bd \u03ba\u03b1\u03b9 \u03c0\u03bf\u03c5 \u03c7\u03c1\u03b7\u03c3\u03b9\u03bc\u03bf\u03c0\u03bf\u03b9\u03bf\u03cd\u03bd\u03c4\u03b1\u03b9;"},{"@type":"BreadcrumbList","@id":"https:\/\/zeolife.gr\/en\/em-dosage-guide\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zeolife.gr\/en\/"},{"@type":"ListItem","position":2,"name":"Effective Microorganisms Dosage Guide (EM-Active + FKE)"}]},{"@type":"WebSite","@id":"https:\/\/zeolife.gr\/en\/#website","url":"https:\/\/zeolife.gr\/en\/","name":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03cc\u03c2 \u0396\u03b5\u03cc\u03bb\u03b9\u03b8\u03bf\u03c2 & \u0392\u03b9\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03b9\u03ba\u03ac \u039f\u03c1\u03c5\u03ba\u03c4\u03ac \u2013 \u0395\u03c6\u03b1\u03c1\u03bc\u03bf\u03b3\u03ad\u03c2 & \u03a0\u03bb\u03b7\u03c1\u03bf\u03c6\u03bf\u03c1\u03af\u03b5\u03c2 | Zeolife.gr","description":"Applications and purchase of Greek zeolite, zeolite products and industrial minerals | Zeolife.gr","publisher":{"@id":"https:\/\/zeolife.gr\/en\/#organization"},"alternateName":"\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03cc\u03c2 \u0396\u03b5\u03cc\u03bb\u03b9\u03b8\u03bf\u03c2: \u0399\u03b4\u03b9\u03cc\u03c4\u03b7\u03c4\u03b5\u03c2, \u03a7\u03c1\u03ae\u03c3\u03b5\u03b9\u03c2 & \u03a0\u03c1\u03bf\u03ca\u03cc\u03bd\u03c4\u03b1 | Zeolife.gr","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zeolife.gr\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zeolife.gr\/en\/#organization","name":"Zeolite | Diatomite | Zeolife.gr","alternateName":"Zeolife.gr","url":"https:\/\/zeolife.gr\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zeolife.gr\/en\/#\/schema\/logo\/image\/","url":"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/icon-color-square.png","contentUrl":"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/icon-color-square.png","width":1200,"height":1200,"caption":"Zeolite | Diatomite | Zeolife.gr"},"image":{"@id":"https:\/\/zeolife.gr\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/zeolifegr","https:\/\/x.com\/ZeolifeGr","https:\/\/www.instagram.com\/zeolife.gr\/","https:\/\/www.linkedin.com\/in\/zeolifegr","https:\/\/www.pinterest.com\/zeolifegr\/","https:\/\/www.youtube.com\/channel\/UCUR1v-vb6vutCU3uvnu98WQ","https:\/\/zeolifegr.tumblr.com\/","https:\/\/www.tiktok.com\/@zeolifegr"]}]}},"taxonomy_info":[],"featured_image_src_large":["https:\/\/zeolife.gr\/wp-content\/uploads\/2025\/04\/Effective-Microorganisms-1lit.jpg",900,900,false],"author_info":{"display_name":"\u03a7\u03c1\u03c5\u03c3\u03bf\u03b2\u03b1\u03bb\u03ac\u03bd\u03c4\u03b7\u03c2 \u03a7\u03b1\u03c4\u03b6\u03b7\u03b3\u03b5\u03c9\u03c1\u03b3\u03af\u03bf\u03c5","author_link":"https:\/\/zeolife.gr\/en\/author\/valantis\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/pages\/18840","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/comments?post=18840"}],"version-history":[{"count":8,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/pages\/18840\/revisions"}],"predecessor-version":[{"id":18958,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/pages\/18840\/revisions\/18958"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/media\/17414"}],"wp:attachment":[{"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/media?parent=18840"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}