{"id":18834,"date":"2026-09-25T18:57:40","date_gmt":"2026-09-25T15:57:40","guid":{"rendered":"https:\/\/zeolife.gr\/?page_id=18834"},"modified":"2026-09-25T18:59:08","modified_gmt":"2026-09-25T15:59:08","slug":"ecoplant-dosage-calculator","status":"publish","type":"page","link":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/","title":{"rendered":"EcoPlant\u00ae Dosage Guide"},"content":{"rendered":"\n<!-- ==========================================================\n     EcoPlant\u00ae Dosage Guide  (CLEAN) \u2014 ENGLISH\n     Path: \/en\/ecoplant-dosage-calculator\/  (adjust to your real EN slug)\n     ----------------------------------------------------------\n     NO <style>\/<link> (AMP safe) \u2014 styling comes from the\n     Customizer, sections \u00a716 + \u00a716\u03b2 .zlcalc (shared by all\n     the \/ergaleia\/ guides).\n     JS stays here, in an IIFE. Root hook for the JS: id=\"ecCalc\".\n     ========================================================== -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@graph\": [\n    {\n      \"@type\": \"WebApplication\",\n      \"name\": \"EcoPlant\u00ae Dosage Guide (Online Calculator)\",\n      \"alternateName\": \"EcoPlant\u00ae Dosage Calculator\",\n      \"url\": \"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/\",\n      \"description\": \"Interactive EcoPlant\u00ae dosage guide (online calculator) for 9 crop categories (olive, vineyard, walnut, fruit trees, vegetables, cereals, ornamentals). Root drench + foliar spray, annual programme, smart packaging recommendation and optional combination with 2% zeolite.\",\n      \"applicationCategory\": \"AgricultureApplication\",\n      \"operatingSystem\": \"Any (web)\",\n      \"inLanguage\": \"en\",\n      \"isAccessibleForFree\": true,\n      \"audience\": { \"@type\": \"Audience\", \"audienceType\": \"Farmers, Agronomists, Gardeners\" },\n      \"publisher\": { \"@type\": \"Organization\", \"name\": \"Zeolife\", \"url\": \"https:\/\/zeolife.gr\/\" }\n    },\n    {\n      \"@type\": \"HowTo\",\n      \"name\": \"How to calculate the right EcoPlant\u00ae dose for your plants\",\n      \"step\": [\n        { \"@type\": \"HowToStep\", \"name\": \"Choose your crop\", \"text\": \"9 categories: olive, vineyard, fruit trees, walnuts, palms, vegetables, cereals, ornamentals, pots. If yours is not listed, ask us for a personalised recommendation.\" },\n        { \"@type\": \"HowToStep\", \"name\": \"Choose the phase\", \"text\": \"Newly planted or existing trees \/ young or productive plants.\" },\n        { \"@type\": \"HowToStep\", \"name\": \"Choose the method\", \"text\": \"Root drench only, foliar spray only, or both (recommended).\" },\n        { \"@type\": \"HowToStep\", \"name\": \"Enter the quantity\", \"text\": \"Number of trees\/plants or area in stremmata (1 stremma = 1,000 m\u00b2).\" },\n        { \"@type\": \"HowToStep\", \"name\": \"Choose a programme\", \"text\": \"A single application now or a full annual programme (4 sprays + root drench).\" }\n      ]\n    }\n  ]\n}\n<\/script>\n<div class=\"zl zlcalc\" id=\"ecCalc\">\n<div class=\"intro\">\n  <h2>\ud83c\udf31 EcoPlant\u00ae Dosage Guide<\/h2>\n  <p>Give us 5 pieces of information and we&#8217;ll tell you <strong>exactly how much EcoPlant\u00ae you need<\/strong>, the dilution, the application programme, which pack to buy and how much it will cost. Optional combination with 20\u00b5 zeolite for an enhanced spray.<\/p>\n  <div class=\"badges\">\n    <span class=\"badge\">\ud83d\udccb 5-step guide<\/span>\n    <span class=\"badge\">9 crops<\/span>\n    <span class=\"badge\">Root drench + Spray<\/span>\n    <span class=\"badge\">Free<\/span>\n    <span class=\"badge\">+2% Zeolite<\/span>\n  <\/div>\n<\/div>\n<div class=\"progress\" aria-hidden=\"true\"><div class=\"progress-bar\" id=\"ecProgress\"><\/div><\/div>\n<div id=\"ecProgressSpacer\" aria-hidden=\"true\" style=\"height:0\"><\/div>\n<!-- STEP 1: CROP -->\n<div class=\"step active\" data-step=\"1\">\n  <h3><span class=\"step-num\">1<\/span>Choose your crop<\/h3>\n  <div class=\"options cols-3\">\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"olive\">\n      <span class=\"opt-title\">\ud83e\uded2 Olive trees<\/span>\n      <span class=\"opt-desc\">100-200g\/tree root drench<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"vineyard\">\n      <span class=\"opt-title\">\ud83c\udf47 Vineyard<\/span>\n      <span class=\"opt-desc\">Spray + root drench<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"fruit\">\n      <span class=\"opt-title\">\ud83c\udf4e Fruit trees<\/span>\n      <span class=\"opt-desc\">4-spray programme\/year<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"walnut\">\n      <span class=\"opt-title\">\ud83e\udd5c Walnut trees<\/span>\n      <span class=\"opt-desc\">100-200g\/tree<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"palm\">\n      <span class=\"opt-title\">\ud83c\udf34 Palm trees<\/span>\n      <span class=\"opt-desc\">Same programme as trees<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"vegetables\">\n      <span class=\"opt-title\">\ud83e\udd6c Vegetables<\/span>\n      <span class=\"opt-desc\">Weekly application<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"cereals\">\n      <span class=\"opt-title\">\ud83c\udf3e Cereals<\/span>\n      <span class=\"opt-desc\">1L\/stremma \u00d7 repeats<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"ornamentals\">\n      <span class=\"opt-title\">\ud83c\udf39 Ornamentals<\/span>\n      <span class=\"opt-desc\">Weekly, 1:200 spray<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"potted\">\n      <span class=\"opt-title\">\ud83e\udeb4 Pots \/ Garden<\/span>\n      <span class=\"opt-desc\">Small doses, weekly<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"crop\" value=\"other\">\n      <span class=\"opt-title\">\u2795 Other crop<\/span>\n      <span class=\"opt-desc\">Not listed? Ask us<\/span>\n    <\/label>\n  <\/div>\n<\/div>\n<!-- STEP 2: PHASE -->\n<div class=\"step\" data-step=\"2\">\n  <h3><span class=\"step-num\">2<\/span>Phase \/ Stage<\/h3>\n  <div id=\"ecPhaseContainer\">\n    <p style=\"color:var(--ec-muted);font-style:italic;\">First choose a crop in Step 1.<\/p>\n  <\/div>\n<\/div>\n<!-- STEP 3: METHOD -->\n<div class=\"step\" data-step=\"3\">\n  <h3><span class=\"step-num\">3<\/span>Application method<\/h3>\n  <div class=\"options cols-3\">\n    <label class=\"option\"><input type=\"radio\" name=\"method\" value=\"root\">\n      <span class=\"opt-title\">\ud83d\udca7 Root drench only<\/span>\n      <span class=\"opt-desc\">1:25 dilution, applied at the root<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"method\" value=\"spray\">\n      <span class=\"opt-title\">\ud83d\udca8 Foliar spray only<\/span>\n      <span class=\"opt-desc\">1:100 or 1:200 dilution on the leaves<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"method\" value=\"both\">\n      <span class=\"opt-title\">\ud83c\udf1f Both<\/span>\n      <span class=\"opt-desc\">Recommended for maximum results<\/span>\n    <\/label>\n  <\/div>\n  <div class=\"checkbox-row\">\n    <input type=\"checkbox\" id=\"ecZeolite\" name=\"zeolite\">\n    <label for=\"ecZeolite\">\n      \ud83e\udea8 <strong>Add 20\u00b5 Zeolite (2% in the spray solution)<\/strong>\n      <span class=\"opt-desc\">Enhanced spray with slow-release effect \u2014 leaf protection + improved absorption<\/span>\n    <\/label>\n  <\/div>\n<\/div>\n<!-- STEP 4: QUANTITY -->\n<div class=\"step\" data-step=\"4\">\n  <h3><span class=\"step-num\">4<\/span>Quantity<\/h3>\n  <div id=\"ecQtyContainer\">\n    <p style=\"color:var(--ec-muted);font-style:italic;\">First choose a crop in Step 1.<\/p>\n  <\/div>\n<\/div>\n<!-- STEP 5: PROGRAM -->\n<div class=\"step\" data-step=\"5\">\n  <h3><span class=\"step-num\">5<\/span>Programme<\/h3>\n  <div class=\"options\">\n    <label class=\"option\"><input type=\"radio\" name=\"program\" value=\"single\">\n      <span class=\"opt-title\">\ud83c\udfaf One application now<\/span>\n      <span class=\"opt-desc\">Calculation for the current application only<\/span>\n    <\/label>\n    <label class=\"option\"><input type=\"radio\" name=\"program\" value=\"full\">\n      <span class=\"opt-title\">\ud83d\udcc5 Full annual programme<\/span>\n      <span class=\"opt-desc\">Root drench + 4 sprays, or weekly applications for the whole year<\/span>\n    <\/label>\n  <\/div>\n<\/div>\n<!-- STEP (conditional): REQUEST FOR ANOTHER CROP \u2014 shown only when \"Other crop\" is selected -->\n<div class=\"step\" id=\"ecOtherStep\" style=\"display:none\">\n  <button type=\"button\" class=\"btn btn-secondary\" id=\"ecOtherBack\" 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 about your crop<\/h3>\n  <p style=\"margin:.2rem 0 1rem;color:var(--muted)\">Can&#8217;t find your crop in the list? Tell us what it is and our team will recommend the exact EcoPlant\u00ae dosage <strong>free of charge<\/strong>.<\/p>\n  <label class=\"qty-label\" for=\"ecOtherCrop\">Which crop?<\/label>\n  <input type=\"text\" id=\"ecOtherCrop\" class=\"qty-input\" placeholder=\"e.g. Pomegranates, Kiwis, Blackberries, Aromatic herbs\u2026\" autocomplete=\"off\">\n  <div style=\"margin-top:1rem\">\n    <label class=\"qty-label\" for=\"ecOtherDetails\">Details <span style=\"font-weight:400;color:var(--muted)\">(optional)<\/span><\/label>\n    <textarea id=\"ecOtherDetails\" class=\"qty-input\" rows=\"3\" placeholder=\"e.g. number of plants or area, application method, new or existing planting\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 crop.<\/span>\n    <div class=\"contact-btns\">\n      <a id=\"ecOtherWhatsapp\" href=\"https:\/\/wa.me\/306985838343\" class=\"btn btn-secondary\" target=\"_blank\" rel=\"noopener\">\ud83d\udcac WhatsApp<\/a>\n      <a id=\"ecOtherViber\" href=\"viber:\/\/chat?number=306985838343\" class=\"btn btn-secondary\">\ud83d\udfe3 Viber<\/a>\n      <a id=\"ecOtherEmail\" 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=\"ecCalculate\" disabled=\"\">\ud83d\udccb See the dosage<\/button>\n  <button type=\"button\" class=\"btn btn-secondary\" id=\"ecReset\">\ud83d\udd04 Clear<\/button>\n  <button type=\"button\" class=\"btn btn-print\" id=\"ecPrint\">\ud83d\udda8\ufe0f Print<\/button>\n<\/div>\n<!-- TANK CALCULATOR (always visible) -->\n<div class=\"tank-section\">\n  <h4>\ud83e\uddea Tank Calculator \u2014 How much EcoPlant\u00ae for my tank?<\/h4>\n  <p style=\"margin:0.3rem 0 0.6rem;font-size:0.92rem;color:var(--ec-muted);\">Have a sprayer tank or bowser? See how much EcoPlant\u00ae and zeolite you need for its capacity.<\/p>\n  <div class=\"qty-row\">\n    <div>\n      <label class=\"qty-label\" for=\"ecTankL\">Tank capacity (litres of water)<\/label>\n      <input type=\"number\" id=\"ecTankL\" class=\"qty-input\" min=\"1\" placeholder=\"e.g. 500\">\n    <\/div>\n    <div>\n      <label class=\"qty-label\" for=\"ecTankRatio\">Dilution<\/label>\n      <select id=\"ecTankRatio\" class=\"qty-input\">\n        <option value=\"25\">1:25 (strong root drench)<\/option>\n        <option value=\"50\">1:50<\/option>\n        <option value=\"100\" selected=\"\">1:100 (standard spray)<\/option>\n        <option value=\"200\">1:200 (ornamentals spray)<\/option>\n      <\/select>\n    <\/div>\n  <\/div>\n  <div class=\"checkbox-row\" style=\"margin-top:0.75rem;\">\n    <input type=\"checkbox\" id=\"ecTankZeolite\">\n    <label for=\"ecTankZeolite\">\ud83e\udea8 2% zeolite in the tank<\/label>\n  <\/div>\n  <button type=\"button\" class=\"btn\" style=\"margin-top:0.75rem;\" id=\"ecTankCalc\">\ud83d\udcca Calculate tank<\/button>\n  <div class=\"tank-result hidden\" id=\"ecTankResult\"><\/div>\n<\/div>\n<!-- RESULT -->\n<div class=\"result\" id=\"ecResult\">\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;\">EcoPlant\u00ae Application Programme<\/h2>\n    <p style=\"margin:0.3rem 0 0;font-size:0.9rem;color:#6b6a64;\">www.zeolife.gr \u00b7 \u260e +30 2311 29 55 20 \u00b7 \u2709 info@zeolife.gr<\/p>\n  <\/div>\n  <h3 id=\"ecResultTitle\">Your personalised recommendation<\/h3>\n  <div id=\"ecResultBody\"><\/div>\n<\/div>\n<\/div>\n<script>\n(function(){\n  \/\/ ===== DATA =====\n  var cropData = {\n    olive: {\n      name: 'Olive trees', icon: '\ud83e\uded2', mode: 'tree',\n      phases: {\n        'new': { label: '\ud83c\udf31 Newly planted', rootDilGr: 100, perTreeDilGr: 100, sprayPerTreeL: 4, sprayRatio: 100 },\n        existing: { label: '\ud83c\udf33 Existing', rootDilGr: 100, perTreeDilGr: 200, sprayPerTreeL: 5, sprayRatio: 100 }\n      },\n      season: 'Autumn, before flowering, after flowering, fruit set',\n      methodTip: 'Root drench once + spray 4\u00d7\/year'\n    },\n    vineyard: {\n      name: 'Vineyard', icon: '\ud83c\udf47', mode: 'tree',\n      phases: {\n        'new': { label: '\ud83c\udf31 Newly planted', rootDilGr: 100, perTreeDilGr: 100, sprayPerTreeL: 0.5, sprayRatio: 100 },\n        existing: { label: '\ud83c\udf47 Existing vines', rootDilGr: 100, perTreeDilGr: 200, sprayPerTreeL: 0.7, sprayRatio: 100 }\n      },\n      season: 'Autumn (after harvest), before bud break, before flowering, fruit set',\n      methodTip: 'Vineyard: smaller spray volume per vine'\n    },\n    fruit: {\n      name: 'Fruit trees', icon: '\ud83c\udf4e', mode: 'tree',\n      phases: {\n        'new': { label: '\ud83c\udf31 Newly planted', rootDilGr: 100, perTreeDilGr: 100, sprayPerTreeL: 3, sprayRatio: 100 },\n        existing: { label: '\ud83c\udf33 Existing', rootDilGr: 100, perTreeDilGr: 200, sprayPerTreeL: 4, sprayRatio: 100 }\n      },\n      season: 'Start of season, before flowering, after flowering, fruit set',\n      methodTip: 'Ideal for apple, pear, orange, peach etc.'\n    },\n    walnut: {\n      name: 'Walnut trees', icon: '\ud83e\udd5c', mode: 'tree',\n      phases: {\n        'new': { label: '\ud83c\udf31 Newly planted', rootDilGr: 100, perTreeDilGr: 100, sprayPerTreeL: 5, sprayRatio: 100 },\n        existing: { label: '\ud83c\udf33 Existing', rootDilGr: 100, perTreeDilGr: 200, sprayPerTreeL: 7, sprayRatio: 100 }\n      },\n      season: 'Autumn, before bud break, after flowering, fruit set',\n      methodTip: 'Larger trees \u2192 more spray'\n    },\n    palm: {\n      name: 'Palm trees', icon: '\ud83c\udf34', mode: 'tree',\n      phases: {\n        'new': { label: '\ud83c\udf31 Newly planted', rootDilGr: 100, perTreeDilGr: 100, sprayPerTreeL: 3, sprayRatio: 100 },\n        existing: { label: '\ud83c\udf33 Existing', rootDilGr: 100, perTreeDilGr: 200, sprayPerTreeL: 5, sprayRatio: 100 }\n      },\n      season: 'Spring, summer, autumn, winter',\n      methodTip: 'Ornamental and productive species'\n    },\n    vegetables: {\n      name: 'Vegetables', icon: '\ud83e\udd6c', mode: 'plant',\n      phases: {\n        young: { label: '\ud83c\udf31 Young (growth)', rootGrPerPlant: 50, weeklyRoot: true, sprayPerPlantL: 0.3, sprayRatio: 100, sprayWeeks: 12 },\n        production: { label: '\ud83e\udd6c Production (mature)', rootGrPerPlant: 200, weeklyRoot: false, sprayPerPlantL: 0.5, sprayRatio: 100, sprayWeeks: 20 }\n      },\n      season: 'Weekly spray throughout the growing season',\n      methodTip: 'Tomatoes, cucumbers, aubergines, peppers etc.'\n    },\n    cereals: {\n      name: 'Cereals \/ Maize', icon: '\ud83c\udf3e', mode: 'stremma',\n      phases: {\n        '10cm': { label: '\ud83c\udf3e ~10cm stage', perStremmaL: 1, applications: 1 },\n        '20cm': { label: '\ud83c\udf3e 20cm+ stage', perStremmaL: 1, applications: 6, intervalDays: 20 }\n      },\n      season: 'Throughout the growing season, every 20 days',\n      methodTip: 'Wheat, maize, barley, oats'\n    },\n    ornamentals: {\n      name: 'Ornamentals', icon: '\ud83c\udf39', mode: 'plant',\n      phases: {\n        young: { label: '\ud83c\udf31 Young', rootGrPerPlant: 10, weeklyRoot: true, sprayPerPlantL: 0.1, sprayRatio: 200, sprayWeeks: 30 },\n        mature: { label: '\ud83c\udf39 Mature', rootGrPerPlant: 5, weeklyRoot: true, sprayPerPlantL: 0.1, sprayRatio: 200, sprayWeeks: 30 }\n      },\n      season: 'Weekly throughout the flowering period',\n      methodTip: 'Flower beds, shrubs, flowers'\n    },\n    potted: {\n      name: 'Pots \/ Garden', icon: '\ud83e\udeb4', mode: 'plant',\n      phases: {\n        young: { label: '\ud83c\udf31 Young \/ Planting', rootGrPerPlant: 10, weeklyRoot: true, sprayPerPlantL: 0.05, sprayRatio: 200, sprayWeeks: 30 },\n        mature: { label: '\ud83c\udf3f Mature', rootGrPerPlant: 5, weeklyRoot: true, sprayPerPlantL: 0.05, sprayRatio: 200, sprayWeeks: 30 }\n      },\n      season: 'Weekly, ideally before watering',\n      methodTip: 'For balcony pots, gardens, home use'\n    }\n  };\n  var pricing = {\n    p60ml: { ml: 60, price: 3.50, label: '60 ml', url: 'https:\/\/shop.zeolife.gr\/product\/eco-plant-60ml\/' },\n    p4x60ml: { ml: 360, price: 19.90, label: '4\u00d760 ml + 2 free', url: 'https:\/\/shop.zeolife.gr\/product\/4ecoplant-60-ml\/' },\n    p10x60ml: { ml: 600, price: 29.00, label: '10\u00d760 ml', url: 'https:\/\/shop.zeolife.gr\/product\/10x-ecoplant-60ml\/' },\n    p1L: { ml: 1000, price: 14.98, label: '1 litre', url: 'https:\/\/shop.zeolife.gr\/product\/eco-plant-1lit\/' },\n    p5L: { ml: 5000, price: 65.00, label: '5 litres', url: 'https:\/\/shop.zeolife.gr\/product\/eco-plant-5lit\/' },\n    p10L: { ml: 10000, price: 120.00, label: '10 litres', url: 'https:\/\/shop.zeolife.gr\/product\/eco-plant-10lit\/' },\n    p20L: { ml: 20000, price: 219.00, label: '20 litres', url: 'https:\/\/shop.zeolife.gr\/product\/eco-plant-20lit\/' }\n  };\n  var zeoliteProducts = {\n    z3kg: { kg: 3, price: 12.90, label: 'Greek Thracian Zeolite 20\u00b5 \u2014 3 kg', url: 'https:\/\/shop.zeolife.gr\/product\/greek-thracean-zeolite-20micron-3kg\/' },\n    z25kg: { kg: 25, price: 26.90, label: 'Greek Thracian Zeolite 20\u00b5 \u2014 25 kg', url: 'https:\/\/shop.zeolife.gr\/product\/greek-zeolite-20micron\/' }\n  };\n  var calc = document.getElementById('ecCalc');\n  var steps = calc.querySelectorAll('.step:not(#ecOtherStep)');\n  var otherStep = document.getElementById('ecOtherStep');\n  var actionsRow = calc.querySelector('.actions');\n  var tankSection = calc.querySelector('.tank-section');\n  var progressBar = document.getElementById('ecProgress');\n  var calcBtn = document.getElementById('ecCalculate');\n  var resetBtn = document.getElementById('ecReset');\n  var printBtn = document.getElementById('ecPrint');\n  var resultBox = document.getElementById('ecResult');\n  var resultBody = document.getElementById('ecResultBody');\n  var phaseContainer = document.getElementById('ecPhaseContainer');\n  var qtyContainer = document.getElementById('ecQtyContainer');\n  function isPositive(v) {\n    if (!v) return false;\n    if (Number(v) <= 0) return false;\n    return true;\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  function fmtKg(g) {\n    if (g >= 1000) return (g \/ 1000).toFixed(2).replace(\/\\.00$\/, '') + ' kg';\n    return Math.round(g) + ' g';\n  }\n  function fmtL(ml) {\n    if (ml >= 1000) return (ml \/ 1000).toFixed(2).replace(\/\\.00$\/, '') + ' L';\n    return Math.round(ml) + ' ml';\n  }\n  function fmtEuro(n) {\n    return '\u20ac' + n.toFixed(2);\n  }\n  function fmtNum(n) { return Math.round(n).toLocaleString('en-GB'); }\n  \/\/ ===== \"OTHER CROP\" \u2014 REQUEST MODE =====\n  function updateOtherLinks() {\n    var cropEl = document.getElementById('ecOtherCrop');\n    var detEl = document.getElementById('ecOtherDetails');\n    var cropName = cropEl ? cropEl.value.trim() : '';\n    var details = detEl ? detEl.value.trim() : '';\n    var msg = 'Hello! I would like a personalised EcoPlant dosage recommendation for the crop: ' + (cropName || '[enter crop]');\n    if (details) { msg += '. Additional details: ' + details; }\n    var wa = document.getElementById('ecOtherWhatsapp');\n    var em = document.getElementById('ecOtherEmail');\n    if (wa) { wa.href = 'https:\/\/wa.me\/306985838343?text=' + encodeURIComponent(msg); }\n    if (em) { em.href = 'mailto:info@zeolife.gr?subject=' + encodeURIComponent('EcoPlant dosage request' + (cropName ? (' \u2013 ' + cropName) : '')) + '&body=' + encodeURIComponent(msg); }\n  }\n  function enterOtherMode() {\n    for (var i = 0; i < steps.length; i++) { steps[i].style.display = 'none'; steps[i].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    for (var i = 0; i < steps.length; i++) { steps[i].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  function renderPhaseStep(crop) {\n    if (!crop) {\n      phaseContainer.innerHTML = '<p style=\"color:var(--ec-muted);font-style:italic;\">First choose a crop in Step 1.<\/p>';\n      return;\n    }\n    var data = cropData[crop];\n    var html = '<div class=\"options\">';\n    var phases = data.phases;\n    for (var key in phases) {\n      html += '<label class=\"option\"><input type=\"radio\" name=\"phase\" value=\"' + key + '\">';\n      html += '<span class=\"opt-title\">' + phases[key].label + '<\/span>';\n      html += '<\/label>';\n    }\n    html += '<\/div>';\n    html += '<p class=\"sublabel\">\ud83d\udca1 ' + data.methodTip + '<\/p>';\n    phaseContainer.innerHTML = html;\n    var newInputs = phaseContainer.querySelectorAll('input');\n    for (var i = 0; i < newInputs.length; i++) {\n      newInputs[i].addEventListener('change', updateProgress);\n    }\n  }\n  function renderQtyStep(crop) {\n    if (!crop) {\n      qtyContainer.innerHTML = '<p style=\"color:var(--ec-muted);font-style:italic;\">First choose a crop in Step 1.<\/p>';\n      return;\n    }\n    var data = cropData[crop];\n    var html = '';\n    if (data.mode === 'tree') {\n      var unit = (crop === 'vineyard') ? 'vines' : 'trees';\n      html += '<label class=\"qty-label\" for=\"ecQty\">How many ' + unit + ' do you have?<\/label>';\n      html += '<input type=\"number\" id=\"ecQty\" class=\"qty-input\" min=\"1\" placeholder=\"e.g. 50\">';\n      html += '<p class=\"sublabel\">\ud83d\udca1 Tailored for ' + data.name.toLowerCase() + '<\/p>';\n    } else if (data.mode === 'plant') {\n      html += '<label class=\"qty-label\" for=\"ecQty\">How many plants?<\/label>';\n      html += '<input type=\"number\" id=\"ecQty\" class=\"qty-input\" min=\"1\" placeholder=\"e.g. 100\">';\n    } else if (data.mode === 'stremma') {\n      html += '<label class=\"qty-label\" for=\"ecQty\">How many stremmata? (1 stremma = 1,000 m\u00b2)<\/label>';\n      html += '<input type=\"number\" id=\"ecQty\" class=\"qty-input\" min=\"0\" step=\"0.1\" placeholder=\"e.g. 5\">';\n      html += '<p class=\"sublabel\">\ud83d\udca1 Dosage: 1 litre EcoPlant \/ stremma per application<\/p>';\n    }\n    qtyContainer.innerHTML = html;\n    var inp = document.getElementById('ecQty');\n    if (inp) inp.addEventListener('input', updateProgress);\n  }\n  function isFormValid() {\n    var crop = getChecked('crop');\n    var phase = getChecked('phase');\n    var method = getChecked('method');\n    var qty = getVal('ecQty');\n    var program = getChecked('program');\n    if (!crop) return false;\n    if (!phase) return false;\n    if (!method) return false;\n    if (!isPositive(qty)) return false;\n    if (!program) return false;\n    return true;\n  }\n  function updateProgress() {\n    var crop = getChecked('crop');\n    \/\/ \"Other crop\" \u2192 request mode, not a calculation. Handled by enterOtherMode().\n    if (crop === 'other') { return; }\n    var phase = getChecked('phase');\n    var method = getChecked('method');\n    var qty = getVal('ecQty');\n    var program = getChecked('program');\n    var filled = 0;\n    if (crop) filled++;\n    if (phase) filled++;\n    if (method) filled++;\n    if (isPositive(qty)) filled++;\n    if (program) filled++;\n    progressBar.style.width = (filled \/ 5 * 100) + '%';\n    steps.forEach(function(s, i) {\n      var isActive = (i === filled) || (i === filled - 1);\n      s.classList.toggle('active', isActive);\n    });\n    calcBtn.disabled = filled < 5;\n  }\n  calc.querySelectorAll('input[name=\"crop\"]').forEach(function(r) {\n    r.addEventListener('change', function() {\n      if (r.value === 'other') {\n        enterOtherMode();\n      } else {\n        exitOtherMode();\n        renderPhaseStep(r.value);\n        renderQtyStep(r.value);\n      }\n      updateProgress();\n    });\n  });\n  var excluded = ['crop', 'phase'];\n  calc.querySelectorAll('input[type=\"radio\"]').forEach(function(r) {\n    if (excluded.indexOf(r.name) === -1) {\n      r.addEventListener('change', updateProgress);\n    }\n  });\n  \/\/ Live-update the WhatsApp\/Email links as the user types\n  ['ecOtherCrop', 'ecOtherDetails'].forEach(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('ecOtherBack');\n  if (otherBackBtn) {\n    otherBackBtn.addEventListener('click', function() {\n      var otherRadio = calc.querySelector('input[name=\"crop\"][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    calc.querySelectorAll('input[type=\"radio\"]').forEach(function(r) { r.checked = false; });\n    calc.querySelectorAll('input[type=\"checkbox\"]').forEach(function(r) { r.checked = false; });\n    calc.querySelectorAll('input[type=\"number\"]').forEach(function(r) { r.value = ''; });\n    var oc = document.getElementById('ecOtherCrop'); if (oc) oc.value = '';\n    var od = document.getElementById('ecOtherDetails'); if (od) od.value = '';\n    exitOtherMode();\n    phaseContainer.innerHTML = '<p style=\"color:var(--ec-muted);font-style:italic;\">First choose a crop in Step 1.<\/p>';\n    qtyContainer.innerHTML = '<p style=\"color:var(--ec-muted);font-style:italic;\">First choose a crop in Step 1.<\/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  function recommendPackaging(totalMl) {\n    var pkgs = [pricing.p60ml, pricing.p4x60ml, pricing.p10x60ml, pricing.p1L, pricing.p5L, pricing.p10L, pricing.p20L];\n    var best = null;\n    for (var i = 0; i < pkgs.length; i++) {\n      var p = pkgs[i];\n      var qty = Math.ceil(totalMl \/ p.ml);\n      var cost = qty * p.price;\n      if (!best || cost < best.cost) {\n        best = { combo: [{ pkg: p, qty: qty }], cost: cost, totalMl: qty * p.ml };\n      }\n    }\n    for (var i = pkgs.length - 1; i >= 0; i--) {\n      var bigP = pkgs[i];\n      if (bigP.ml >= totalMl) continue;\n      var nBig = Math.floor(totalMl \/ bigP.ml);\n      var remaining = totalMl - nBig * bigP.ml;\n      for (var j = 0; j < pkgs.length; j++) {\n        var smallP = pkgs[j];\n        var nSmall = Math.ceil(remaining \/ smallP.ml);\n        var combo = [{ pkg: bigP, qty: nBig }, { pkg: smallP, qty: nSmall }];\n        var cost = nBig * bigP.price + nSmall * smallP.price;\n        if (!best || cost < best.cost) {\n          best = { combo: combo, cost: cost, totalMl: nBig * bigP.ml + nSmall * smallP.ml };\n        }\n      }\n    }\n    return best;\n  }\n  function recommendZeolite(totalGr) {\n    if (totalGr <= 0) return null;\n    var p3 = zeoliteProducts.z3kg;\n    var p25 = zeoliteProducts.z25kg;\n    var totalKg = totalGr \/ 1000;\n    if (totalKg <= 3) {\n      return { combo: [{ pkg: p3, qty: 1 }], cost: p3.price, totalKg: 3 };\n    }\n    var qty3 = Math.ceil(totalKg \/ 3);\n    var cost3 = qty3 * p3.price;\n    var qty25 = 1;\n    var cost25 = p25.price;\n    if (totalKg > 25) {\n      qty25 = Math.ceil(totalKg \/ 25);\n      cost25 = qty25 * p25.price;\n    }\n    if (cost25 < cost3) {\n      return { combo: [{ pkg: p25, qty: qty25 }], cost: cost25, totalKg: qty25 * 25 };\n    }\n    return { combo: [{ pkg: p3, qty: qty3 }], cost: cost3, totalKg: qty3 * 3 };\n  }\n  function calculate() {\n    var crop = getChecked('crop');\n    var phase = getChecked('phase');\n    var method = getChecked('method');\n    var qty = Number(getVal('ecQty'));\n    var program = getChecked('program');\n    var zeoliteOn = document.getElementById('ecZeolite').checked;\n    var data = cropData[crop];\n    var ph = data.phases[phase];\n    var rootEcoGr = 0;\n    var rootSolutionGr = 0;\n    var sprayEcoGr = 0;\n    var sprayWaterL = 0;\n    var rootWaterL = 0;\n    var sprayCount = 0;\n    var zeoliteGr = 0;\n    var rootRecipe = '';\n    var sprayRecipe = '';\n    var sprayRatio = 100;\n    var doRoot = (method === 'root') || (method === 'both');\n    var doSpray = (method === 'spray') || (method === 'both');\n    if (doRoot) {\n      if (data.mode === 'tree') {\n        var actualPerTree = ph.perTreeDilGr * (100 \/ 2600);\n        rootEcoGr = qty * actualPerTree;\n        rootSolutionGr = qty * ph.perTreeDilGr;\n        rootWaterL = rootSolutionGr * (2500 \/ 2600) \/ 1000;\n        rootRecipe = '<strong>Dilution:<\/strong> 100 g EcoPlant\u00ae in 2.5 litres of water (1:25 ratio)<br>';\n        rootRecipe += '<strong>Dose per ' + (crop === 'vineyard' ? 'vine' : 'tree') + ':<\/strong> ' + ph.perTreeDilGr + ' g of diluted solution (\u2248' + Math.round(ph.perTreeDilGr * 2500 \/ 2600) + ' ml water + ' + Math.round(ph.perTreeDilGr * 100 \/ 2600) + ' g EcoPlant\u00ae)<br>';\n        rootRecipe += '<strong>Frequency:<\/strong> Once (at the start)';\n      } else if (data.mode === 'plant') {\n        if (ph.weeklyRoot) {\n          var weeks = 1;\n          if (program === 'full') {\n            weeks = 20;\n            if (phase === 'young') {\n              if (crop === 'vegetables') weeks = 12;\n              if (crop === 'ornamentals') weeks = 30;\n              if (crop === 'potted') weeks = 30;\n            }\n            if (phase === 'mature') {\n              if (crop === 'ornamentals') weeks = 30;\n              if (crop === 'potted') weeks = 30;\n            }\n          }\n          rootSolutionGr = qty * ph.rootGrPerPlant * weeks;\n          rootEcoGr = rootSolutionGr * (100 \/ 2600);\n          rootWaterL = rootSolutionGr * (2500 \/ 2600) \/ 1000;\n          rootRecipe = '<strong>Dilution:<\/strong> 100 g EcoPlant\u00ae in 2.5 litres of water<br>';\n          rootRecipe += '<strong>Dose per plant:<\/strong> ' + ph.rootGrPerPlant + ' g of diluted solution (\u2248' + Math.round(ph.rootGrPerPlant * 2500 \/ 2600) + ' ml water)<br>';\n          rootRecipe += '<strong>Frequency:<\/strong> Every 7 days' + (program === 'full' ? ' \u00d7 ' + weeks + ' weeks' : '');\n        } else {\n          rootSolutionGr = qty * ph.rootGrPerPlant;\n          rootEcoGr = rootSolutionGr * (100 \/ 2600);\n          rootWaterL = rootSolutionGr * (2500 \/ 2600) \/ 1000;\n          rootRecipe = '<strong>Dilution:<\/strong> 100 g EcoPlant\u00ae in 2.5 litres of water<br>';\n          rootRecipe += '<strong>Dose per plant:<\/strong> ' + ph.rootGrPerPlant + ' g of diluted solution (\u2248' + Math.round(ph.rootGrPerPlant * 2500 \/ 2600) + ' ml water, once)';\n        }\n      } else if (data.mode === 'stremma') {\n        var apps = (program === 'full') ? ph.applications : 1;\n        rootEcoGr = qty * ph.perStremmaL * 1000 * apps;\n        rootSolutionGr = rootEcoGr;\n        rootWaterL = rootEcoGr * 100 \/ 1000;\n        rootRecipe = '<strong>Dosage:<\/strong> 1 litre EcoPlant\u00ae \/ stremma<br>';\n        rootRecipe += '<strong>Dilution:<\/strong> 1:100 with water before application (1 L EcoPlant\u00ae in 100 L water \/ stremma)<br>';\n        if (phase === '20cm') {\n          rootRecipe += '<strong>Frequency:<\/strong> Every 20 days' + (program === 'full' ? ' \u00d7 ' + apps + ' applications' : '');\n        } else {\n          rootRecipe += '<strong>Application:<\/strong> Once at the ~10cm stage';\n        }\n      }\n    }\n    if (doSpray) {\n      if (data.mode === 'tree') {\n        sprayCount = (program === 'full') ? 4 : 1;\n        sprayWaterL = qty * ph.sprayPerTreeL * sprayCount;\n        sprayRatio = ph.sprayRatio;\n        sprayEcoGr = sprayWaterL * 1000 \/ sprayRatio;\n        sprayRecipe = '<strong>Dilution:<\/strong> 1:' + sprayRatio + ' (100 g EcoPlant\u00ae in 10 litres of water)<br>';\n        sprayRecipe += '<strong>Spray volume per tree:<\/strong> ~' + ph.sprayPerTreeL + ' litres of water (+ ' + Math.round(ph.sprayPerTreeL * 1000 \/ sprayRatio) + ' g EcoPlant\u00ae)<br>';\n        sprayRecipe += '<strong>Sprays:<\/strong> ' + sprayCount + (sprayCount > 1 ? ' (start of season, before flowering, after flowering, fruit set)' : '');\n      } else if (data.mode === 'plant') {\n        var weeks = (program === 'full') ? (ph.sprayWeeks || 20) : 1;\n        sprayCount = weeks;\n        sprayWaterL = qty * ph.sprayPerPlantL * weeks;\n        sprayRatio = ph.sprayRatio;\n        sprayEcoGr = sprayWaterL * 1000 \/ sprayRatio;\n        sprayRecipe = '<strong>Dilution:<\/strong> 1:' + sprayRatio + ' (' + (1000 \/ sprayRatio) + ' g EcoPlant\u00ae per 1 litre of water)<br>';\n        sprayRecipe += '<strong>Spray volume per plant:<\/strong> ~' + (ph.sprayPerPlantL * 1000) + ' ml water<br>';\n        sprayRecipe += '<strong>Frequency:<\/strong> Weekly' + (program === 'full' ? ' \u00d7 ' + weeks + ' weeks' : ' (once)');\n      } else if (data.mode === 'stremma') {\n        if (phase === '20cm') {\n          sprayRecipe = '<strong>Note:<\/strong> For cereals, application is by root drench (1:100 dilution). No separate foliar spray is needed.';\n        }\n      }\n      if (zeoliteOn) {\n        zeoliteGr = sprayWaterL * 1000 * 0.02;\n      }\n    }\n    var totalEcoGr = rootEcoGr + sprayEcoGr;\n    var totalEcoMl = totalEcoGr;\n    var totalWaterL = rootWaterL + sprayWaterL;\n    var html = '';\n    html += '<div class=\"summary-grid\">';\n    html += '<div class=\"summary-card\">';\n    html += '<div class=\"label\">\ud83c\udf3f Total EcoPlant\u00ae<\/div>';\n    html += '<div class=\"value\">' + fmtKg(totalEcoGr) + '<\/div>';\n    html += '<div class=\"sub\">\u2248 ' + fmtL(totalEcoMl) + '<\/div>';\n    html += '<\/div>';\n    if (totalWaterL > 0) {\n      html += '<div class=\"summary-card\">';\n      html += '<div class=\"label\">\ud83d\udca7 Total water<\/div>';\n      html += '<div class=\"value\">' + fmtL(totalWaterL * 1000) + '<\/div>';\n      var waterSub = [];\n      if (rootWaterL > 0) waterSub.push('root ' + fmtL(rootWaterL * 1000));\n      if (sprayWaterL > 0) waterSub.push('spray ' + fmtL(sprayWaterL * 1000));\n      html += '<div class=\"sub\">' + waterSub.join(' \u00b7 ') + '<\/div>';\n      html += '<\/div>';\n    }\n    html += '<div class=\"summary-card\">';\n    html += '<div class=\"label\">\ud83d\udce6 Crop<\/div>';\n    html += '<div class=\"value\">' + data.icon + ' ' + qty + ' ' + (data.mode === 'stremma' ? 'stremmata' : (crop === 'vineyard' ? 'vines' : (data.mode === 'tree' ? 'trees' : 'plants'))) + '<\/div>';\n    html += '<div class=\"sub\">' + ph.label + ' \u00b7 ' + (program === 'full' ? 'Full year' : 'One application') + '<\/div>';\n    html += '<\/div>';\n    html += '<\/div>';\n    if (doRoot) {\n      if (rootSolutionGr > 0) {\n        html += '<h4>\ud83d\udca7 Root drench<\/h4>';\n        html += '<div class=\"recipe\">';\n        html += '<h5>Recipe<\/h5>';\n        html += '<p>' + rootRecipe + '<\/p>';\n        html += '<div class=\"recipe-step\"><div class=\"num\">\ud83d\udca7<\/div><div><strong>Total root-drench water:<\/strong> ' + fmtL(rootWaterL * 1000) + '<\/div><\/div>';\n        html += '<div class=\"recipe-step\"><div class=\"num\">\ud83d\udce6<\/div><div><strong>Total root-drench EcoPlant\u00ae:<\/strong> ' + fmtKg(rootEcoGr) + '<\/div><\/div>';\n        if (data.mode !== 'stremma') {\n          html += '<div class=\"recipe-step\"><div class=\"num\">\ud83e\uddea<\/div><div><strong>Total diluted solution:<\/strong> ' + fmtKg(rootSolutionGr) + ' (\u2248 ' + fmtL(rootSolutionGr) + ')<\/div><\/div>';\n        }\n        html += '<\/div>';\n      }\n    }\n    if (doSpray) {\n      if (sprayEcoGr > 0) {\n      html += '<h4>\ud83d\udca8 Foliar spray<\/h4>';\n      html += '<div class=\"recipe\">';\n      html += '<h5>Recipe<\/h5>';\n      html += '<p>' + sprayRecipe + '<\/p>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">\ud83d\udca7<\/div><div><strong>Total spray water:<\/strong> ' + fmtL(sprayWaterL * 1000) + (sprayCount > 1 ? ' (\u2248 ' + fmtL(sprayWaterL * 1000 \/ sprayCount) + ' per spray)' : '') + '<\/div><\/div>';\n      html += '<div class=\"recipe-step\"><div class=\"num\">\ud83c\udf3f<\/div><div><strong>Total spray EcoPlant\u00ae:<\/strong> ' + fmtKg(sprayEcoGr) + '<\/div><\/div>';\n      if (zeoliteOn) {\n        if (zeoliteGr > 0) {\n          html += '<div class=\"recipe-step\" style=\"background:#eaf3fb;\"><div class=\"num\">\ud83e\udea8<\/div><div><strong>+ 2% Zeolite:<\/strong> ' + fmtKg(zeoliteGr) + ' (slow-release booster)<\/div><\/div>';\n        }\n      }\n      html += '<\/div>';\n        if (data.mode === 'tree') {\n          if (sprayCount === 4) {\n            html += '<h4>\ud83d\udcc5 4 sprays \/ year<\/h4>';\n            html += '<div class=\"phase-grid\">';\n            html += '<div class=\"phase-card\"><div class=\"num\">1<\/div><div class=\"name\">Start<\/div><div class=\"when\">Beginning of season<\/div><\/div>';\n            html += '<div class=\"phase-card\"><div class=\"num\">2<\/div><div class=\"name\">Before flowering<\/div><div class=\"when\">\ud83c\udf38 Pre-bloom<\/div><\/div>';\n            html += '<div class=\"phase-card\"><div class=\"num\">3<\/div><div class=\"name\">After flowering<\/div><div class=\"when\">\ud83c\udf3a Post-bloom<\/div><\/div>';\n            html += '<div class=\"phase-card\"><div class=\"num\">4<\/div><div class=\"name\">Fruit set<\/div><div class=\"when\">\ud83c\udf4e Fruit-set<\/div><\/div>';\n            html += '<\/div>';\n          }\n        }\n      }\n    }\n    if (totalEcoGr > 0) {\n      var rec = recommendPackaging(totalEcoMl);\n      if (rec) {\n        html += '<h4>\ud83d\udce6 Recommended EcoPlant\u00ae order<\/h4>';\n        html += '<table class=\"pkg-table\">';\n        html += '<thead><tr><th>Pack<\/th><th>Quantity<\/th><th>Price<\/th><th>Total<\/th><\/tr><\/thead>';\n        html += '<tbody>';\n        var totalCost = 0;\n        for (var i = 0; i < rec.combo.length; i++) {\n          var item = rec.combo[i];\n          var lineTotal = item.pkg.price * item.qty;\n          totalCost += lineTotal;\n          html += '<tr class=\"recommended\">';\n          html += '<td data-label=\"Pack\"><a href=\"' + item.pkg.url + '\" target=\"_blank\">' + item.pkg.label + '<\/a><\/td>';\n          html += '<td data-label=\"Quantity\">\u00d7' + item.qty + '<\/td>';\n          html += '<td data-label=\"Price\/unit\">' + fmtEuro(item.pkg.price) + '<\/td>';\n          html += '<td data-label=\"Line total\">' + fmtEuro(lineTotal) + '<\/td>';\n          html += '<\/tr>';\n        }\n        html += '<\/tbody>';\n        html += '<\/table>';\n        html += '<div class=\"cost-banner\"><strong>\ud83d\udcb0 EcoPlant\u00ae total: ' + fmtEuro(totalCost) + '<\/strong><br>for ' + fmtL(rec.totalMl) + ' (covers your needs)<\/div>';\n      }\n    }\n    var showZeoPkg = false;\n    if (zeoliteOn) {\n      if (zeoliteGr > 0) showZeoPkg = true;\n    }\n    if (showZeoPkg) {\n      var zrec = recommendZeolite(zeoliteGr);\n      if (zrec) {\n        html += '<h4>\ud83e\udea8 Recommended 20\u00b5 Zeolite<\/h4>';\n        html += '<table class=\"pkg-table\">';\n        html += '<thead><tr><th>Pack<\/th><th>Quantity<\/th><th>Cost<\/th><\/tr><\/thead>';\n        html += '<tbody>';\n        var zTotal = 0;\n        for (var i = 0; i < zrec.combo.length; i++) {\n          var item = zrec.combo[i];\n          var lineTotal = item.pkg.price * item.qty;\n          zTotal += lineTotal;\n          html += '<tr class=\"recommended\">';\n          html += '<td data-label=\"Pack\"><a href=\"' + item.pkg.url + '\" target=\"_blank\">' + item.pkg.label + '<\/a><\/td>';\n          html += '<td data-label=\"Quantity\">\u00d7' + item.qty + '<\/td>';\n          html += '<td data-label=\"Total\">' + fmtEuro(lineTotal) + '<\/td>';\n          html += '<\/tr>';\n        }\n        html += '<\/tbody><\/table>';\n        html += '<p class=\"sublabel\" style=\"text-align:center;\">Zeolite total: <strong>' + fmtEuro(zTotal) + '<\/strong><\/p>';\n      }\n    }\n    var showROI = false;\n    if (totalEcoGr > 0) {\n      if (qty > 0) showROI = true;\n    }\n    if (showROI) {\n      var ecoCost = 0;\n      var pkgRec = recommendPackaging(totalEcoMl);\n      if (pkgRec) ecoCost = pkgRec.cost;\n      var zCost = 0;\n      if (zeoliteOn) {\n        if (zeoliteGr > 0) {\n          var zRec = recommendZeolite(zeoliteGr);\n          if (zRec) zCost = zRec.cost;\n        }\n      }\n      var totalCost = ecoCost + zCost;\n      var perUnit = totalCost \/ qty;\n      var unitName = data.mode === 'stremma' ? 'stremma' : (crop === 'vineyard' ? 'vine' : (data.mode === 'tree' ? 'tree' : 'plant'));\n      html += '<h4>\ud83d\udcb0 Cost Breakdown<\/h4>';\n      html += '<div class=\"roi-grid\">';\n      html += '<div class=\"roi-card\"><div class=\"label\">EcoPlant\u00ae<\/div><div class=\"value\">' + fmtEuro(ecoCost) + '<\/div><\/div>';\n      if (zCost > 0) html += '<div class=\"roi-card\"><div class=\"label\">20\u00b5 Zeolite<\/div><div class=\"value\">' + fmtEuro(zCost) + '<\/div><\/div>';\n      html += '<div class=\"roi-card\"><div class=\"label\">Cost \/ ' + unitName + '<\/div><div class=\"value\">' + fmtEuro(perUnit) + '<\/div><\/div>';\n      html += '<\/div>';\n    }\n    html += '<div class=\"warning\"><strong>\u26a0\ufe0f Spray safety<\/strong>';\n    html += 'Wearing a <strong>mask is mandatory for every spray.<\/strong> Avoid contact with the eyes. Spray during cooler hours (morning or late afternoon).<\/div>';\n    html += '<div class=\"schedule\"><strong>\u2705 Compatibility<\/strong>';\n    html += '<strong style=\"display:inline;font-weight:600;\">Conventional crops \u00b7 Organic \u00b7 Hydroponics<\/strong><br>';\n    html += '<strong style=\"display:inline;font-weight:600;\">Best season:<\/strong> ' + data.season;\n    html += '<\/div>';\n    html += '<div class=\"cta-row\">';\n    var hasPkgRec = false;\n    if (pkgRec) {\n      if (pkgRec.combo) {\n        if (pkgRec.combo[0]) hasPkgRec = true;\n      }\n    }\n    if (hasPkgRec) {\n      html += '<a href=\"' + pkgRec.combo[0].pkg.url + '\" class=\"btn\">\ud83d\uded2 Buy EcoPlant\u00ae<\/a>';\n    } else {\n      html += '<a href=\"https:\/\/shop.zeolife.gr\/product\/eco-plant-1lit\/\" class=\"btn\">\ud83d\uded2 EcoPlant\u00ae 1L<\/a>';\n    }\n    html += '<a href=\"https:\/\/shop.zeolife.gr\/product\/eco-plant-1lit\/\" class=\"btn btn-secondary\">\ud83d\udcd6 Product information<\/a>';\n    html += '<\/div>';\n    html += '<p class=\"disclaimer\"><strong>Note:<\/strong> Dosages are based on the official EcoPlant\u00ae guidelines. Spray volumes per tree\/plant are indicative \u2014 adjust them to the size of the plant and the density of the foliage. For special cases, consult an agronomist. Zeolife technical support: +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  document.getElementById('ecTankCalc').addEventListener('click', function() {\n    var tankL = Number(getVal('ecTankL'));\n    var ratio = Number(getVal('ecTankRatio'));\n    var zeoOn = document.getElementById('ecTankZeolite').checked;\n    var tankResult = document.getElementById('ecTankResult');\n    if (!isPositive(tankL)) {\n      tankResult.classList.remove('hidden');\n      tankResult.innerHTML = '<strong style=\"color:#a12b2b;\">\u26a0\ufe0f Please enter a valid tank capacity.<\/strong>';\n      return;\n    }\n    var grPerL = 1000 \/ ratio;\n    var ecoTotal = tankL * grPerL;\n    var zeoTotal = zeoOn ? tankL * 1000 * 0.02 : 0;\n    var html = '<h5>Recipe for a ' + tankL + '-litre tank<\/h5>';\n    html += '<div class=\"recipe-step\"><div class=\"num\">\ud83d\udca7<\/div><div><strong>Water:<\/strong> ' + tankL + ' litres<\/div><\/div>';\n    html += '<div class=\"recipe-step\"><div class=\"num\">\ud83c\udf3f<\/div><div><strong>EcoPlant\u00ae:<\/strong> ' + fmtKg(ecoTotal) + ' (1:' + ratio + ' dilution)<\/div><\/div>';\n    if (zeoOn) {\n      html += '<div class=\"recipe-step\" style=\"background:#eaf3fb;\"><div class=\"num\">\ud83e\udea8<\/div><div><strong>20\u00b5 Zeolite:<\/strong> ' + fmtKg(zeoTotal) + ' (2% of the solution)<\/div><\/div>';\n    }\n    html += '<p style=\"margin-top:0.5rem;font-size:0.88rem;color:var(--ec-muted);\">Stir before spraying. Use within 24 hours for best results.<\/p>';\n    tankResult.classList.remove('hidden');\n    tankResult.innerHTML = html;\n  });\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('ecProgressSpacer');\n  var progFlowHeight = 0;\n  function ecMeasure() {\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 EC_EXTRA_OFFSET = 0; \/\/ optional extra gap in px (e.g. 6) if you want some breathing room\n  function ecFixedTopBottom(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 ecTopOffset() {\n    var offset = 0;\n    var ab = ecFixedTopBottom(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 = ecFixedTopBottom(heads[i]);\n      if (hb > offset) { offset = hb; }\n    }\n    return offset + EC_EXTRA_OFFSET;\n  }\n  var ecPinned = false;\n  function ecUpdateSticky() {\n    if (!progressEl) return;\n    var offset = ecTopOffset();\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('ec-stuck');\n      if (progressSpacer) progressSpacer.style.height = progFlowHeight + 'px';\n      ecPinned = true;\n    } else if (ecPinned || progressEl.style.position === 'fixed') {\n      var s2 = progressEl.style;\n      s2.position = ''; s2.top = ''; s2.left = ''; s2.width = ''; s2.zIndex = '';\n      progressEl.classList.remove('ec-stuck');\n      if (progressSpacer) progressSpacer.style.height = '0px';\n      ecPinned = false;\n    }\n  }\n  ecMeasure();\n  window.addEventListener('load', function() { ecMeasure(); ecUpdateSticky(); });\n  window.addEventListener('scroll', ecUpdateSticky, { passive: true });\n  window.addEventListener('resize', function() { ecMeasure(); ecUpdateSticky(); });\n  ecUpdateSticky();\n  updateProgress();\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf31 EcoPlant\u00ae Dosage Guide Give us 5 pieces of information and we&#8217;ll tell you exactly how much EcoPlant\u00ae you need, the dilution, the application programme, which pack to buy and how much it will cost. Optional combination with 20\u00b5 zeolite for an enhanced spray. \ud83d\udccb 5-step guide 9 crops Root drench + Spray Free +2%&#8230;<\/p>\n","protected":false},"author":7,"featured_media":0,"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":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-18834","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.8 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr<\/title>\n<meta name=\"description\" content=\"EcoPlant\u00ae Dosage Guide - 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\/ecoplant-dosage-calculator\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EcoPlant\u00ae Dosage Guide\" \/>\n<meta property=\"og:description\" content=\"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/\" \/>\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-09-25T15:59:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/logo-zeolife-hor.svg\" \/>\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\\\/ecoplant-dosage-calculator\\\/\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/\",\"name\":\"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/logo-zeolife-hor.svg\",\"datePublished\":\"2026-09-25T15:57:40+00:00\",\"dateModified\":\"2026-09-25T15:59:08+00:00\",\"description\":\"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/#primaryimage\",\"url\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/logo-zeolife-hor.svg\",\"contentUrl\":\"https:\\\/\\\/zeolife.gr\\\/wp-content\\\/uploads\\\/2019\\\/11\\\/logo-zeolife-hor.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/ecoplant-dosage-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zeolife.gr\\\/en\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"EcoPlant\u00ae Dosage Guide\"}]},{\"@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\"],\"description\":\"\u03a6\u03c5\u03c3\u03b9\u03ba\u03cc\u03c2 \u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03cc\u03c2 \u03ba\u03bb\u03b9\u03bd\u03bf\u03c0\u03c4\u03b9\u03bb\u03cc\u03bb\u03b9\u03b8\u03bf\u03c2 \u03b3\u03b9\u03b1 \u03b3\u03b5\u03c9\u03c1\u03b3\u03af\u03b1, \u03c5\u03b3\u03b5\u03af\u03b1 \u03ba\u03b1\u03b9 \u03b2\u03b9\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03af\u03b1. \u0391\u03c0\u03cc \u03c4\u03bf 2010.\",\"email\":\"info@zeolife.gr\",\"telephone\":\"2311295520\",\"foundingDate\":\"2010-01-01\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1\",\"maxValue\":\"10\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","description":"EcoPlant\u00ae Dosage Guide - 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\/ecoplant-dosage-calculator\/","og_locale":"en_US","og_type":"article","og_title":"EcoPlant\u00ae Dosage Guide","og_description":"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","og_url":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/","og_site_name":"Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","article_publisher":"https:\/\/www.facebook.com\/zeolifegr","article_modified_time":"2026-09-25T15:59:08+00:00","og_image":[{"url":"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/logo-zeolife-hor.svg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@ZeolifeGr","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/","url":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/","name":"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","isPartOf":{"@id":"https:\/\/zeolife.gr\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/#primaryimage"},"image":{"@id":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/logo-zeolife-hor.svg","datePublished":"2026-09-25T15:57:40+00:00","dateModified":"2026-09-25T15:59:08+00:00","description":"EcoPlant\u00ae Dosage Guide - Greek Zeolite, Zeolite products and industrial minerals | Zeolife.gr","breadcrumb":{"@id":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/#primaryimage","url":"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/logo-zeolife-hor.svg","contentUrl":"https:\/\/zeolife.gr\/wp-content\/uploads\/2019\/11\/logo-zeolife-hor.svg"},{"@type":"BreadcrumbList","@id":"https:\/\/zeolife.gr\/en\/ecoplant-dosage-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zeolife.gr\/en\/"},{"@type":"ListItem","position":2,"name":"EcoPlant\u00ae Dosage Guide"}]},{"@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"],"description":"\u03a6\u03c5\u03c3\u03b9\u03ba\u03cc\u03c2 \u03b5\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03cc\u03c2 \u03ba\u03bb\u03b9\u03bd\u03bf\u03c0\u03c4\u03b9\u03bb\u03cc\u03bb\u03b9\u03b8\u03bf\u03c2 \u03b3\u03b9\u03b1 \u03b3\u03b5\u03c9\u03c1\u03b3\u03af\u03b1, \u03c5\u03b3\u03b5\u03af\u03b1 \u03ba\u03b1\u03b9 \u03b2\u03b9\u03bf\u03bc\u03b7\u03c7\u03b1\u03bd\u03af\u03b1. \u0391\u03c0\u03cc \u03c4\u03bf 2010.","email":"info@zeolife.gr","telephone":"2311295520","foundingDate":"2010-01-01","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1","maxValue":"10"}}]}},"taxonomy_info":[],"featured_image_src_large":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\/18834","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=18834"}],"version-history":[{"count":1,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/pages\/18834\/revisions"}],"predecessor-version":[{"id":18835,"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/pages\/18834\/revisions\/18835"}],"wp:attachment":[{"href":"https:\/\/zeolife.gr\/en\/wp-json\/wp\/v2\/media?parent=18834"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}