{"id":14428,"date":"2026-09-29T12:09:30","date_gmt":"2026-09-29T10:09:30","guid":{"rendered":"https:\/\/geopard.tech\/?page_id=14428"},"modified":"2026-09-29T13:43:00","modified_gmt":"2026-09-29T11:43:00","slug":"kalkulator-mjesavine-gnojiva","status":"publish","type":"page","link":"https:\/\/geopard.tech\/hr\/fertilizer-blend-calculator\/","title":{"rendered":"Kalkulator mje\u0161avine gnojiva"},"content":{"rendered":"\n<!--\n  Inline hero for \/fertilizer-blend-calculator\/, pasted as the FIRST block of the\n  page. Not the shared block 13098: that block's copy is Field Data Explorer\n  specific despite the generic name.\n\n  Written to root CLAUDE.md rule 24 (Roboto 400\/700, radii on the 2\/4\/6\/8\n  scale, no decorative gradient or shadow, brand colours only), rule 14\n  (centred) and rule 7 (hides the theme's bare page-title h1).\n-->\n<div class=\"gp-lead\">\n<style>\n\/* Rule 7: the geopard child theme renders the page title as a bare h1 inside\n   #simple_page > .container, so the standard .entry-title \/ .page-title \/\n   .wp-block-post-title selectors never reach it. The tool page opens with\n   this hero, so the duplicate title is hidden. *\/\n#simple_page > .container > h1{display:none !important}\n.gp-lead .fbch{--f:\"Roboto\",-apple-system,\"Segoe UI\",Helvetica,Arial,sans-serif;font-family:var(--f);text-align:center;background:#eef4e8;border:1px solid #e4eedd;border-radius:8px;padding:28px 28px 24px;margin:6px 0 20px}\n.gp-lead .fbch-eyebrow{display:inline-block;font-family:var(--f);font-size:.76rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#15701e;background:#ffffff;border:1px solid #e4eedd;border-radius:4px;padding:5px 11px;margin:0 0 14px}\n.gp-lead .fbch-title{font-family:var(--f);font-size:1.95rem;font-weight:700;line-height:1.18;color:#145328;margin:0 auto 12px;max-width:820px}\n.gp-lead .fbch .lede{font-family:var(--f);font-size:1.04rem;font-weight:400;line-height:1.55;color:#4c6066;margin:0 auto;max-width:820px}\n.gp-lead .fbch-features{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 0;justify-content:center}\n.gp-lead .fbch-feat{display:inline-flex;align-items:center;font-family:var(--f);font-size:.86rem;font-weight:400;color:#212121;background:#ffffff;border:1px solid #e3e7da;border-radius:4px;padding:6px 12px}\n@media (max-width:820px){\n  .gp-lead .fbch{padding:22px 18px 20px}\n  .gp-lead .fbch-title{font-size:1.5rem}\n  .gp-lead .fbch .lede{font-size:.98rem}\n}\n@media (max-width:480px){\n  .gp-lead .fbch{padding:18px 14px 16px}\n  .gp-lead .fbch-title{font-size:1.3rem}\n}\n<\/style>\n  <div class=\"fbch\">\n    <div class=\"fbch-eyebrow\">Fertilizer blend calculator<\/div>\n    <h1 class=\"fbch-title\">Every workable blend of the fertilizers you can get, ranked.<\/h1>\n    <p class=\"lede\">Set the target for six nutrients, tick the products your dealer carries, and read which combinations hit it, what each costs per hectare, and how many tonnes to order for the field. Then turn the blend you pick into a prescription map for the machine, variable rate or flat, in one step.<\/p>\n  <\/div>\n<\/div>\n\n\n\n<div class=\"gp-fbc\" id=\"gp-fbc\" data-theme=\"light\">\n<style>\n@font-face{font-family:\"Roboto\";font-style:normal;font-weight:100 900;font-display:swap;src:url(https:\/\/fonts.wp.com\/s\/roboto\/v51\/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3KUBHMdazTgWw.woff2) format(\"woff2\");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}\n@font-face{font-family:\"Roboto\";font-style:normal;font-weight:100 900;font-display:swap;src:url(https:\/\/fonts.wp.com\/s\/roboto\/v51\/KFO7CnqEu92Fr1ME7kSn66aGLdTylUAMa3yUBHMdazQ.woff2) format(\"woff2\");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}\n.gp-fbc{\n  --f:\"Roboto\",-apple-system,\"Segoe UI\",Helvetica,Arial,sans-serif;\n  --ink:#212121; --dim:#4c6066; --dim2:#708086;\n  --accent:#145328; --accent-mid:#15701e; --accent-soft:#1b7a2a; --orange:#f76a0c; --logo-red:#b2060f; --logo-red-bright:#fd4d48;\n  --panel:#ffffff; --paper:#fcfdf9; --paper2:#f6f9f0; --wash:#eef4e8; --wash2:#e4eedd; --hair:#eef2e8; --line:#e3e7da; --mute:#c3cdbf; --amber:#b0741f; --faint:#8a9a8e;\n  --r-panel:8px; --r-card:6px; --r-ctl:4px; --r-bar:2px;\n  color:var(--ink);background:var(--paper);font-family:var(--f);font-size:16px;line-height:1.55;font-variant-numeric:tabular-nums;position:relative\n}\n.gp-fbc *{box-sizing:border-box}\n.gp-fbc [hidden]{display:none !important}\n.gp-fbc p{margin:0}\n.gp-fbc .fbc-wrap{max-width:1180px;margin:0 auto;padding:18px 16px;display:flex;flex-direction:column;gap:12px}\n.gp-fbc .fbc-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px}\n.gp-fbc .fbc-h{font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent-mid);margin:0 0 10px}\n.gp-fbc .fbc-loc{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:.92rem;color:var(--dim)}\n.gp-fbc .fbc-loc label{font-family:var(--f);color:var(--dim2);font-size:.86rem}\n.gp-fbc .fbc-sel{font-family:var(--f);font-size:.95rem;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:8px 10px;min-height:44px}\n.gp-fbc .fbc-updated{font-weight:700;color:var(--ink)}\n.gp-fbc .fbc-via-wrap{font-size:.82rem;color:var(--dim2)}\n.gp-fbc .fbc-seg{display:inline-flex;border:1px solid var(--line);border-radius:4px;overflow:hidden}\n.gp-fbc .fbc-seg-b{font-family:var(--f);font-size:.88rem;min-height:44px;padding:0 12px;background:var(--panel);border:0;color:var(--dim);cursor:pointer}\n.gp-fbc .fbc-seg-b + .fbc-seg-b{border-left:1px solid var(--line)}\n.gp-fbc .fbc-seg-b.on{background:var(--accent);color:#ffffff;font-weight:700}\n.gp-fbc .fbc-res-grade{margin-top:8px;font-size:.9rem;color:var(--dim)}\n.gp-fbc .fbc-res-grade b{color:var(--ink)}\n.gp-fbc .fbc-six{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}\n.gp-fbc .fbc-cell{display:flex;flex-direction:column;gap:3px}\n.gp-fbc .fbc-cell-l{font-size:.8rem;color:var(--dim2)}\n.gp-fbc .fbc-in,.gp-fbc .fbc-an,.gp-fbc .fbc-price,.gp-fbc .fbc-field-in,.gp-fbc .fbc-custom-name{font-family:var(--f);font-size:.95rem;color:var(--ink);min-height:44px;padding:6px 8px;background:var(--panel);border:1px solid var(--line);border-radius:4px;width:100%}\n.gp-fbc .fbc-row2{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;font-size:.9rem;color:var(--dim)}\n.gp-fbc .fbc-link{font-family:var(--f);background:transparent;border:0;padding:8px 0;min-height:44px;color:var(--accent-mid);text-decoration:underline;text-underline-offset:2px;font-size:.92rem;cursor:pointer}\n.gp-fbc .fbc-ws{margin-top:10px;padding:12px;background:var(--paper2);border:1px solid var(--hair);border-radius:6px;display:flex;flex-direction:column;gap:12px}\n.gp-fbc .fbc-ws-h{font-size:.86rem;font-weight:700;color:var(--ink)}\n.gp-fbc .fbc-ws-n{font-size:.84rem;color:var(--dim2)}\n.gp-fbc .fbc-rem{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;font-size:.9rem}\n.gp-fbc .fbc-rem b{color:var(--accent)}\n.gp-fbc .fbc-btn2{font-family:var(--f);min-height:44px;padding:0 14px;background:var(--panel);border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-weight:700;font-size:.9rem;cursor:pointer}\n.gp-fbc .fbc-btn2:hover{background:var(--paper2)}\n.gp-fbc .fbc-field{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;font-size:.92rem;color:var(--dim)}\n.gp-fbc .fbc-field-in{width:120px}\n.gp-fbc .fbc-prods{display:flex;flex-direction:column;gap:2px}\n.gp-fbc .fbc-prod{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr) 220px;gap:10px;align-items:center;padding:7px 0;border-top:1px solid var(--line)}\n.gp-fbc .fbc-prod-head + .fbc-prod{border-top:0}\n.gp-fbc .fbc-prod.on{background:var(--paper2)}\n.gp-fbc .fbc-idle{grid-column:1 \/ -1;font-size:.84rem;color:var(--amber);padding:0 0 4px}\n.gp-fbc .fbc-prod.idle .fbc-pn{color:var(--dim)}\n.gp-fbc .fbc-pick-l{display:flex;align-items:center;gap:10px;min-height:44px;cursor:pointer;font-size:.95rem;font-weight:700;color:var(--ink)}\n.gp-fbc .fbc-pick{width:22px;height:22px;flex:0 0 22px;accent-color:#145328}\n.gp-fbc .fbc-anl{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}\n.gp-fbc .fbc-an{min-height:38px;padding:4px 6px;font-size:.86rem;text-align:center}\n.gp-fbc .fbc-anc{display:flex;flex-direction:column;gap:2px;min-width:0}\n.gp-fbc .fbc-an-l{display:none;font-size:.74rem;color:var(--dim2);line-height:1.2}\n.gp-fbc .fbc-prod-head{padding:0 0 4px;border-top:0;font-size:.78rem;color:var(--dim2)}\n.gp-fbc .fbc-prod-head .fbc-anl .fbc-cell-l{text-align:center;font-size:.78rem}\n.gp-fbc .fbc-pricecell{display:flex;align-items:center;gap:5px;font-size:.82rem;color:var(--dim2);flex-wrap:wrap}\n.gp-fbc .fbc-price{width:84px;min-height:38px;padding:4px 6px;font-size:.9rem}\n.gp-fbc .fbc-count{font-size:.86rem;color:var(--dim2);margin-top:8px}\n.gp-fbc .fbc-cap{margin-top:6px;font-size:.88rem;color:var(--logo-red)}\n.gp-fbc .fbc-empty{font-size:.95rem;color:var(--dim);padding:8px 0}\n.gp-fbc .fbc-results{display:flex;flex-direction:column;gap:10px}\n.gp-fbc .fbc-res{border:1px solid var(--line);border-radius:6px;padding:12px 14px;background:var(--panel)}\n.gp-fbc .fbc-res.best{background:var(--wash);border-color:var(--wash2)}\n.gp-fbc .fbc-res.best .fbc-nc{background:var(--panel);border-color:var(--wash2)}\n.gp-fbc .fbc-res-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:14px;margin-bottom:8px}\n.gp-fbc .fbc-rank{font-size:.8rem;font-weight:700;color:var(--faint)}\n.gp-fbc .fbc-cost-wrap{font-size:1.7rem;font-weight:700;color:var(--accent);letter-spacing:-.01em;line-height:1.1}\n.gp-fbc .fbc-cost-wrap .fbc-u{font-size:.82rem;font-weight:400;color:var(--dim2)}\n.gp-fbc .fbc-netn-wrap{font-size:.86rem;color:var(--dim)}\n.gp-fbc .fbc-netn-wrap b{color:var(--ink)}\n.gp-fbc .fbc-res-products{display:flex;flex-wrap:wrap;gap:8px 18px;margin-bottom:8px;font-size:.95rem}\n.gp-fbc .fbc-rp{cursor:help;border-bottom:1px dotted var(--dim2)}\n.gp-fbc .fbc-rp b{color:var(--ink)}\n.gp-fbc .fbc-res-nutrients{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}\n.gp-fbc .fbc-nc{display:flex;flex-direction:column;gap:2px;padding:6px 8px;background:var(--paper2);border:1px solid var(--hair);border-radius:4px;font-size:.84rem}\n.gp-fbc .fbc-nc-l{color:var(--dim2)}\n.gp-fbc .fbc-nc b{font-size:1rem;color:var(--ink)}\n.gp-fbc .fbc-nc-t{color:var(--dim2);font-size:.8rem}\n.gp-fbc .fbc-flag{display:inline-block;margin-top:3px;padding:1px 6px;border-radius:2px;font-size:.74rem;font-weight:700;color:#ffffff;width:max-content}\n.gp-fbc .fbc-flag[data-f=\"met\"]{background:var(--accent)}\n.gp-fbc .fbc-flag[data-f=\"short\"]{background:var(--logo-red)}\n.gp-fbc .fbc-flag[data-f=\"over\"]{background:var(--amber)}\n.gp-fbc .fbc-res-field{margin-top:8px;font-size:.9rem;color:var(--dim)}\n.gp-fbc .fbc-res-field b{color:var(--ink)}\n.gp-fbc .fbc-res-actions{margin-top:8px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n.gp-fbc .fbc-copied{font-size:.84rem;color:var(--accent-mid)}\n.gp-fbc .fbc-cta{background:var(--wash);border:1px solid var(--wash2);border-radius:8px;padding:16px 18px;display:flex;flex-direction:column;gap:10px}\n.gp-fbc .fbc-cta p{color:var(--dim);font-size:.95rem}\n.gp-fbc .fbc-cta p b{color:var(--ink)}\n\/* The theme styles anchors inside a post body with an ID-weighted rule that\n   outranks any class selector we can write; force the button colour. *\/\n.gp-fbc .fbc-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 20px;background:var(--accent);color:#ffffff !important;font-weight:700;font-size:.95rem;border-radius:4px;text-decoration:none;width:max-content;max-width:100%}\n.gp-fbc .fbc-btn:hover{background:var(--accent-mid);color:#ffffff !important}\n.gp-fbc .fbc-link2{color:var(--accent-mid);font-size:.92rem;text-decoration:underline;text-underline-offset:2px}\n.gp-fbc .fbc-tip{position:absolute;z-index:20;pointer-events:none;background:var(--panel);border:1px solid var(--mute);border-radius:4px;padding:7px 10px;font-size:.84rem;color:var(--dim);max-width:260px;box-shadow:0 2px 8px rgba(20,83,40,0.14)}\n@media (min-width:1200px){ .gp-fbc .fbc-wrap{max-width:1180px} }\n@media (max-width:820px){\n  .gp-fbc .fbc-wrap{padding:14px 12px}\n  .gp-fbc .fbc-six,.gp-fbc .fbc-rem{grid-template-columns:repeat(3,minmax(0,1fr))}\n  .gp-fbc .fbc-prod{grid-template-columns:1fr;gap:8px;padding:10px 0}\n  .gp-fbc .fbc-anl{grid-template-columns:repeat(6,minmax(0,1fr))}\n  .gp-fbc .fbc-an{min-height:44px;font-size:.95rem}\n  .gp-fbc .fbc-an-l{display:block}\n  .gp-fbc .fbc-prod-head{display:none}\n  .gp-fbc .fbc-price{min-height:44px;font-size:.95rem}\n  .gp-fbc .fbc-res-nutrients{grid-template-columns:repeat(3,minmax(0,1fr))}\n  .gp-fbc .fbc-btn{width:100%;justify-content:center;text-align:center}\n}\n@media (max-width:480px){\n  .gp-fbc .fbc-card{padding:12px}\n  .gp-fbc .fbc-six,.gp-fbc .fbc-rem{grid-template-columns:repeat(2,minmax(0,1fr))}\n  .gp-fbc .fbc-anl{grid-template-columns:repeat(3,minmax(0,1fr))}\n  .gp-fbc .fbc-res-nutrients{grid-template-columns:repeat(2,minmax(0,1fr))}\n}\n\/* One page for the retailer: the chosen products, the top three blends. *\/\n@media print{\n  .gp-fbc .fbc-prod:not(.on){display:none}\n  .gp-fbc .fbc-ws,.gp-fbc .fbc-cta,.gp-fbc .fbc-res-actions,.gp-fbc .fbc-link,.gp-fbc .fbc-count,.gp-fbc .fbc-tip,.gp-fbc .fbc-prod-head{display:none}\n  .gp-fbc .fbc-res:nth-child(n+4){display:none}\n  .gp-fbc .fbc-res{break-inside:avoid}\n  .gp-fbc .fbc-card{border-color:#999999}\n}\n\/* In a blog post the widget sits among 18px\/29px prose, so it takes a more\n   comfortable scale than the tool page's compact one. *\/\n.gp-fbc.gp-post{background:transparent;font-size:17px}\n.gp-fbc.gp-post .fbc-wrap{max-width:100%;padding:0;margin:26px 0 30px;gap:16px}\n.gp-fbc.gp-post .fbc-card{padding:18px 20px}\n<\/style>\n\n  <div class=\"fbc-wrap\">\n    <div class=\"fbc-card\">\n      <div class=\"fbc-loc\">\n        <label for=\"fbc-country\">Region<\/label>\n        <select class=\"fbc-sel\" id=\"fbc-country\">\n          <option value=\"AR\">Argentina<\/option>\n          <option value=\"AU\">Australia<\/option>\n          <option value=\"AT\">Austria<\/option>\n          <option value=\"BD\">Bangladesh<\/option>\n          <option value=\"BY\">Belarus<\/option>\n          <option value=\"BE\">Belgium<\/option>\n          <option value=\"BR\">Brazil<\/option>\n          <option value=\"BG\">Bulgaria<\/option>\n          <option value=\"CA\">Canada<\/option>\n          <option value=\"CL\">Chile<\/option>\n          <option value=\"CN\">China<\/option>\n          <option value=\"CO\">Colombia<\/option>\n          <option value=\"HR\">Croatia<\/option>\n          <option value=\"CZ\">Czechia<\/option>\n          <option value=\"DK\">Denmark<\/option>\n          <option value=\"EG\">Egypt<\/option>\n          <option value=\"EE\">Estonia<\/option>\n          <option value=\"ET\">Ethiopia<\/option>\n          <option value=\"FI\">Finland<\/option>\n          <option value=\"FR\">France<\/option>\n          <option value=\"GE\">Georgia<\/option>\n          <option value=\"DE\">Germany<\/option>\n          <option value=\"GR\">Greece<\/option>\n          <option value=\"HU\">Hungary<\/option>\n          <option value=\"IN\">India<\/option>\n          <option value=\"ID\">Indonesia<\/option>\n          <option value=\"IE\">Ireland<\/option>\n          <option value=\"IL\">Israel<\/option>\n          <option value=\"IT\">Italy<\/option>\n          <option value=\"JP\">Japan<\/option>\n          <option value=\"KZ\">Kazakhstan<\/option>\n          <option value=\"KE\">Kenya<\/option>\n          <option value=\"LV\">Latvia<\/option>\n          <option value=\"LT\">Lithuania<\/option>\n          <option value=\"MY\">Malaysia<\/option>\n          <option value=\"MX\">Mexico<\/option>\n          <option value=\"MD\">Moldova<\/option>\n          <option value=\"MA\">Morocco<\/option>\n          <option value=\"NL\">Netherlands<\/option>\n          <option value=\"NZ\">New Zealand<\/option>\n          <option value=\"NG\">Nigeria<\/option>\n          <option value=\"NO\">Norway<\/option>\n          <option value=\"PK\">Pakistan<\/option>\n          <option value=\"PY\">Paraguay<\/option>\n          <option value=\"PE\">Peru<\/option>\n          <option value=\"PH\">Philippines<\/option>\n          <option value=\"PL\">Poland<\/option>\n          <option value=\"PT\">Portugal<\/option>\n          <option value=\"RO\">Romania<\/option>\n          <option value=\"RU\">Russia<\/option>\n          <option value=\"SA\">Saudi Arabia<\/option>\n          <option value=\"RS\">Serbia<\/option>\n          <option value=\"SK\">Slovakia<\/option>\n          <option value=\"SI\">Slovenia<\/option>\n          <option value=\"ZA\">South Africa<\/option>\n          <option value=\"KR\">South Korea<\/option>\n          <option value=\"ES\">Spain<\/option>\n          <option value=\"SE\">Sweden<\/option>\n          <option value=\"CH\">Switzerland<\/option>\n          <option value=\"TZ\">Tanzania<\/option>\n          <option value=\"TH\">Thailand<\/option>\n          <option value=\"TR\">T\u00fcrkiye<\/option>\n          <option value=\"UA\">Ukraine<\/option>\n          <option value=\"GB\">United Kingdom<\/option>\n          <option value=\"US\">United States<\/option>\n          <option value=\"UY\">Uruguay<\/option>\n          <option value=\"UZ\">Uzbekistan<\/option>\n          <option value=\"VN\">Vietnam<\/option>\n          <option value=\"ZM\">Zambia<\/option>\n          <option value=\"XX\">Somewhere else<\/option>\n        <\/select>\n        <span class=\"fbc-via-wrap\"><span class=\"fbc-via\" data-via=\"saved\" hidden>your last choice<\/span><span class=\"fbc-via\" data-via=\"server\" hidden>detected from your connection<\/span><span class=\"fbc-via\" data-via=\"lang\" hidden>from your browser language<\/span><span class=\"fbc-via\" data-via=\"tz\" hidden>from your time zone<\/span><span class=\"fbc-via\" data-via=\"ip\" hidden>via IP geolocation<\/span><span class=\"fbc-via\" data-via=\"link\" hidden>from the link you opened<\/span><span class=\"fbc-via\" data-via=\"none\" hidden>pick your region<\/span><\/span>\n        <span class=\"fbc-seg\" id=\"fbc-seg\"><button class=\"fbc-seg-b\" type=\"button\" data-sys=\"metric\">kg\/ha<\/button><button class=\"fbc-seg-b\" type=\"button\" data-sys=\"imperial\">lb\/ac<\/button><\/span>\n        <span class=\"fbc-u\" data-sys=\"metric\">Rates in kilograms per hectare, prices per tonne.<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>Rates in pounds per acre, prices per short ton.<\/span>\n        <span>Prices updated <b class=\"fbc-updated\">29 September 2026, 00:02 UTC<\/b>. Overwrite them with the quote in front of you.<\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"fbc-card\">\n      <div class=\"fbc-h\">Target for this application<\/div>\n      <div class=\"fbc-six\" id=\"fbc-targets\">\n            <label class=\"fbc-cell\"><span class=\"fbc-cell-l\">N<\/span><input class=\"fbc-in\" data-n=\"N\" id=\"fbc-t-N\" type=\"number\" min=\"0\" step=\"1\" value=\"150\"><\/label>\n            <label class=\"fbc-cell\"><span class=\"fbc-cell-l\">P\u2082O\u2085<\/span><input class=\"fbc-in\" data-n=\"P\" id=\"fbc-t-P\" type=\"number\" min=\"0\" step=\"1\" value=\"60\"><\/label>\n            <label class=\"fbc-cell\"><span class=\"fbc-cell-l\">K\u2082O<\/span><input class=\"fbc-in\" data-n=\"K\" id=\"fbc-t-K\" type=\"number\" min=\"0\" step=\"1\" value=\"60\"><\/label>\n            <label class=\"fbc-cell\"><span class=\"fbc-cell-l\">S<\/span><input class=\"fbc-in\" data-n=\"S\" id=\"fbc-t-S\" type=\"number\" min=\"0\" step=\"1\" value=\"0\"><\/label>\n            <label class=\"fbc-cell\"><span class=\"fbc-cell-l\">Mg<\/span><input class=\"fbc-in\" data-n=\"Mg\" id=\"fbc-t-Mg\" type=\"number\" min=\"0\" step=\"1\" value=\"0\"><\/label>\n            <label class=\"fbc-cell\"><span class=\"fbc-cell-l\">Ca<\/span><input class=\"fbc-in\" data-n=\"Ca\" id=\"fbc-t-Ca\" type=\"number\" min=\"0\" step=\"1\" value=\"0\"><\/label>\n      <\/div>\n      <div class=\"fbc-row2\"><span class=\"fbc-u\" data-sys=\"metric\">kg\/ha<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>lb\/ac<\/span> <button class=\"fbc-link\" type=\"button\" id=\"fbc-ws-toggle\">Start from seasonal need and credits<\/button><\/div>\n      <div class=\"fbc-ws\" id=\"fbc-ws\" hidden>\n        <div><div class=\"fbc-ws-h\">Seasonal need<\/div><div class=\"fbc-six\" data-six=\"fbc-n\" data-step=\"1\" data-vals=\"0 0 0 0 0 0\"><\/div><\/div>\n        <div>\n          <div class=\"fbc-ws-h\">Manure or digestate<\/div>\n          <div class=\"fbc-row2\"><label for=\"fbc-m-unit\">Analysis in<\/label>\n            <select class=\"fbc-sel\" id=\"fbc-m-unit\"><option value=\"pct\">percent<\/option><option value=\"kgpt\">kg per tonne<\/option><\/select>\n            <label for=\"fbc-m-amt\">Amount<\/label><input class=\"fbc-field-in\" id=\"fbc-m-amt\" type=\"number\" min=\"0\" step=\"0.5\" value=\"0\"> <span class=\"fbc-u\" data-sys=\"metric\">t\/ha<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>tons\/ac<\/span>\n          <\/div>\n          <div class=\"fbc-six\" data-six=\"fbc-ma\" data-step=\"0.01\" data-vals=\"0 0 0 0 0 0\"><\/div>\n          <div class=\"fbc-ws-n\">Typical first-year availability, percent. Change it to your lab&#8217;s figure.<\/div>\n          <div class=\"fbc-six\" data-six=\"fbc-av\" data-step=\"1\" data-vals=\"60 100 100 100 100 100\"><\/div>\n          <label class=\"fbc-row2\"><input type=\"checkbox\" id=\"fbc-surface\" class=\"fbc-pick\"> <span>Left on the surface, not incorporated<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-row2\"><label for=\"fbc-leg\">Legume credit<\/label><input class=\"fbc-field-in\" id=\"fbc-leg\" type=\"number\" min=\"0\" step=\"1\" value=\"0\"> <span class=\"fbc-u\" data-sys=\"metric\">kg N\/ha<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>lb N\/ac<\/span><\/div>\n        <div><div class=\"fbc-ws-h\">Already applied this season<\/div>\n          <div class=\"fbc-ws-n\">Pre-plant<\/div><div class=\"fbc-six\" data-six=\"fbc-ap1\" data-step=\"1\" data-vals=\"0 0 0 0 0 0\"><\/div>\n          <div class=\"fbc-ws-n\">At planting<\/div><div class=\"fbc-six\" data-six=\"fbc-ap2\" data-step=\"1\" data-vals=\"0 0 0 0 0 0\"><\/div>\n          <div class=\"fbc-ws-n\">Side-dress<\/div><div class=\"fbc-six\" data-six=\"fbc-ap3\" data-step=\"1\" data-vals=\"0 0 0 0 0 0\"><\/div>\n        <\/div>\n        <div><div class=\"fbc-ws-h\">Remaining need<\/div>\n          <div class=\"fbc-rem\"><div><span class=\"fbc-cell-l\">N<\/span><br><b class=\"fbc-rem-v\" data-n=\"N\">0<\/b><\/div>\n            <div><span class=\"fbc-cell-l\">P\u2082O\u2085<\/span><br><b class=\"fbc-rem-v\" data-n=\"P\">0<\/b><\/div>\n            <div><span class=\"fbc-cell-l\">K\u2082O<\/span><br><b class=\"fbc-rem-v\" data-n=\"K\">0<\/b><\/div>\n            <div><span class=\"fbc-cell-l\">S<\/span><br><b class=\"fbc-rem-v\" data-n=\"S\">0<\/b><\/div>\n            <div><span class=\"fbc-cell-l\">Mg<\/span><br><b class=\"fbc-rem-v\" data-n=\"Mg\">0<\/b><\/div>\n            <div><span class=\"fbc-cell-l\">Ca<\/span><br><b class=\"fbc-rem-v\" data-n=\"Ca\">0<\/b><\/div><\/div>\n          <div class=\"fbc-row2\"><button class=\"fbc-btn2\" type=\"button\" id=\"fbc-use-rem\">Use the remaining need as the target<\/button><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"fbc-field\"><label for=\"fbc-field\">Field size<\/label><input class=\"fbc-field-in\" id=\"fbc-field\" type=\"number\" min=\"0\" step=\"1\" value=\"0\"> <span class=\"fbc-u\" data-sys=\"metric\">ha<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>ac<\/span><\/div>\n    <\/div>\n\n    <div class=\"fbc-card\">\n      <div class=\"fbc-h\">Fertilizers you can get<\/div>\n      <div class=\"fbc-prods\">\n        <div class=\"fbc-prod fbc-prod-head\"><span><\/span><div class=\"fbc-anl\" id=\"fbc-anl-head\"><\/div><span class=\"fbc-cell-l\">Price<\/span><\/div>\n        <div class=\"fbc-prod\" data-p=\"urea\" data-a=\"46 0 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Urea<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"uan32\" data-a=\"32 0 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">UAN 32<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"uan28\" data-a=\"28 0 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">UAN 28<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"an\" data-a=\"34 0 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Ammonium nitrate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"can\" data-a=\"27 0 0 0 0 4\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Calcium ammonium nitrate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"as\" data-a=\"21 0 0 24 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Ammonium sulphate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"map\" data-a=\"11 52 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">MAP<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"dap\" data-a=\"18 46 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">DAP<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"app\" data-a=\"10 34 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Ammonium polyphosphate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"tsp\" data-a=\"0 46 0 0 0 14\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Triple superphosphate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"ssp\" data-a=\"0 20 0 12 0 20\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Single superphosphate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"mop\" data-a=\"0 0 60 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Muriate of potash<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"sop\" data-a=\"0 0 50 18 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Sulphate of potash<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"kno3\" data-a=\"13 0 46 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Potassium nitrate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"kmag\" data-a=\"0 0 22 22 11 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Potassium magnesium sulphate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"kies\" data-a=\"0 0 0 20 15 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Kieserite<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"epsom\" data-a=\"0 0 0 13 10 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Magnesium sulphate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"sulfur\" data-a=\"0 0 0 90 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Elemental sulphur<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"gypsum\" data-a=\"0 0 0 17 0 22\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Gypsum<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"cano3\" data-a=\"15.5 0 0 0 0 19\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Calcium nitrate<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"ps1533\" data-a=\"13 33 0 15 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Phosphate with sulphur 13-33-0-15<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"ps1240\" data-a=\"12 40 0 10 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Phosphate with sulphur 12-40-0-10<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"ps943\" data-a=\"9 43 0 16 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Phosphate with sulphur 9-43-0-16<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"ass\" data-a=\"11 0 0 75 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Ammonium sulphate with elemental sulphur 11-0-0-75<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"nh3\" data-a=\"82 0 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><span class=\"fbc-pn\">Anhydrous ammonia<\/span><\/label>\n        <\/div>\n        <div class=\"fbc-prod\" data-p=\"custom\" data-a=\"0 0 0 0 0 0\">\n          <label class=\"fbc-pick-l\"><input class=\"fbc-pick\" type=\"checkbox\"><input class=\"fbc-custom-name fbc-pn\" type=\"text\" maxlength=\"40\" placeholder=\"Your product\" aria-label=\"product name\"><\/label>\n        <\/div>\n      <\/div>\n      <div class=\"fbc-count\"><b class=\"fbc-count-v\">0<\/b> of 8 chosen<\/div>\n      <p class=\"fbc-cap\" id=\"fbc-cap\" hidden>Eight is the most you can compare at once. Untick one to add another.<\/p>\n    <\/div>\n\n    <div class=\"fbc-card\">\n      <div class=\"fbc-h\">Blends, best fit first<\/div>\n      <p class=\"fbc-empty\" id=\"fbc-none\" hidden>Tick at least one fertilizer and set at least one target.<\/p>\n      <p class=\"fbc-empty\" id=\"fbc-empty\" hidden>Nothing you ticked carries <span class=\"fbc-missing\"><\/span>. Add a source for it or set that target to zero.<\/p>\n      <div class=\"fbc-results\" id=\"fbc-results\"><\/div>\n      <div id=\"fbc-tpl\" hidden>\n        <div class=\"fbc-res\">\n          <div class=\"fbc-res-head\">\n            <span class=\"fbc-rank\"><\/span>\n            <span class=\"fbc-cost-wrap\" hidden><span class=\"fbc-cur\">$<\/span><b class=\"fbc-cost\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">per hectare<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>per acre<\/span><\/span>\n            <span class=\"fbc-netn-wrap\" hidden>Nitrogen after P and K are valued: <span class=\"fbc-cur\">$<\/span><b class=\"fbc-netn\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">per kg N<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>per lb N<\/span><\/span>\n          <\/div>\n          <div class=\"fbc-res-products\"><\/div>\n          <div class=\"fbc-res-nutrients\">\n              <div class=\"fbc-nc\" data-n=\"N\"><span class=\"fbc-nc-l\">N<\/span><b class=\"fbc-del\">0<\/b><span class=\"fbc-nc-t\">\/ <span class=\"fbc-tgt\">0<\/span><\/span><span class=\"fbc-flag\" data-f=\"met\" hidden>met<\/span><span class=\"fbc-flag\" data-f=\"short\" hidden>short<\/span><span class=\"fbc-flag\" data-f=\"over\" hidden>over<\/span><\/div>\n              <div class=\"fbc-nc\" data-n=\"P\"><span class=\"fbc-nc-l\">P\u2082O\u2085<\/span><b class=\"fbc-del\">0<\/b><span class=\"fbc-nc-t\">\/ <span class=\"fbc-tgt\">0<\/span><\/span><span class=\"fbc-flag\" data-f=\"met\" hidden>met<\/span><span class=\"fbc-flag\" data-f=\"short\" hidden>short<\/span><span class=\"fbc-flag\" data-f=\"over\" hidden>over<\/span><\/div>\n              <div class=\"fbc-nc\" data-n=\"K\"><span class=\"fbc-nc-l\">K\u2082O<\/span><b class=\"fbc-del\">0<\/b><span class=\"fbc-nc-t\">\/ <span class=\"fbc-tgt\">0<\/span><\/span><span class=\"fbc-flag\" data-f=\"met\" hidden>met<\/span><span class=\"fbc-flag\" data-f=\"short\" hidden>short<\/span><span class=\"fbc-flag\" data-f=\"over\" hidden>over<\/span><\/div>\n              <div class=\"fbc-nc\" data-n=\"S\"><span class=\"fbc-nc-l\">S<\/span><b class=\"fbc-del\">0<\/b><span class=\"fbc-nc-t\">\/ <span class=\"fbc-tgt\">0<\/span><\/span><span class=\"fbc-flag\" data-f=\"met\" hidden>met<\/span><span class=\"fbc-flag\" data-f=\"short\" hidden>short<\/span><span class=\"fbc-flag\" data-f=\"over\" hidden>over<\/span><\/div>\n              <div class=\"fbc-nc\" data-n=\"Mg\"><span class=\"fbc-nc-l\">Mg<\/span><b class=\"fbc-del\">0<\/b><span class=\"fbc-nc-t\">\/ <span class=\"fbc-tgt\">0<\/span><\/span><span class=\"fbc-flag\" data-f=\"met\" hidden>met<\/span><span class=\"fbc-flag\" data-f=\"short\" hidden>short<\/span><span class=\"fbc-flag\" data-f=\"over\" hidden>over<\/span><\/div>\n              <div class=\"fbc-nc\" data-n=\"Ca\"><span class=\"fbc-nc-l\">Ca<\/span><b class=\"fbc-del\">0<\/b><span class=\"fbc-nc-t\">\/ <span class=\"fbc-tgt\">0<\/span><\/span><span class=\"fbc-flag\" data-f=\"met\" hidden>met<\/span><span class=\"fbc-flag\" data-f=\"short\" hidden>short<\/span><span class=\"fbc-flag\" data-f=\"over\" hidden>over<\/span><\/div>\n          <\/div>\n          <div class=\"fbc-res-grade\">Blend grade <b class=\"fbc-grade\">0-0-0-0<\/b><span class=\"fbc-dens-wrap\" hidden> \u00b7 Bulk density <b class=\"fbc-dens\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">kg\/m\u00b3<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>lb\/ft\u00b3<\/span><\/span><\/div>\n          <div class=\"fbc-res-field\" hidden>For <b class=\"fbc-fsize\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">ha<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>ac<\/span>: <span class=\"fbc-ftot\"><\/span> <span class=\"fbc-fcost-wrap\" hidden>and <span class=\"fbc-cur\">$<\/span><b class=\"fbc-fcost\">0<\/b> in total<\/span><span class=\"fbc-fvol-wrap\" hidden>, about <b class=\"fbc-fvol\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">m\u00b3<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>ft\u00b3<\/span> of hopper space<\/span><\/div>\n          <div class=\"fbc-res-actions\"><button class=\"fbc-btn2 fbc-copy-eq\" type=\"button\">Copy as GeoPard equation<\/button><span class=\"fbc-copied\" hidden>Copied<\/span><\/div>\n        <\/div>\n        <div class=\"fbc-prod-parts\">\n          <div class=\"fbc-anl\"><label class=\"fbc-anc\"><span class=\"fbc-an-l\"><\/span><input class=\"fbc-an\" data-n=\"N\" type=\"number\" min=\"0\" max=\"100\" step=\"0.5\" value=\"0\" aria-label=\"N\"><\/label> <label class=\"fbc-anc\"><span class=\"fbc-an-l\"><\/span><input class=\"fbc-an\" data-n=\"P\" type=\"number\" min=\"0\" max=\"100\" step=\"0.5\" value=\"0\" aria-label=\"P\"><\/label> <label class=\"fbc-anc\"><span class=\"fbc-an-l\"><\/span><input class=\"fbc-an\" data-n=\"K\" type=\"number\" min=\"0\" max=\"100\" step=\"0.5\" value=\"0\" aria-label=\"K\"><\/label> <label class=\"fbc-anc\"><span class=\"fbc-an-l\"><\/span><input class=\"fbc-an\" data-n=\"S\" type=\"number\" min=\"0\" max=\"100\" step=\"0.5\" value=\"0\" aria-label=\"S\"><\/label> <label class=\"fbc-anc\"><span class=\"fbc-an-l\"><\/span><input class=\"fbc-an\" data-n=\"Mg\" type=\"number\" min=\"0\" max=\"100\" step=\"0.5\" value=\"0\" aria-label=\"Mg\"><\/label> <label class=\"fbc-anc\"><span class=\"fbc-an-l\"><\/span><input class=\"fbc-an\" data-n=\"Ca\" type=\"number\" min=\"0\" max=\"100\" step=\"0.5\" value=\"0\" aria-label=\"Ca\"><\/label><\/div>\n          <div class=\"fbc-pricecell\"><span class=\"fbc-cur\">$<\/span><input class=\"fbc-price\" type=\"number\" min=\"0\" step=\"1\" value=\"0\" aria-label=\"price\"><span class=\"fbc-u\" data-sys=\"metric\">per tonne<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>per short ton<\/span><\/div>\n          <div class=\"fbc-idle\" hidden>Left out of every blend: none of the nutrients it carries has a target. Set one for what it brings, or untick it.<\/div>\n        <\/div>\n        <span class=\"fbc-rp\"><b class=\"fbc-rp-v\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">kg\/ha<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>lb\/ac<\/span><\/span>\n        <span class=\"fbc-ft\"><b class=\"fbc-ft-v\">0<\/b> <span class=\"fbc-u\" data-sys=\"metric\">t<\/span><span class=\"fbc-u\" data-sys=\"imperial\" hidden>short tons<\/span><\/span>\n      <\/div>\n    <\/div>\n\n    <div class=\"fbc-cta\">\n      <p><b>One step from blend to prescription map.<\/b> GeoPard takes the blend you picked and writes the map for your field: variable rate where the soil test and yield layers show the need differs from zone to zone, a flat rate where it does not, your call. The file goes straight to the terminal.<\/p>\n      <a class=\"fbc-btn\" href=\"https:\/\/app.geopard.tech\/auth\/sign-up?utm_source=geopard.tech&amp;utm_medium=widget&amp;utm_campaign=fertilizer-blend-calculator\">Turn this blend into a prescription map<\/a>\n      <a class=\"fbc-link2\" href=\"https:\/\/geopard.tech\/ai\/?utm_source=geopard.tech&amp;utm_medium=widget&amp;utm_campaign=fertilizer-blend-calculator\">How the Assistant finds the limiting factor from your soil test and yield layers<\/a>\n      <div class=\"fbc-res-actions\"><button class=\"fbc-btn2\" type=\"button\" id=\"fbc-share\">Copy a link to this blend<\/button><button class=\"fbc-btn2\" type=\"button\" id=\"fbc-print\">Print the top three blends<\/button><span class=\"fbc-copied\" id=\"fbc-share-ok\" hidden>Copied<\/span><\/div>\n    <\/div>\n  <\/div>\n  <div class=\"fbc-tip\" id=\"fbc-tip\" hidden><\/div>\n\n<script nowprocket data-no-optimize=\"1\" data-no-defer=\"1\" data-no-minify=\"1\">\n(function(){\n\/* GBC-BLEND-CORE BEGIN *\/\n\/* Fertilizer Blend Calculator core. Pure maths, no DOM. Injected into\n * source.html between the GBC-BLEND-CORE markers by rebuild.sh, so this file\n * must contain no ampersand at all (root CLAUDE.md rule 1). Conditions are\n * written as ternaries and subsets are enumerated by recursion. *\/\nvar GBC = (function(){\n  var NUTRIENTS = ['N', 'P', 'K', 'S', 'Mg', 'Ca'];\n  \/\/ Label analyses, percent by weight. Names live in the DOM, not here.\n  function prod(key, N, P, K, S, Mg, Ca){ return {key: key, N: N, P: P, K: K, S: S, Mg: Mg, Ca: Ca}; }\n  var PRODUCTS = [\n    prod('urea', 46, 0, 0, 0, 0, 0),\n    prod('uan32', 32, 0, 0, 0, 0, 0),\n    prod('uan28', 28, 0, 0, 0, 0, 0),\n    prod('an', 34, 0, 0, 0, 0, 0),\n    prod('can', 27, 0, 0, 0, 0, 4),\n    prod('as', 21, 0, 0, 24, 0, 0),\n    prod('map', 11, 52, 0, 0, 0, 0),\n    prod('dap', 18, 46, 0, 0, 0, 0),\n    prod('app', 10, 34, 0, 0, 0, 0),\n    prod('tsp', 0, 46, 0, 0, 0, 14),\n    prod('ssp', 0, 20, 0, 12, 0, 20),\n    prod('mop', 0, 0, 60, 0, 0, 0),\n    prod('sop', 0, 0, 50, 18, 0, 0),\n    prod('kno3', 13, 0, 46, 0, 0, 0),\n    prod('kmag', 0, 0, 22, 22, 11, 0),\n    prod('kies', 0, 0, 0, 20, 15, 0),\n    prod('epsom', 0, 0, 0, 13, 10, 0),\n    prod('sulfur', 0, 0, 0, 90, 0, 0),\n    prod('gypsum', 0, 0, 0, 17, 0, 22),\n    prod('cano3', 15.5, 0, 0, 0, 0, 19),\n    prod('ps1533', 13, 33, 0, 15, 0, 0),\n    prod('ps1240', 12, 40, 0, 10, 0, 0),\n    prod('ps943', 9, 43, 0, 16, 0, 0),\n    prod('ass', 11, 0, 0, 75, 0, 0),\n    prod('nh3', 82, 0, 0, 0, 0, 0)\n  ];\n  \/\/ Bulk density, kg per cubic metre, typical of the dry product. Used\n  \/\/ for the hopper volume a blend needs; anhydrous ammonia is applied as a\n  \/\/ pressurised liquid and never rides in a dry blend, so it has none.\n  var DENSITY = {urea: 750, uan32: 1330, uan28: 1280, an: 850, can: 1000, as: 1000, map: 960, dap: 930,\n                 app: 1400, tsp: 1120, ssp: 1100, mop: 1090, sop: 1200, kno3: 1200, kmag: 1440, kies: 1250,\n                 epsom: 1000, sulfur: 1100, gypsum: 1100, cano3: 1100, ps1533: 1000, ps1240: 1000, ps943: 1000,\n                 ass: 960, nh3: null};\n  \/\/ The blend's guaranteed analysis: each nutrient as a percentage of the\n  \/\/ total product mass, the way a retailer writes a grade (27-9-13-3).\n  function blendGrade(blend){\n    var mass = 0, i, out = {};\n    for (i = 0; i < blend.rates.length; i++) { mass += blend.rates[i]; }\n    for (var n = 0; n < NUTRIENTS.length; n++) {\n      var kg = 0;\n      for (i = 0; i < blend.products.length; i++) { kg += blend.rates[i] * blend.products[i][NUTRIENTS[n]] \/ 100; }\n      out[NUTRIENTS[n]] = mass > 0 ? 100 * kg \/ mass : 0;\n    }\n    return out;\n  }\n  \/\/ Mass-weighted bulk density of the blend, kg\/m3, from the volume each\n  \/\/ product occupies. Null when any product has no density (or a custom\n  \/\/ product), or when nothing is applied.\n  function blendDensity(blend, densities){\n    var d = densities ? densities : DENSITY, mass = 0, vol = 0;\n    for (var i = 0; i < blend.rates.length; i++) {\n      var rho = d[blend.products[i].key];\n      if (blend.rates[i] <= 0) { continue; }\n      if (!(rho > 0)) { return null; }\n      mass += blend.rates[i]; vol += blend.rates[i] \/ rho;\n    }\n    return vol > 0 ? mass \/ vol : null;\n  }\n  var SHORT_BELOW = 0.97, OVER_ABOVE = 1.10;\n  var KG_HA_TO_LB_AC = 0.892179, T_TO_SHORT_TON = 1.1023113;\n  function kgHaToLbAc(v){ return v * KG_HA_TO_LB_AC; }\n  function lbAcToKgHa(v){ return v \/ KG_HA_TO_LB_AC; }\n  function tToShortTon(v){ return v * T_TO_SHORT_TON; }\n  function delivered(products, rates){\n    var out = {};\n    for (var j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j], sum = 0;\n      for (var i = 0; i < products.length; i++) { sum = sum + rates[i] * products[i][n] \/ 100; }\n      out[n] = sum;\n    }\n    return out;\n  }\n  \/\/ Weighted squared error over targeted nutrients, each scaled by its target\n  \/\/ so a ten percent miss counts the same whatever the nutrient.\n  function objective(products, rates, targets){\n    var d = delivered(products, rates), o = 0;\n    for (var j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j];\n      if (targets[n] > 0) { var e = (d[n] - targets[n]) \/ targets[n]; o = o + e * e; }\n    }\n    return o;\n  }\n  \/\/ k by k normal equations by Gaussian elimination with partial pivoting.\n  \/\/ Null when singular (two products with proportional analyses), which the\n  \/\/ caller treats as an unusable active set.\n  function solveLinear(M, v){\n    var k = v.length, i, j, r, a = [], b = v.slice();\n    for (i = 0; i < k; i++) { a.push(M[i].slice()); }\n    for (i = 0; i < k; i++) {\n      var piv = i;\n      for (r = i + 1; r < k; r++) { if (Math.abs(a[r][i]) > Math.abs(a[piv][i])) { piv = r; } }\n      if (Math.abs(a[piv][i]) < 1e-12) { return null; }\n      if (piv !== i) { var t = a[i]; a[i] = a[piv]; a[piv] = t; var tb = b[i]; b[i] = b[piv]; b[piv] = tb; }\n      for (r = i + 1; r < k; r++) {\n        var f = a[r][i] \/ a[i][i];\n        for (j = i; j < k; j++) { a[r][j] = a[r][j] - f * a[i][j]; }\n        b[r] = b[r] - f * b[i];\n      }\n    }\n    var x = new Array(k);\n    for (i = k - 1; i >= 0; i--) {\n      var s = b[i];\n      for (j = i + 1; j < k; j++) { s = s - a[i][j] * x[j]; }\n      x[i] = s \/ a[i][i];\n    }\n    return x;\n  }\n  \/\/ Unconstrained weighted least squares on a chosen active set of products.\n  function leastSquares(products, targets){\n    var rows = [], rhs = [], j, i, r;\n    for (j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j];\n      if (targets[n] > 0) {\n        var row = [];\n        for (i = 0; i < products.length; i++) { row.push(products[i][n] \/ 100 \/ targets[n]); }\n        rows.push(row); rhs.push(1);\n      }\n    }\n    if (!rows.length) { return null; }\n    var k = products.length, M = [], v = [];\n    for (i = 0; i < k; i++) {\n      M.push([]); var vi = 0;\n      for (j = 0; j < k; j++) {\n        var s = 0;\n        for (r = 0; r < rows.length; r++) { s = s + rows[r][i] * rows[r][j]; }\n        M[i].push(s);\n      }\n      for (r = 0; r < rows.length; r++) { vi = vi + rows[r][i] * rhs[r]; }\n      v.push(vi);\n    }\n    return solveLinear(M, v);\n  }\n  \/\/ All combinations of size k from arr, by recursion (no bit masks: rule 1).\n  function combinations(arr, k){\n    var out = [];\n    function rec(start, chosen){\n      if (chosen.length === k) { out.push(chosen.slice()); return; }\n      for (var i = start; i < arr.length; i++) { chosen.push(arr[i]); rec(i + 1, chosen); chosen.pop(); }\n    }\n    rec(0, []);\n    return out;\n  }\n  \/\/ Exact NNLS for a handful of products: every active set is tried, the\n  \/\/ unconstrained solution on it is kept when all its rates are non-negative,\n  \/\/ and the feasible solution with the smallest objective wins.\n  function solveBlend(products, targets){\n    var idx = [], i;\n    for (i = 0; i < products.length; i++) { idx.push(i); }\n    var zero = idx.map(function(){ return 0; });\n    var best = null;\n    for (var k = 1; k <= products.length; k++) {\n      var sets = combinations(idx, k);\n      for (var s = 0; s < sets.length; s++) {\n        var sub = sets[s].map(function(q){ return products[q]; });\n        var x = leastSquares(sub, targets);\n        if (!x) { continue; }\n        var feasible = true;\n        for (var q = 0; q < x.length; q++) { if (x[q] < -1e-9) { feasible = false; } }\n        if (!feasible) { continue; }\n        var rates = zero.slice();\n        for (var q2 = 0; q2 < sets[s].length; q2++) { rates[sets[s][q2]] = Math.max(0, x[q2]); }\n        var o = objective(products, rates, targets);\n        if (best === null ? true : o < best.objective - 1e-12) { best = {rates: rates, objective: o}; }\n      }\n    }\n    if (best === null) { best = {rates: zero, objective: objective(products, zero, targets)}; }\n    return evaluate(products, best.rates, targets, best.objective);\n  }\n  function evaluate(products, rates, targets, obj){\n    var d = delivered(products, rates), flags = {}, shortCount = 0, shortPct = 0, overPct = 0, mass = 0;\n    for (var j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j];\n      if (targets[n] > 0) {\n        var ratio = d[n] \/ targets[n];\n        if (ratio < SHORT_BELOW) { flags[n] = 'short'; shortCount = shortCount + 1; shortPct = shortPct + (1 - ratio) * 100; }\n        else if (ratio > OVER_ABOVE) { flags[n] = 'over'; overPct = overPct + (ratio - 1) * 100; }\n        else { flags[n] = 'met'; }\n      } else { flags[n] = 'none'; }\n    }\n    for (var i = 0; i < rates.length; i++) { mass = mass + rates[i]; }\n    return {products: products, keys: products.map(function(p){ return p.key; }), rates: rates,\n            delivered: d, flags: flags, shortCount: shortCount, shortPct: shortPct, overPct: overPct,\n            mass: mass, objective: obj === undefined ? objective(products, rates, targets) : obj, cost: null};\n  }\n  function costPerHa(blend, prices){\n    var c = 0, any = false;\n    for (var i = 0; i < blend.products.length; i++) {\n      var pr = prices ? prices[blend.products[i].key] : undefined;\n      if (pr > 0) { any = true; c = c + blend.rates[i] * pr; }\n    }\n    return any ? c : null;\n  }\n  \/\/ Every subset of the chosen products up to maxProducts, solved and ranked:\n  \/\/ fewer short nutrients, less shortfall, less over-application, lower cost\n  \/\/ (or lower mass without prices), fewer products.\n  function rankBlends(chosen, targets, prices, opts){\n    var maxK = Math.min(opts ? (opts.maxProducts ? opts.maxProducts : 4) : 4, chosen.length);\n    var top = opts ? (opts.top ? opts.top : 10) : 10;\n    var idx = [], out = [], i;\n    for (i = 0; i < chosen.length; i++) { idx.push(i); }\n    for (var k = 1; k <= maxK; k++) {\n      var sets = combinations(idx, k);\n      for (var s = 0; s < sets.length; s++) {\n        var sub = sets[s].map(function(q){ return chosen[q]; });\n        var b = solveBlend(sub, targets);\n        var used = 0;\n        for (var q = 0; q < b.rates.length; q++) { if (b.rates[q] > 1e-6) { used = used + 1; } }\n        if (used === 0) { continue; }\n        if (used < sub.length) { continue; }   \/\/ a smaller subset already covers this\n        b.cost = costPerHa(b, prices);\n        out.push(b);\n      }\n    }\n    out.sort(function(a, b){\n      if (a.shortCount !== b.shortCount) { return a.shortCount - b.shortCount; }\n      if (Math.abs(a.shortPct - b.shortPct) > 1e-9) { return a.shortPct - b.shortPct; }\n      if (Math.abs(a.overPct - b.overPct) > 1e-9) { return a.overPct - b.overPct; }\n      var ca = a.cost === null ? a.mass : a.cost, cb = b.cost === null ? b.mass : b.cost;\n      if (Math.abs(ca - cb) > 1e-9) { return ca - cb; }\n      return a.products.length - b.products.length;\n    });\n    return out.slice(0, top);\n  }\n  \/\/ Texas A and M method: value the P2O5 and K2O in the blend at the price of\n  \/\/ the straight P and K sources (TSP and MOP when chosen, else the cheapest\n  \/\/ chosen carrier of each), subtract, divide the rest by the N delivered.\n  function cheapestPerKg(products, prices, nutrient, prefer){\n    var best = null;\n    for (var i = 0; i < products.length; i++) {\n      var p = products[i], pr = prices ? prices[p.key] : undefined;\n      if (p[nutrient] > 0 ? pr > 0 : false) {\n        var perKg = pr \/ (p[nutrient] \/ 100);\n        if (p.key === prefer) { return perKg; }\n        if (best === null ? true : perKg < best) { best = perKg; }\n      }\n    }\n    return best;\n  }\n  function netNitrogenCost(blend, prices, targets){\n    var cost = costPerHa(blend, prices);\n    if (cost === null) { return null; }\n    var d = delivered(blend.products, blend.rates);\n    if (!(d.N > 0)) { return null; }\n    var pVal = cheapestPerKg(blend.products, prices, 'P', 'tsp'), kVal = cheapestPerKg(blend.products, prices, 'K', 'mop');\n    var net = cost - (pVal === null ? 0 : d.P * pVal) - (kVal === null ? 0 : d.K * kVal);\n    return net \/ d.N;\n  }\n  \/\/ Seasonal need minus credits, floored at zero per nutrient. Manure analysis\n  \/\/ in percent ('pct') or kg per tonne ('kgpt'); amount in tonnes per hectare.\n  function worksheetRemaining(need, credits){\n    var out = {};\n    for (var j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j], rem = need[n] ? need[n] : 0;\n      var m = credits ? credits.manure : null;\n      if (m ? m.amountTHa > 0 : false) {\n        var an = m.analysis ? (m.analysis[n] ? m.analysis[n] : 0) : 0;\n        var perT = m.unit === 'pct' ? an * 10 : an;\n        var avail = m.availability ? (m.availability[n] === undefined ? 100 : m.availability[n]) : 100;\n        rem = rem - perT * m.amountTHa * avail \/ 100;\n      }\n      if (n === 'N' ? (credits ? credits.legumeN > 0 : false) : false) { rem = rem - credits.legumeN; }\n      var apps = credits ? (credits.applied ? credits.applied : []) : [];\n      for (var a = 0; a < apps.length; a++) { rem = rem - (apps[a][n] ? apps[a][n] : 0); }\n      out[n] = Math.max(0, rem);\n    }\n    return out;\n  }\n  function missingSources(chosen, targets){\n    var out = [];\n    for (var j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j];\n      if (targets[n] > 0) {\n        var any = false;\n        for (var i = 0; i < chosen.length; i++) { if (chosen[i][n] > 0) { any = true; } }\n        if (!any) { out.push(n); }\n      }\n    }\n    return out;\n  }\n  \/\/ GeoPard equation text for this blend. Generated text goes to the clipboard\n  \/\/ only. Each product is converted at 100 \/ analysis of the nutrient it mainly\n  \/\/ carries; nitrogen from compound products is credited on the nitrogen line.\n  var LAYER = {N: 'n_rate', P: 'p_rate', K: 'k_rate', S: 's_rate', Mg: 'mg_rate', Ca: 'ca_rate'};\n  var SOIL = {N: 'soil_n', P: 'soil_p', K: 'soil_k', S: 'soil_s', Mg: 'soil_mg', Ca: 'soil_ca'};\n  function mainNutrient(p, targets){\n    var best = null, bestShare = 0;\n    for (var j = 0; j < NUTRIENTS.length; j++) {\n      var n = NUTRIENTS[j];\n      if (targets[n] > 0 ? p[n] > bestShare : false) { best = n; bestShare = p[n]; }\n    }\n    return best;\n  }\n  function equationText(blend, targets){\n    var lines = ['# Blend from geopard.tech: ' + blend.products.map(function(p){ return p.key; }).join(', ')];\n    var j, n, i, p, m;\n    for (j = 0; j < NUTRIENTS.length; j++) {\n      n = NUTRIENTS[j];\n      if (targets[n] > 0) {\n        lines.push(LAYER[n] + ' = geopard.calculate_nutrient_rate_as_active_ingredients_per_zone(zones, ' + targets[n] + ', ' + SOIL[n] + ', [])');\n      }\n    }\n    var credits = [];\n    for (i = 0; i < blend.products.length; i++) {\n      p = blend.products[i]; m = mainNutrient(p, targets);\n      if (m === null ? true : m === 'N') { continue; }\n      lines.push(p.key + '_kg = geopard.convert_active_ingredient_and_product(' + LAYER[m] + ', 100 \/ ' + p[m] + ')');\n      if (p.N > 0 ? targets.N > 0 : false) { credits.push(p.key + '_kg * ' + (p.N \/ 100)); }\n    }\n    for (i = 0; i < blend.products.length; i++) {\n      p = blend.products[i]; m = mainNutrient(p, targets);\n      if (m !== 'N') { continue; }\n      var src = credits.length ? LAYER.N + ' - ' + credits.join(' - ') : LAYER.N;\n      lines.push(p.key + '_kg = geopard.convert_active_ingredient_and_product(' + src + ', 100 \/ ' + p.N + ')');\n    }\n    return lines.join('\\n');\n  }\n  \/\/ URL state. Pure string in, object out; the page glues it to location.\n  \/\/ Field order on decode matches the encoder: t, keys, prices, field, sys, edits.\n  function encodeState(st){\n    var parts = [];\n    function put(k, v){ parts.push(k + '=' + encodeURIComponent(v)); }\n    put('t', NUTRIENTS.map(function(n){ return st.t[n] ? st.t[n] : 0; }).join(','));\n    put('p', st.keys.join(','));\n    put('pr', st.keys.map(function(k){ return st.prices ? (st.prices[k] === undefined ? '' : st.prices[k]) : ''; }).join(','));\n    if (st.field) { put('f', st.field); }\n    put('u', st.sys);\n    var ed = [];\n    for (var k in st.edits) { if (Object.prototype.hasOwnProperty.call(st.edits, k)) { for (var n in st.edits[k]) { if (Object.prototype.hasOwnProperty.call(st.edits[k], n)) { ed.push(k + '.' + n + ':' + st.edits[k][n]); } } } }\n    put('e', ed.join(','));\n    return parts.join(';');\n  }\n  function decodeState(str){\n    var out = {t: {}, keys: [], prices: {}}, pairs = String(str).split(';');\n    for (var i = 0; i < pairs.length; i++) {\n      var eqAt = pairs[i].indexOf('='); if (eqAt < 0) { continue; }\n      var k = pairs[i].slice(0, eqAt), v = decodeURIComponent(pairs[i].slice(eqAt + 1));\n      if (k === 't') { var tv = v.split(','); for (var j = 0; j < NUTRIENTS.length; j++) { out.t[NUTRIENTS[j]] = parseFloat(tv[j]) ? parseFloat(tv[j]) : 0; } }\n      else if (k === 'p') { out.keys = v ? v.split(',') : []; }\n      else if (k === 'pr') { var pv = v.split(','); for (var q = 0; q < out.keys.length; q++) { if (pv[q] !== '' ? pv[q] !== undefined : false) { out.prices[out.keys[q]] = parseFloat(pv[q]); } } }\n      else if (k === 'f') { out.field = parseFloat(v); }\n      else if (k === 'u') { out.sys = v; }\n      else if (k === 'e') { out.edits = {}; if (v) { var es = v.split(','); for (var r = 0; r < es.length; r++) { var dot = es[r].indexOf('.'), col = es[r].indexOf(':'); var pk = es[r].slice(0, dot), nn = es[r].slice(dot + 1, col); if (!out.edits[pk]) { out.edits[pk] = {}; } out.edits[pk][nn] = parseFloat(es[r].slice(col + 1)); } } }\n    }\n    if (out.sys === undefined) { out.sys = 'metric'; }\n    if (out.edits === undefined) { out.edits = {}; }\n    return out;\n  }\n  return {NUTRIENTS: NUTRIENTS, PRODUCTS: PRODUCTS, DENSITY: DENSITY, SHORT_BELOW: SHORT_BELOW, OVER_ABOVE: OVER_ABOVE,\n          blendGrade: blendGrade, blendDensity: blendDensity,\n          delivered: delivered, objective: objective, solveBlend: solveBlend, rankBlends: rankBlends,\n          costPerHa: costPerHa, netNitrogenCost: netNitrogenCost, worksheetRemaining: worksheetRemaining,\n          missingSources: missingSources, equationText: equationText, encodeState: encodeState, decodeState: decodeState,\n          kgHaToLbAc: kgHaToLbAc, lbAcToKgHa: lbAcToKgHa, tToShortTon: tToShortTon, combinations: combinations};\n})();\n\/* GBC-BLEND-CORE END *\/\nvar KG_PER_SHORT_TON = 907.185, KG_PER_TONNE = 1000, AC_PER_HA = 2.471054, LB_PER_KG = 2.204623;\nvar IMPERIAL = {US: 1, CA: 1};\n\/* GBC-RATES BEGIN -- owned by scripts\/fetch-rates.js. Country -> [currency\n   symbol, units of that currency per US dollar]. Embedded rather than fetched\n   so the page stays dependency free (rule 4); the stamp in the markup is\n   written by the same job. *\/\nvar CUR = {\n  US: ['$', 1], CA: ['C$', 1.4161], BR: ['R$', 5.2077], AR: ['$', 1528.7563],\n  AU: ['A$', 1.4250], NZ: ['NZ$', 1.7654], GB: ['\\u00a3', 0.7545],\n  FR: ['\\u20ac', 0.8792], DE: ['\\u20ac', 0.8792], ES: ['\\u20ac', 0.8792],\n  IT: ['\\u20ac', 0.8792], PL: ['z\\u0142', 3.8440], UA: ['\\u20b4', 44.8192],\n  RO: ['lei', 4.6386], HU: ['Ft', 322.7465], KZ: ['\\u20b8', 440.6526],\n  RU: ['\\u20bd', 84.3688], ZA: ['R', 16.4107], IN: ['\\u20b9', 96.0699],\n  CN: ['\\u00a5', 6.7216], XX: ['$', 1],\n  AT: ['\\u20ac', 0.8792], BE: ['\\u20ac', 0.8792], NL: ['\\u20ac', 0.8792], IE: ['\\u20ac', 0.8792],\n  PT: ['\\u20ac', 0.8792], FI: ['\\u20ac', 0.8792], GR: ['\\u20ac', 0.8792], LT: ['\\u20ac', 0.8792],\n  LV: ['\\u20ac', 0.8792], EE: ['\\u20ac', 0.8792], SK: ['\\u20ac', 0.8792], SI: ['\\u20ac', 0.8792],\n  HR: ['\\u20ac', 0.8792], DK: ['kr', 6.5719], SE: ['kr', 9.9567], NO: ['kr', 9.5263],\n  CH: ['CHF', 0.8317], CZ: ['K\\u010d', 21.4481], BG: ['\\u043b\\u0432', 1.7199], RS: ['din', 103.3257],\n  TR: ['\\u20ba', 48.9975], MX: ['$', 17.8992], CL: ['$', 961.5140], CO: ['$', 3300.8665],\n  PY: ['\\u20b2', 5895.2270], UY: ['$U', 40.0835], PE: ['S\/', 3.4178], EG: ['E\\xa3', 52.0709],\n  MA: ['MAD', 9.6365], NG: ['\\u20a6', 1329.3759], KE: ['KSh', 129.5491], TZ: ['TSh', 2646.7189],\n  ET: ['Br', 162.3763], ZM: ['K', 19.6886], PK: ['\\u20a8', 276.9628], BD: ['\\u09f3', 123.0516],\n  TH: ['\\u0e3f', 33.5907], VN: ['\\u20ab', 25917.4260], ID: ['Rp', 17984.7657], PH: ['\\u20b1', 62.4998],\n  MY: ['RM', 4.0832], JP: ['\\xa5', 157.3151], KR: ['\\u20a9', 1358.9684], SA: ['SR', 3.7500],\n  IL: ['\\u20aa', 3.0695], UZ: ['sum', 11828.4795], BY: ['Br', 3.0258], MD: ['L', 17.7104],\n  GE: ['\\u20be', 2.6034],\n};\n\/* GBC-RATES END *\/\nvar BASE_USD_T = {urea: 400, uan32: 300, uan28: 280, an: 380, can: 360, as: 250, map: 650, dap: 620, app: 700, tsp: 480, ssp: 300, mop: 350, sop: 600, kno3: 900, kmag: 450, kies: 350, epsom: 400, sulfur: 350, gypsum: 60, cano3: 550, ps1533: 720, ps1240: 700, ps943: 740, ass: 480, nh3: 700};\nvar TZ_CC = {\n  'America\/Chicago': 'US', 'America\/New_York': 'US', 'America\/Los_Angeles': 'US', 'America\/Denver': 'US', 'America\/Phoenix': 'US',\n  'America\/Toronto': 'CA', 'America\/Winnipeg': 'CA', 'America\/Edmonton': 'CA', 'America\/Vancouver': 'CA', 'America\/Regina': 'CA', 'America\/Halifax': 'CA',\n  'America\/Sao_Paulo': 'BR', 'America\/Argentina\/Buenos_Aires': 'AR', 'America\/Mexico_City': 'MX', 'America\/Bogota': 'CO', 'America\/Lima': 'PE',\n  'America\/Santiago': 'CL', 'America\/Asuncion': 'PY', 'America\/Montevideo': 'UY',\n  'Europe\/London': 'GB', 'Europe\/Dublin': 'IE', 'Europe\/Paris': 'FR', 'Europe\/Berlin': 'DE', 'Europe\/Vienna': 'AT', 'Europe\/Zurich': 'CH',\n  'Europe\/Madrid': 'ES', 'Europe\/Lisbon': 'PT', 'Europe\/Rome': 'IT', 'Europe\/Amsterdam': 'NL', 'Europe\/Brussels': 'BE', 'Europe\/Copenhagen': 'DK',\n  'Europe\/Stockholm': 'SE', 'Europe\/Oslo': 'NO', 'Europe\/Helsinki': 'FI', 'Europe\/Warsaw': 'PL', 'Europe\/Prague': 'CZ', 'Europe\/Bratislava': 'SK',\n  'Europe\/Budapest': 'HU', 'Europe\/Ljubljana': 'SI', 'Europe\/Zagreb': 'HR', 'Europe\/Belgrade': 'RS', 'Europe\/Bucharest': 'RO', 'Europe\/Sofia': 'BG',\n  'Europe\/Athens': 'GR', 'Europe\/Vilnius': 'LT', 'Europe\/Riga': 'LV', 'Europe\/Tallinn': 'EE', 'Europe\/Kiev': 'UA', 'Europe\/Kyiv': 'UA',\n  'Europe\/Chisinau': 'MD', 'Europe\/Minsk': 'BY', 'Europe\/Moscow': 'RU', 'Europe\/Istanbul': 'TR', 'Asia\/Tbilisi': 'GE',\n  'Asia\/Almaty': 'KZ', 'Asia\/Tashkent': 'UZ', 'Asia\/Kolkata': 'IN', 'Asia\/Karachi': 'PK', 'Asia\/Dhaka': 'BD', 'Asia\/Shanghai': 'CN',\n  'Asia\/Tokyo': 'JP', 'Asia\/Seoul': 'KR', 'Asia\/Bangkok': 'TH', 'Asia\/Ho_Chi_Minh': 'VN', 'Asia\/Jakarta': 'ID', 'Asia\/Manila': 'PH',\n  'Asia\/Kuala_Lumpur': 'MY', 'Asia\/Riyadh': 'SA', 'Asia\/Jerusalem': 'IL',\n  'Africa\/Johannesburg': 'ZA', 'Africa\/Cairo': 'EG', 'Africa\/Casablanca': 'MA', 'Africa\/Lagos': 'NG', 'Africa\/Nairobi': 'KE',\n  'Africa\/Dar_es_Salaam': 'TZ', 'Africa\/Addis_Ababa': 'ET', 'Africa\/Lusaka': 'ZM',\n  'Australia\/Sydney': 'AU', 'Australia\/Melbourne': 'AU', 'Australia\/Brisbane': 'AU', 'Australia\/Perth': 'AU', 'Australia\/Adelaide': 'AU', 'Pacific\/Auckland': 'NZ'\n};\nfunction knownCC(v){ var cc = v ? String(v).toUpperCase() : ''; return CUR[cc] ? (cc !== 'XX' ? cc : null) : null; }\n\/\/ Region detection, same chain as the pricing page: 1 the visitor's saved\n\/\/ choice, 2 server-side geo when WordPress injects it, 3 browser language,\n\/\/ 4 time zone, 5 nothing known. IP geolocation refines it afterwards, async.\nfunction detectCountry(){\n  try { var saved = knownCC(localStorage.getItem('fbc-country')); if (saved) { return {cc: saved, via: 'saved'}; } } catch (e) {}\n  try { var gp = window.__GP_GEO; var srv = gp ? knownCC(gp.country) : null; if (srv) { return {cc: srv, via: 'server'}; } } catch (e) {}\n  var tz = '';\n  try { tz = Intl.DateTimeFormat().resolvedOptions().timeZone; } catch (e) { tz = ''; }\n  var tzc = TZ_CC[tz] ? TZ_CC[tz] : null;\n  try {\n    var langs = navigator.languages ? Array.prototype.slice.call(navigator.languages) : [];\n    if (navigator.language) { langs.push(navigator.language); }\n    for (var i = 0; i < langs.length; i++) {\n      var m = \/[-_]([A-Za-z]{2})(?:$|[-_])\/.exec(langs[i]);\n      var cc = m ? knownCC(m[1]) : null;\n      if (cc) {\n        \/\/ en-GB and en-US are common defaults far from Britain or the States;\n        \/\/ when the time zone points elsewhere, trust the clock.\n        if ((cc === 'GB' ? true : cc === 'US') ? (tzc ? tzc !== cc : false) : false) { return {cc: tzc, via: 'tz'}; }\n        return {cc: cc, via: 'lang'};\n      }\n    }\n  } catch (e) {}\n  if (tzc) { return {cc: tzc, via: 'tz'}; }\n  return {cc: 'XX', via: 'none'};\n}\n\/\/ Rule 4 exception, shared with the pricing page: one anonymous GET that\n\/\/ returns {country:\"XX\"}. Nothing the visitor typed is sent. Skipped once the\n\/\/ visitor has chosen a region themselves.\nfunction ipRefine(){\n  if (state.userChose) { return; }\n  try { if (localStorage.getItem('fbc-country')) { return; } } catch (e) {}\n  try {\n    fetch('https:\/\/api.country.is\/', {credentials: 'omit'})\n      .then(function(r){ return r.ok ? r.json() : null; })\n      .then(function(d){\n        if (state.userChose ? true : !d) { return; }\n        var cc = knownCC(d.country);\n        if (!cc) { return; }\n        if (cc === state.country) { showVia('ip'); return; }\n        state.country = cc; sel.value = cc; applyLocale(); showVia('ip'); renderWorksheet(); render();\n      })\n      .catch(function(){});\n  } catch (e) {}\n}\nfunction showVia(which){\n  var vias = root.querySelectorAll('.fbc-via');\n  for (var i = 0; i < vias.length; i++) { vias[i].hidden = vias[i].getAttribute('data-via') !== which; }\n}\nvar root = document.getElementById('gp-fbc');\nif (!root) { return; }\nvar tpl0 = document.getElementById('fbc-tpl');\nvar targetCells = document.querySelectorAll('#fbc-targets .fbc-cell');\nvar sixGroups = root.querySelectorAll('.fbc-six[data-six]');\nfor (var g = 0; g < sixGroups.length; g++) {\n  var pre = sixGroups[g].getAttribute('data-six'), vals = sixGroups[g].getAttribute('data-vals').split(' ');\n  for (var c = 0; c < targetCells.length; c++) {\n    var cell = targetCells[c].cloneNode(true), inp = cell.querySelector('input');\n    inp.id = pre + '-' + inp.getAttribute('data-n'); inp.step = sixGroups[g].getAttribute('data-step'); inp.value = vals[c];\n    sixGroups[g].appendChild(cell);\n  }\n}\nvar head = document.getElementById('fbc-anl-head');\nfor (var h = 0; h < targetCells.length; h++) { head.appendChild(targetCells[h].querySelector('.fbc-cell-l').cloneNode(true)); }\nvar tplLabels = tpl0.querySelectorAll('.fbc-an-l');\nfor (var tl = 0; tl < tplLabels.length; tl++) { tplLabels[tl].appendChild(targetCells[tl].querySelector('.fbc-cell-l').cloneNode(true)); }\nvar rows0 = root.querySelectorAll('.fbc-prod:not(.fbc-prod-head)');\nfor (var r0 = 0; r0 < rows0.length; r0++) {\n  var parts = tpl0.querySelector('.fbc-prod-parts'), a = rows0[r0].getAttribute('data-a').split(' ');\n  var anl = parts.querySelector('.fbc-anl').cloneNode(true), ins0 = anl.querySelectorAll('.fbc-an');\n  for (var q0 = 0; q0 < ins0.length; q0++) { ins0[q0].value = a[q0]; }\n  rows0[r0].appendChild(anl);\n  rows0[r0].appendChild(parts.querySelector('.fbc-pricecell').cloneNode(true));\n  rows0[r0].appendChild(parts.querySelector('.fbc-idle').cloneNode(true));\n}\nvar NUT = GBC.NUTRIENTS;\nvar state = {country: 'US', sys: 'imperial', sysOverride: null, chosen: [], field: 0, userChose: false};\nvar sel = document.getElementById('fbc-country');\nvar tip = document.getElementById('fbc-tip');\nvar results = document.getElementById('fbc-results');\nvar tpl = document.getElementById('fbc-tpl');\nvar prodRows = root.querySelectorAll('.fbc-prod:not(.fbc-prod-head)');\nvar TARGET_LABEL = {};\nroot.querySelectorAll('#fbc-targets .fbc-cell').forEach(function(c){ TARGET_LABEL[c.querySelector('input').getAttribute('data-n')] = c.querySelector('.fbc-cell-l'); });\nfunction num(el){ var v = parseFloat(el.value); return v > 0 ? v : 0; }\nfunction fmt(v, d){ return (Math.round(v * Math.pow(10, d)) \/ Math.pow(10, d)).toFixed(d); }\nfunction money(v){ var t = fmt(v, 0); return t.length > 4 ? t.replace(\/\\B(?=(\\d{3})+$)\/g, '\\u202f') : t; }\nfunction roundPrice(v){ var step = v < 1000 ? 5 : (v < 10000 ? 10 : (v < 100000 ? 100 : 1000)); return Math.round(v \/ step) * step; }\nfunction toKgHa(v){ return state.sys === 'imperial' ? GBC.lbAcToKgHa(v) : v; }\nfunction fromKgHa(v){ return state.sys === 'imperial' ? GBC.kgHaToLbAc(v) : v; }\nfunction fieldHa(){ return state.sys === 'imperial' ? state.field \/ AC_PER_HA : state.field; }\nfunction applyLocale(){\n  state.sys = state.sysOverride ? state.sysOverride : (IMPERIAL[state.country] ? 'imperial' : 'metric');\n  var segs = root.querySelectorAll('.fbc-seg-b');\n  for (var sg = 0; sg < segs.length; sg++) { segs[sg].classList.toggle('on', segs[sg].getAttribute('data-sys') === state.sys); }\n  var units = root.querySelectorAll('.fbc-u');\n  for (var i = 0; i < units.length; i++) { units[i].hidden = units[i].getAttribute('data-sys') !== state.sys; }\n  var c = CUR[state.country] ? CUR[state.country] : CUR.XX;\n  var curs = root.querySelectorAll('.fbc-cur');\n  for (var j = 0; j < curs.length; j++) { curs[j].textContent = c[0]; }\n  for (var r = 0; r < prodRows.length; r++) {\n    var key = prodRows[r].getAttribute('data-p');\n    if (BASE_USD_T[key] === undefined) { continue; }\n    var perT = BASE_USD_T[key] * c[1];\n    prodRows[r].querySelector('.fbc-price').value = roundPrice(state.sys === 'imperial' ? perT * KG_PER_SHORT_TON \/ KG_PER_TONNE : perT);\n  }\n}\n\/\/ The unit switch changes how the same figures are written, so every entered\n\/\/ rate, price and area is converted in place rather than reset.\nfunction switchUnits(to){\n  var from = state.sys;\n  if (to === from) { return; }\n  var rate = to === 'imperial' ? GBC.kgHaToLbAc(1) : GBC.lbAcToKgHa(1);\n  var mass = to === 'imperial' ? KG_PER_SHORT_TON \/ KG_PER_TONNE : KG_PER_TONNE \/ KG_PER_SHORT_TON;   \/\/ price per tonne <-> per short ton\n  var area = to === 'imperial' ? AC_PER_HA : 1 \/ AC_PER_HA;\n  var rateIds = ['fbc-t', 'fbc-n', 'fbc-ap1', 'fbc-ap2', 'fbc-ap3'];\n  for (var g = 0; g < rateIds.length; g++) {\n    for (var n = 0; n < NUT.length; n++) { var el = document.getElementById(rateIds[g] + '-' + NUT[n]); if (num(el) > 0) { el.value = fmt(num(el) * rate, 1).replace(\/[.]0$\/, ''); } }\n  }\n  var leg = document.getElementById('fbc-leg'); if (num(leg) > 0) { leg.value = fmt(num(leg) * rate, 0); }\n  var amt = document.getElementById('fbc-m-amt'); if (num(amt) > 0) { amt.value = fmt(num(amt) * (to === 'imperial' ? 1 \/ (0.907185 * AC_PER_HA) : 0.907185 * AC_PER_HA), 2); }\n  var fld = document.getElementById('fbc-field'); if (num(fld) > 0) { fld.value = fmt(num(fld) * area, 0); state.field = num(fld); }\n  for (var r = 0; r < prodRows.length; r++) { var pr = prodRows[r].querySelector('.fbc-price'); if (num(pr) > 0) { pr.value = roundPrice(num(pr) * mass); } }\n  state.sysOverride = to;\n  state.sys = to;\n  var segs = root.querySelectorAll('.fbc-seg-b');\n  for (var sg = 0; sg < segs.length; sg++) { segs[sg].classList.toggle('on', segs[sg].getAttribute('data-sys') === to); }\n  var units = root.querySelectorAll('.fbc-u');\n  for (var i = 0; i < units.length; i++) { units[i].hidden = units[i].getAttribute('data-sys') !== to; }\n  renderWorksheet(); render();\n}\nfunction pricePerKg(row){\n  var v = num(row.querySelector('.fbc-price'));\n  if (!(v > 0)) { return 0; }\n  return state.sys === 'imperial' ? v \/ KG_PER_SHORT_TON : v \/ KG_PER_TONNE;\n}\nfunction productFromRow(row){\n  var key = row.getAttribute('data-p'), p = {key: key};\n  var ins = row.querySelectorAll('.fbc-an');\n  for (var i = 0; i < ins.length; i++) { p[ins[i].getAttribute('data-n')] = num(ins[i]); }\n  return p;\n}\nfunction readTargets(){\n  var t = {};\n  for (var i = 0; i < NUT.length; i++) { t[NUT[i]] = toKgHa(num(document.getElementById('fbc-t-' + NUT[i]))); }\n  return t;\n}\nfunction six(prefix){\n  var o = {};\n  for (var i = 0; i < NUT.length; i++) { o[NUT[i]] = num(document.getElementById(prefix + '-' + NUT[i])); }\n  return o;\n}\nfunction renderWorksheet(){\n  var need = six('fbc-n'), an = six('fbc-ma'), av = six('fbc-av');\n  for (var k in need) { if (Object.prototype.hasOwnProperty.call(need, k)) { need[k] = toKgHa(need[k]); } }\n  var apps = [six('fbc-ap1'), six('fbc-ap2'), six('fbc-ap3')];\n  for (var a = 0; a < apps.length; a++) { for (var k2 in apps[a]) { if (Object.prototype.hasOwnProperty.call(apps[a], k2)) { apps[a][k2] = toKgHa(apps[a][k2]); } } }\n  var amt = num(document.getElementById('fbc-m-amt'));\n  var amtTHa = state.sys === 'imperial' ? amt * 0.907185 * AC_PER_HA : amt;   \/\/ tons\/ac -> t\/ha\n  var unit = document.getElementById('fbc-m-unit').value;\n  if (unit === 'kgpt' ? state.sys === 'imperial' : false) { for (var k3 in an) { if (Object.prototype.hasOwnProperty.call(an, k3)) { an[k3] = an[k3] \/ 2; } } }  \/\/ lb\/ton -> kg\/t approx (2000 lb per short ton, 2.2046 lb per kg)\n  var rem = GBC.worksheetRemaining(need, {manure: {analysis: an, unit: unit, amountTHa: amtTHa, availability: av},\n                                         legumeN: toKgHa(num(document.getElementById('fbc-leg'))), applied: apps});\n  var cells = root.querySelectorAll('.fbc-rem-v');\n  for (var i = 0; i < cells.length; i++) { var remV = fromKgHa(rem[cells[i].getAttribute('data-n')]); cells[i].textContent = fmt(remV, 0); }\n  return rem;\n}\nfunction render(){\n  var targets = readTargets();\n  var anyTarget = false;\n  for (var i = 0; i < NUT.length; i++) { if (targets[NUT[i]] > 0) { anyTarget = true; } }\n  var chosen = [], prices = {};\n  for (var r = 0; r < prodRows.length; r++) {\n    var on = prodRows[r].querySelector('.fbc-pick').checked;\n    prodRows[r].classList.toggle('on', on);\n    var idleEl = prodRows[r].querySelector('.fbc-idle');\n    if (on) {\n      var p = productFromRow(prodRows[r]); chosen.push(p); prices[p.key] = pricePerKg(prodRows[r]);\n      var useful = false;\n      for (var un = 0; un < NUT.length; un++) { if (targets[NUT[un]] > 0 ? p[NUT[un]] > 0 : false) { useful = true; } }\n      idleEl.hidden = useful;\n      prodRows[r].classList.toggle('idle', !useful);\n    } else { idleEl.hidden = true; prodRows[r].classList.remove('idle'); }\n  }\n  root.querySelector('.fbc-count-v').textContent = String(chosen.length);\n  results.innerHTML = '';\n  var none = document.getElementById('fbc-none'), empty = document.getElementById('fbc-empty');\n  none.hidden = !(chosen.length === 0 ? true : !anyTarget);\n  empty.hidden = true;\n  if (!none.hidden) { return; }\n  var missing = GBC.missingSources(chosen, targets);\n  if (missing.length) {\n    var slot = empty.querySelector('.fbc-missing'); slot.innerHTML = '';\n    for (var m = 0; m < missing.length; m++) {\n      if (m > 0) { slot.appendChild(document.createTextNode(', ')); }\n      slot.appendChild(TARGET_LABEL[missing[m]].cloneNode(true));\n    }\n    empty.hidden = false; return;\n  }\n  var anyPrice = false;\n  for (var pk in prices) { if (Object.prototype.hasOwnProperty.call(prices, pk)) { if (prices[pk] > 0) { anyPrice = true; } } }\n  var blends = GBC.rankBlends(chosen, targets, anyPrice ? prices : null, {maxProducts: 4, top: 10});\n  var c = CUR[state.country] ? CUR[state.country] : CUR.XX;\n  for (var b = 0; b < blends.length; b++) {\n    var bl = blends[b];\n    var node = tpl.querySelector('.fbc-res').cloneNode(true);\n    node.classList.toggle('best', b === 0);\n    node.querySelector('.fbc-rank').textContent = (b + 1) + '.';\n    if (bl.cost !== null) {\n      var costShown = state.sys === 'imperial' ? bl.cost \/ AC_PER_HA : bl.cost;\n      node.querySelector('.fbc-cost').textContent = money(costShown);\n      node.querySelector('.fbc-cost-wrap').hidden = false;\n      var netN = GBC.netNitrogenCost(bl, prices, targets);\n      \/\/ The line means nothing on a blend whose nitrogen is a by-product of the\n      \/\/ phosphate (P valued above the compound's price, so nothing is left).\n      if (netN !== null ? (targets.N > 0 ? netN > 0 : false) : false) {\n        var netShown = state.sys === 'imperial' ? netN \/ LB_PER_KG : netN;\n        node.querySelector('.fbc-netn').textContent = fmt(netShown, 2);\n        node.querySelector('.fbc-netn-wrap').hidden = false;\n      }\n    }\n    var prodsBox = node.querySelector('.fbc-res-products');\n    for (var q = 0; q < bl.products.length; q++) {\n      var row = root.querySelector('.fbc-prod[data-p=\"' + bl.products[q].key + '\"]');\n      var rp = tpl.querySelector('.fbc-rp').cloneNode(true);\n      var nameNode = row.querySelector('.fbc-pn');\n      var name = nameNode.tagName === 'INPUT' ? document.createTextNode(nameNode.value ? nameNode.value : '?') : nameNode.cloneNode(true);\n      rp.insertBefore(document.createTextNode(' '), rp.firstChild);\n      rp.insertBefore(name, rp.firstChild);\n      rp.querySelector('.fbc-rp-v').textContent = fmt(fromKgHa(bl.rates[q]), 0);\n      rp.setAttribute('data-i', String(q));\n      prodsBox.appendChild(rp);\n    }\n    var cells = node.querySelectorAll('.fbc-nc');\n    for (var n = 0; n < cells.length; n++) {\n      var nk = cells[n].getAttribute('data-n');\n      cells[n].querySelector('.fbc-del').textContent = fmt(fromKgHa(bl.delivered[nk]), 0);\n      cells[n].querySelector('.fbc-tgt').textContent = fmt(fromKgHa(targets[nk]), 0);\n      var flags = cells[n].querySelectorAll('.fbc-flag');\n      for (var f = 0; f < flags.length; f++) { flags[f].hidden = flags[f].getAttribute('data-f') !== bl.flags[nk]; }\n      cells[n].querySelector('.fbc-nc-t').hidden = !(targets[nk] > 0);\n    }\n    var grade = GBC.blendGrade(bl);\n    node.querySelector('.fbc-grade').textContent = fmt(grade.N, 0) + '-' + fmt(grade.P, 0) + '-' + fmt(grade.K, 0) + '-' + fmt(grade.S, 0);\n    var dens = GBC.blendDensity(bl);\n    if (dens !== null) {\n      var densShown = state.sys === 'imperial' ? dens \/ 16.0185 : dens;\n      node.querySelector('.fbc-dens').textContent = fmt(densShown, 0);\n      node.querySelector('.fbc-dens-wrap').hidden = false;\n    }\n    if (state.field > 0) {\n      var fbox = node.querySelector('.fbc-res-field'); fbox.hidden = false;\n      if (dens !== null) {\n        var massKg = 0;\n        for (var qm = 0; qm < bl.rates.length; qm++) { massKg += bl.rates[qm]; }\n        var m3 = massKg * fieldHa() \/ dens;\n        var volShown = state.sys === 'imperial' ? m3 * 35.3147 : m3;\n        fbox.querySelector('.fbc-fvol').textContent = money(volShown);\n        fbox.querySelector('.fbc-fvol-wrap').hidden = false;\n      }\n      fbox.querySelector('.fbc-fsize').textContent = fmt(state.field, 0);\n      var tot = fbox.querySelector('.fbc-ftot'); tot.innerHTML = '';\n      for (var q2 = 0; q2 < bl.products.length; q2++) {\n        var tonnes = bl.rates[q2] * fieldHa() \/ 1000;\n        var ft = tpl.querySelector('.fbc-ft').cloneNode(true);\n        var row2 = root.querySelector('.fbc-prod[data-p=\"' + bl.products[q2].key + '\"]');\n        var nn = row2.querySelector('.fbc-pn');\n        ft.insertBefore(document.createTextNode(' '), ft.firstChild);\n        ft.insertBefore(nn.tagName === 'INPUT' ? document.createTextNode(nn.value ? nn.value : '?') : nn.cloneNode(true), ft.firstChild);\n        var massShown = state.sys === 'imperial' ? GBC.tToShortTon(tonnes) : tonnes;\n        ft.querySelector('.fbc-ft-v').textContent = fmt(massShown, 1);\n        if (q2 > 0) { tot.appendChild(document.createTextNode(', ')); }\n        tot.appendChild(ft);\n      }\n      if (bl.cost !== null) {\n        fbox.querySelector('.fbc-fcost').textContent = money(bl.cost * fieldHa());\n        fbox.querySelector('.fbc-fcost-wrap').hidden = false;\n      }\n    }\n    (function(blend, nd){\n      nd.querySelector('.fbc-copy-eq').addEventListener('click', function(){\n        copyText(GBC.equationText(blend, targets), nd.querySelector('.fbc-copied'));\n      });\n      var rps = nd.querySelectorAll('.fbc-rp');\n      for (var z = 0; z < rps.length; z++) {\n        rps[z].addEventListener('mousemove', function(ev){ showRateTip(ev.currentTarget, blend, ev.clientX, ev.clientY); });\n        rps[z].addEventListener('mouseleave', function(){ tip.hidden = true; });\n      }\n    })(bl, node);\n    results.appendChild(node);\n  }\n  var unitsNew = results.querySelectorAll('.fbc-u');\n  for (var u = 0; u < unitsNew.length; u++) { unitsNew[u].hidden = unitsNew[u].getAttribute('data-sys') !== state.sys; }\n  var cursNew = results.querySelectorAll('.fbc-cur');\n  for (var cc = 0; cc < cursNew.length; cc++) { cursNew[cc].textContent = c[0]; }\n}\n\/\/ Tooltip: the arithmetic behind a product rate, built from numbers and the\n\/\/ static nutrient symbols only.\nfunction showRateTip(el, blend, cx, cy){\n  var i = parseInt(el.getAttribute('data-i'), 10);\n  var p = blend.products[i], rate = blend.rates[i];\n  tip.innerHTML = '';\n  var first = true;\n  for (var j = 0; j < NUT.length; j++) {\n    var n = NUT[j];\n    if (p[n] > 0) {\n      if (!first) { tip.appendChild(document.createElement('br')); }\n      first = false;\n      tip.appendChild(document.createTextNode(fmt(fromKgHa(rate), 0) + ' \\u00d7 ' + p[n] + '% = ' + fmt(fromKgHa(rate * p[n] \/ 100), 1) + ' '));\n      tip.appendChild(TARGET_LABEL[n].cloneNode(true));\n    }\n  }\n  tip.hidden = false;\n  var box = root.getBoundingClientRect();\n  var x = cx - box.left + 14, y = cy - box.top + 14;\n  if (x + tip.offsetWidth > box.width - 8) { x = box.width - tip.offsetWidth - 8; }\n  tip.style.left = x + 'px'; tip.style.top = y + 'px';\n}\nfunction copyText(text, okEl){\n  var done = function(){ okEl.hidden = false; setTimeout(function(){ okEl.hidden = true; }, 1800); };\n  if (navigator.clipboard ? navigator.clipboard.writeText : false) { navigator.clipboard.writeText(text).then(done, function(){}); return; }\n  var ta = document.createElement('textarea'); ta.value = text; ta.setAttribute('readonly', ''); ta.style.position = 'absolute'; ta.style.left = '-9999px';\n  document.body.appendChild(ta); ta.select();\n  try { document.execCommand('copy'); done(); } catch (e) {}\n  document.body.removeChild(ta);\n}\nfunction currentState(){\n  var keys = [], prices = {}, edits = {};\n  for (var r = 0; r < prodRows.length; r++) {\n    if (!prodRows[r].querySelector('.fbc-pick').checked) { continue; }\n    var key = prodRows[r].getAttribute('data-p'); keys.push(key);\n    prices[key] = num(prodRows[r].querySelector('.fbc-price'));\n    var base = null;\n    for (var b = 0; b < GBC.PRODUCTS.length; b++) { if (GBC.PRODUCTS[b].key === key) { base = GBC.PRODUCTS[b]; } }\n    var p = productFromRow(prodRows[r]);\n    for (var j = 0; j < NUT.length; j++) {\n      var n = NUT[j];\n      if (base === null ? p[n] > 0 : p[n] !== base[n]) { if (!edits[key]) { edits[key] = {}; } edits[key][n] = p[n]; }\n    }\n  }\n  var t = {};\n  for (var i = 0; i < NUT.length; i++) { t[NUT[i]] = num(document.getElementById('fbc-t-' + NUT[i])); }\n  return {t: t, keys: keys, prices: prices, field: state.field, sys: state.sys, edits: edits, country: state.country};\n}\nfunction restoreState(st){\n  if (st.country ? CUR[st.country] : false) { state.country = st.country; sel.value = st.country; }\n  if (st.sys === 'metric' ? true : st.sys === 'imperial') { state.sysOverride = st.sys; }\n  applyLocale();\n  for (var i = 0; i < NUT.length; i++) { document.getElementById('fbc-t-' + NUT[i]).value = st.t[NUT[i]] ? st.t[NUT[i]] : 0; }\n  for (var r = 0; r < prodRows.length; r++) {\n    var key = prodRows[r].getAttribute('data-p');\n    var on = st.keys.indexOf(key) >= 0;\n    prodRows[r].querySelector('.fbc-pick').checked = on;\n    if (on ? st.prices[key] !== undefined : false) { prodRows[r].querySelector('.fbc-price').value = st.prices[key]; }\n    if (st.edits[key]) { var ins = prodRows[r].querySelectorAll('.fbc-an'); for (var q = 0; q < ins.length; q++) { var n = ins[q].getAttribute('data-n'); if (st.edits[key][n] !== undefined) { ins[q].value = st.edits[key][n]; } } }\n  }\n  if (st.field) { state.field = st.field; document.getElementById('fbc-field').value = st.field; }\n}\nsel.addEventListener('change', function(){ state.country = sel.value; state.userChose = true; try { localStorage.setItem('fbc-country', sel.value); } catch (e) {} applyLocale(); showVia('saved'); renderWorksheet(); render(); });\nroot.addEventListener('input', function(ev){\n  var t = ev.target;\n  if (t.id === 'fbc-field') { state.field = num(t); }\n  if (t.closest('#fbc-ws')) { renderWorksheet(); }\n  render();\n});\nroot.addEventListener('change', function(ev){\n  if (ev.target.classList.contains('fbc-pick') ? ev.target.closest('.fbc-prod') : false) {\n    var count = root.querySelectorAll('.fbc-prod .fbc-pick:checked').length;\n    var cap = document.getElementById('fbc-cap');\n    if (count > 8) { ev.target.checked = false; cap.hidden = false; } else { cap.hidden = true; }\n    render();\n  }\n  if (ev.target.id === 'fbc-surface') {\n    document.getElementById('fbc-av-N').value = ev.target.checked ? 50 : 60; renderWorksheet();\n  }\n  if (ev.target.id === 'fbc-m-unit') { renderWorksheet(); }\n});\ndocument.getElementById('fbc-ws-toggle').addEventListener('click', function(){\n  var ws = document.getElementById('fbc-ws'); ws.hidden = !ws.hidden; if (!ws.hidden) { renderWorksheet(); }\n});\ndocument.getElementById('fbc-use-rem').addEventListener('click', function(){\n  var rem = renderWorksheet();\n  for (var i = 0; i < NUT.length; i++) { document.getElementById('fbc-t-' + NUT[i]).value = fmt(fromKgHa(rem[NUT[i]]), 0); }\n  render();\n});\ndocument.getElementById('fbc-seg').addEventListener('click', function(ev){\n  var b = ev.target.closest('.fbc-seg-b'); if (b) { switchUnits(b.getAttribute('data-sys')); }\n});\ndocument.getElementById('fbc-print').addEventListener('click', function(){ window.print(); });\ndocument.getElementById('fbc-share').addEventListener('click', function(){\n  var q = '?b=' + encodeURIComponent(GBC.encodeState(currentState()));\n  try { window.history.replaceState(null, '', window.location.pathname + q + window.location.hash); } catch (e) {}\n  copyText(window.location.href.split('?')[0] + q, document.getElementById('fbc-share-ok'));\n});\ndocument.addEventListener('keydown', function(ev){ if (ev.key === 'Escape') { tip.hidden = true; } });\nvar det = detectCountry();\nstate.country = det.cc; sel.value = state.country;\napplyLocale(); showVia(det.via);\nvar qs = \/[?]b=([^#]+)\/.exec(window.location.search);\nif (qs) { try { restoreState(GBC.decodeState(decodeURIComponent(qs[1]))); state.userChose = true; showVia('link'); } catch (e) {} }\nelse {\n  ipRefine();\n  \/\/ a sensible first view: the worked example from the page copy\n  ['urea', 'map', 'mop'].forEach(function(k){ root.querySelector('.fbc-prod[data-p=\"' + k + '\"] .fbc-pick').checked = true; });\n}\nrender();\n})();\n<\/script>\n<\/div>\n\n\n\n<div class=\"gp-lead\">\n<style>\n.gp-lead .fbcx{--f:\"Roboto\",-apple-system,\"Segoe UI\",Helvetica,Arial,sans-serif;font-family:var(--f);color:#212121;max-width:820px;margin:28px auto 8px;padding:0 4px;line-height:1.6}\n.gp-lead .fbcx h2{font-family:var(--f);font-size:1.35rem;font-weight:700;color:#145328;margin:26px 0 8px}\n.gp-lead .fbcx p{margin:0 0 12px;font-size:1.02rem;color:#212121}\n.gp-lead .fbcx-shots{display:grid;grid-template-columns:1fr;gap:14px;margin:18px 0 0}\n.gp-lead .fbcx-shot{margin:0;padding:10px;background:#ffffff;border:1px solid #e3e7da;border-radius:8px}\n.gp-lead .fbcx-img{display:block;width:100%;height:auto;max-width:100%;border-radius:4px;border:1px solid #e3e7da}\n.gp-lead .fbcx-shot figcaption{margin-top:8px;font-size:.88rem;color:#4c6066;line-height:1.5}\n.gp-lead .fbcx-fig{margin:18px 0 0;padding:14px;background:#eef4e8;border:1px solid #e3e7da;border-radius:8px}\n.gp-lead .fbcx-fig svg{display:block;width:100%;height:auto;max-width:100%}\n.gp-lead .fbcx-fig figcaption{margin-top:8px;font-size:.88rem;color:#4c6066;text-align:center}\n.gp-lead .fbcx .z1{fill:#c6dcae}.gp-lead .fbcx .z2{fill:#93bd79}.gp-lead .fbcx .z3{fill:#3f7d36}\n.gp-lead .fbcx .bx{fill:#ffffff;stroke:#e4eedd;stroke-width:1}\n.gp-lead .fbcx .tx{font-family:var(--f);font-size:11px;fill:#212121}\n.gp-lead .fbcx .th{font-family:var(--f);font-size:11px;font-weight:700;fill:#145328}\n.gp-lead .fbcx .thw{fill:#ffffff}\n.gp-lead .fbcx .ar{stroke:#708086;stroke-width:1.6;fill:none}\n.gp-lead .fbcx .tm-body{fill:#212121}.gp-lead .fbcx .tm-screen{fill:#ffffff}.gp-lead .fbcx .tm-mount{fill:#708086}.gp-lead .fbcx .tm-key{fill:#708086}\n<\/style>\n<div class=\"fbcx\">\n  <h2>How a fertilizer blend is calculated<\/h2>\n  <p>A blend is a set of products applied together so that their nutrients add up to what the crop needs. Each product carries a fixed analysis: urea is 46 percent nitrogen, MAP is 11 percent nitrogen and 52 percent phosphate, muriate of potash is 60 percent potash. To hit 150 kg of nitrogen, 60 kg of phosphate and 60 kg of potash per hectare you need 100 kg of potash for the K\u2082O, 115 kg of MAP for the P\u2082O\u2085, and then only 298 kg of urea, because the MAP already brought 13 kg of nitrogen with it.<\/p>\n  <p>That credit is the whole point of calculating instead of guessing. Every compound product brings a second or third nutrient along, and a blend that ignores it overspends on the one you priced first. The calculator tries every combination of up to four of the products you tick and shows the ones that come closest, flagging any nutrient that lands short or well over.<\/p>\n  <h2>Credits before you buy<\/h2>\n  <p>Manure, a legume in the rotation and anything already applied this season all count against the seasonal need. The worksheet takes each of them and hands the remainder to the targets. Availability matters here: only part of the nitrogen in manure reaches the crop in the first year, so the worksheet starts from typical extension figures and lets you overwrite them with your lab's.<\/p>\n  <h2>What nitrogen really costs in a compound<\/h2>\n  <p>When a blend includes MAP or DAP, part of what you pay for nitrogen is really paying for phosphate. The calculator values the P\u2082O\u2085 and K\u2082O in each blend at the price of the straight products, subtracts that, and shows the cost of the nitrogen that is left. It is the fair way to compare a compound against straight urea.<\/p>\n  <h2>From one blend to a prescription map<\/h2>\n  <p>A blend is one rate for the whole field. Turning it into a prescription map is one step in GeoPard, and the map can take two shapes. A <b>flat rate<\/b> writes the blend you picked across the whole field as a file your terminal reads; use it where the field is even or where you want the blend on the ground this week. A <b>variable rate<\/b> map lets each zone carry its own rate: an equation over the soil test and yield layers works out the nutrient each zone lacks most, sets the rate zone by zone, converts it to product with the same analyses used here, and exports the map. Fields are rarely uniform, one zone short of potash and the next fine on potash and short of phosphate, so this is where the blend starts paying for itself.<\/p>\n  <p>Either way the products, analyses and prices come straight from the blend you ranked here. The Copy as GeoPard equation button on any blend gives you the variable-rate equation with your products already filled in.<\/p>\n  <div class=\"fbcx-shots\">\n    <figure class=\"fbcx-shot\"><img loading=\"lazy\" class=\"fbcx-img\" src=\"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1\" srcset=\"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=600&amp;quality=88&amp;ssl=1 600w, https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1 1200w, https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1600&amp;quality=88&amp;ssl=1 1600w\" sizes=\"auto, (max-width:820px) 92vw, 820px\" width=\"3970\" height=\"2292\" loading=\"lazy\" decoding=\"async\" alt=\"GeoPard prescription map: DAP rate per zone on an 84 acre field, five zones from 55 to 77 kg\/ha, with the rate distribution chart and the saving against the highest rate\">\n      <figcaption>Prescription map in GeoPard: one DAP rate per zone, 55 to 77 kg\/ha across five zones, with the tonnes per zone and the saving against a flat highest rate. Export goes to the terminal.<\/figcaption><\/figure>\n    <figure class=\"fbcx-shot\"><img loading=\"lazy\" class=\"fbcx-img\" src=\"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2022\/10\/GeoPard-Potassium-Use-Efficiency.png?w=1200&amp;quality=88&amp;ssl=1\" srcset=\"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2022\/10\/GeoPard-Potassium-Use-Efficiency.png?w=600&amp;quality=88&amp;ssl=1 600w, https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2022\/10\/GeoPard-Potassium-Use-Efficiency.png?w=1200&amp;quality=88&amp;ssl=1 1200w, https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2022\/10\/GeoPard-Potassium-Use-Efficiency.png?w=1600&amp;quality=88&amp;ssl=1 1600w\" sizes=\"auto, (max-width:820px) 92vw, 820px\" width=\"1600\" height=\"922\" loading=\"lazy\" decoding=\"async\" alt=\"GeoPard equation map: potassium use efficiency per 30 metre cell, computed from the yield layer and the potash applied, with the equation shown beside the map\">\n      <figcaption>Equation map: potassium use efficiency per 30 m cell, worked out from the yield layer and the potash applied. The equation sits beside the map and can be edited in place.<\/figcaption><\/figure>\n  <\/div>\n  <figure class=\"fbcx-fig\">\n    <svg viewBox=\"0 0 760 156\" role=\"img\" aria-labelledby=\"fbcx-t\">\n      <title id=\"fbcx-t\">Field zones to nutrient rates to product rates to the in-cab terminal showing the same zones<\/title>\n      <path class=\"z1\" d=\"M12 30 L150 22 L160 90 L20 100 Z\"\/>\n      <path class=\"z2\" d=\"M20 100 L160 90 L165 150 L30 158 Z\"\/>\n      <path class=\"z3\" d=\"M150 22 L200 26 L205 148 L165 150 L160 90 Z\"\/>\n      <text class=\"th\" x=\"60\" y=\"66\">Zone 1<\/text><text class=\"th\" x=\"70\" y=\"132\">Zone 2<\/text><text class=\"th thw\" x=\"160\" y=\"90\">Zone 3<\/text>\n      <path class=\"ar\" d=\"M212 88 L246 88 M240 82 L246 88 L240 94\"\/>\n      <rect class=\"bx\" x=\"252\" y=\"22\" width=\"150\" height=\"130\" rx=\"6\"\/>\n      <text class=\"th\" x=\"262\" y=\"42\">Nutrient rate<\/text>\n      <text class=\"tx\" x=\"262\" y=\"66\">Zone 1<\/text><text class=\"tx\" x=\"322\" y=\"66\">N 120<\/text><text class=\"tx\" x=\"362\" y=\"66\">K 40<\/text>\n      <text class=\"tx\" x=\"262\" y=\"92\">Zone 2<\/text><text class=\"tx\" x=\"322\" y=\"92\">N 150<\/text><text class=\"tx\" x=\"362\" y=\"92\">K 80<\/text>\n      <text class=\"tx\" x=\"262\" y=\"118\">Zone 3<\/text><text class=\"tx\" x=\"322\" y=\"118\">N 170<\/text><text class=\"tx\" x=\"362\" y=\"118\">K 60<\/text>\n      <text class=\"tx\" x=\"262\" y=\"142\">kg\/ha<\/text>\n      <path class=\"ar\" d=\"M408 88 L442 88 M436 82 L442 88 L436 94\"\/>\n      <rect class=\"bx\" x=\"448\" y=\"22\" width=\"178\" height=\"130\" rx=\"6\"\/>\n      <text class=\"th\" x=\"458\" y=\"42\">Product rate<\/text>\n      <text class=\"tx\" x=\"458\" y=\"66\">Zone 1<\/text><text class=\"tx\" x=\"518\" y=\"66\">Urea 233<\/text><text class=\"tx\" x=\"578\" y=\"66\">MOP 67<\/text>\n      <text class=\"tx\" x=\"458\" y=\"92\">Zone 2<\/text><text class=\"tx\" x=\"518\" y=\"92\">Urea 298<\/text><text class=\"tx\" x=\"578\" y=\"92\">MOP 133<\/text>\n      <text class=\"tx\" x=\"458\" y=\"118\">Zone 3<\/text><text class=\"tx\" x=\"518\" y=\"118\">Urea 342<\/text><text class=\"tx\" x=\"578\" y=\"118\">MOP 100<\/text>\n      <text class=\"tx\" x=\"458\" y=\"142\">kg\/ha<\/text>\n      <path class=\"ar\" d=\"M630 88 L656 88 M650 82 L656 88 L650 94\"\/>\n      <rect class=\"tm-mount\" x=\"702\" y=\"112\" width=\"10\" height=\"16\" rx=\"2\"\/>\n      <rect class=\"tm-mount\" x=\"688\" y=\"126\" width=\"38\" height=\"5\" rx=\"2\"\/>\n      <rect class=\"tm-body\" x=\"660\" y=\"38\" width=\"96\" height=\"78\" rx=\"6\"\/>\n      <rect class=\"tm-screen\" x=\"668\" y=\"46\" width=\"80\" height=\"56\" rx=\"3\"\/>\n      <path class=\"z1\" d=\"M672 54.7 L723.5 52 L727.2 75 L675 78.4 Z\"\/>\n      <path class=\"z2\" d=\"M675 78.4 L727.2 75 L729 95.3 L678.7 98 Z\"\/>\n      <path class=\"z3\" d=\"M723.5 52 L742.1 53.4 L744 94.6 L729 95.3 L727.2 75 Z\"\/>\n      <circle class=\"tm-key\" cx=\"740\" cy=\"109\" r=\"2.2\"\/>\n      <circle class=\"tm-key\" cx=\"731\" cy=\"109\" r=\"2.2\"\/>\n      <text class=\"th\" x=\"680\" y=\"146\">Terminal<\/text>\n    <\/svg>\n    <figcaption>One field, three zones, three rates from one blend, one file for the spreader. Flat rate: the same chain with one zone.<\/figcaption>\n  <\/figure>\n<\/div>\n<\/div>\n\n\n\n<!-- GENERATED by scripts\/make_faq.py from tools\/fertilizer-blend-calculator\/faq.json. Do not hand-edit. -->\n<div class=\"gp-lead\">\n<style>\n.gp-lead .gpx-faq{margin:36px 0 8px}\n.gp-lead .gpx-faq h2{text-align:center;margin:0 0 20px;font-size:1.6rem}\n.gp-lead .gpx-tabs{border:1px solid #e8ebe2;border-radius:16px;overflow:hidden;background:#fff}\n.gp-lead .gpx-tablist{display:flex;gap:0;background:#f6f7f1;border-bottom:1px solid #e8ebe2;overflow-x:auto;scrollbar-width:none}\n.gp-lead .gpx-tablist::-webkit-scrollbar{display:none}\n.gp-lead .gpx-tab{flex:1 1 auto;min-width:max-content;background:transparent;border:0;padding:16px 22px;font-family:inherit;font-size:.95rem;font-weight:700;color:#4c6066;cursor:pointer;border-bottom:3px solid transparent;white-space:nowrap}\n.gp-lead .gpx-tab:hover{color:#145328;background:#f0f4ea}\n.gp-lead .gpx-tab[aria-selected=\"true\"]{color:#145328;border-bottom-color:#15701e;background:#fff}\n.gp-lead .gpx-tab:focus{outline:2px solid #15701e;outline-offset:-2px}\n.gp-lead .gpx-panel{padding:28px 32px;display:none}\n.gp-lead .gpx-panel.is-active{display:block}\n.gp-lead .gpx-panel h3{margin:0 0 10px;font-size:1.12rem;color:#212121}\n.gp-lead .gpx-panel p{margin:0;line-height:1.7;color:#243024;font-size:1rem}\n.gp-lead .gpx-panel p+p{margin-top:10px}\n@media (max-width:760px){\n  .gp-lead .gpx-panel{padding:22px 20px}\n  .gp-lead .gpx-tab{padding:14px 16px;font-size:.9rem}\n}\n<\/style>\n<section class=\"gpx-faq\" aria-labelledby=\"gpx-faq-h\">\n  <h2 id=\"gpx-faq-h\">Frequently asked questions<\/h2>\n  <div class=\"gpx-tabs\">\n    <div class=\"gpx-tablist\" role=\"tablist\" aria-label=\"Fertilizer Blend Calculator FAQ\">\n      <button class=\"gpx-tab\" role=\"tab\" id=\"gpx-tab-1\" aria-controls=\"gpx-panel-1\" aria-selected=\"true\" tabindex=\"0\">Reading the ranking<\/button>\n      <button class=\"gpx-tab\" role=\"tab\" id=\"gpx-tab-2\" aria-controls=\"gpx-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Co-nutrients<\/button>\n      <button class=\"gpx-tab\" role=\"tab\" id=\"gpx-tab-3\" aria-controls=\"gpx-panel-3\" aria-selected=\"false\" tabindex=\"-1\">The worksheet<\/button>\n      <button class=\"gpx-tab\" role=\"tab\" id=\"gpx-tab-4\" aria-controls=\"gpx-panel-4\" aria-selected=\"false\" tabindex=\"-1\">Nitrogen cost<\/button>\n      <button class=\"gpx-tab\" role=\"tab\" id=\"gpx-tab-5\" aria-controls=\"gpx-panel-5\" aria-selected=\"false\" tabindex=\"-1\">From blend to map<\/button>\n      <button class=\"gpx-tab\" role=\"tab\" id=\"gpx-tab-6\" aria-controls=\"gpx-panel-6\" aria-selected=\"false\" tabindex=\"-1\">Prices and units<\/button>\n    <\/div>\n    <div class=\"gpx-panel is-active\" role=\"tabpanel\" id=\"gpx-panel-1\" aria-labelledby=\"gpx-tab-1\">\n      <h3>Why is a blend ranked first when a cheaper one is further down?<\/h3>\n      <p>Fit comes before price. A blend that leaves a nutrient short costs you yield, so the list puts every blend that meets all targets above any that misses one, and only then sorts by cost per hectare.<\/p>\n      <p>Short means under 97 percent of the target, over means above 110 percent. Between those a nutrient counts as met.<\/p>\n    <\/div>\n    <div class=\"gpx-panel\" role=\"tabpanel\" id=\"gpx-panel-2\" aria-labelledby=\"gpx-tab-2\">\n      <h3>Why does the urea rate drop when I add MAP?<\/h3>\n      <p>MAP is 11 percent nitrogen. For 60 kg of phosphate you spread 115 kg of MAP, and that brings 13 kg of nitrogen with it, so the urea only has to cover the rest.<\/p>\n      <p>The same happens with sulphur from ammonium sulphate or sulphate of potash, and with magnesium from potassium magnesium sulphate. Every product's full analysis is counted, not only the nutrient you chose it for.<\/p>\n    <\/div>\n    <div class=\"gpx-panel\" role=\"tabpanel\" id=\"gpx-panel-3\" aria-labelledby=\"gpx-tab-3\">\n      <h3>How does the worksheet handle manure?<\/h3>\n      <p>Enter the analysis from your manure test, the amount you spread, and the share of each nutrient that reaches the crop this season. The worksheet multiplies them and takes the result off the seasonal need.<\/p>\n      <p>The availability figures start at typical extension values: organic nitrogen at 60 percent, ammonium nitrogen at 80 percent when incorporated and 50 percent when left on the surface. Change them to your lab's numbers.<\/p>\n    <\/div>\n    <div class=\"gpx-panel\" role=\"tabpanel\" id=\"gpx-panel-4\" aria-labelledby=\"gpx-tab-4\">\n      <h3>What is the nitrogen cost after P and K are valued?<\/h3>\n      <p>Part of the price of MAP or DAP buys phosphate, not nitrogen. To compare a compound fairly against straight urea, the phosphate and potash in the blend are valued at the price of the straight products and taken off first. What is left, divided by the nitrogen delivered, is what you actually pay per kilogram of nitrogen.<\/p>\n    <\/div>\n    <div class=\"gpx-panel\" role=\"tabpanel\" id=\"gpx-panel-5\" aria-labelledby=\"gpx-tab-5\">\n      <h3>How does a blend become a prescription map?<\/h3>\n      <p>One step in GeoPard. Choose flat rate and the blend you picked is written across the whole field as a file your terminal reads. Choose variable rate and each zone gets its own rate: an equation over your soil test and yield layers works out the nutrient each zone lacks most, sets the rate for that zone, converts it to kilograms of product with these same analyses, and exports the file.<\/p>\n      <p>Copy as GeoPard equation on any blend gives you that variable-rate equation with your products already in it. Flat or variable is your call per field and per season.<\/p>\n    <\/div>\n    <div class=\"gpx-panel\" role=\"tabpanel\" id=\"gpx-panel-6\" aria-labelledby=\"gpx-tab-6\">\n      <h3>Where do the prices come from, and can I change them?<\/h3>\n      <p>They are converted to your currency on the date shown. Overwrite them with your dealer's quote; the ranking updates as you type.<\/p>\n      <p>Rates show in kilograms per hectare or pounds per acre depending on your region, and you can switch. Field totals follow in tonnes or short tons.<\/p>\n    <\/div>\n  <\/div>\n<\/section>\n<script type=\"application\/ld+json\" data-no-optimize=\"1\" data-no-minify=\"1\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why is a blend ranked first when a cheaper one is further down?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Fit comes before price. A blend that leaves a nutrient short costs you yield, so the list puts every blend that meets all targets above any that misses one, and only then sorts by cost per hectare. Short means under 97 percent of the target, over means above 110 percent. Between those a nutrient counts as met.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Why does the urea rate drop when I add MAP?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"MAP is 11 percent nitrogen. For 60 kg of phosphate you spread 115 kg of MAP, and that brings 13 kg of nitrogen with it, so the urea only has to cover the rest. The same happens with sulphur from ammonium sulphate or sulphate of potash, and with magnesium from potassium magnesium sulphate. Every product's full analysis is counted, not only the nutrient you chose it for.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How does the worksheet handle manure?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Enter the analysis from your manure test, the amount you spread, and the share of each nutrient that reaches the crop this season. The worksheet multiplies them and takes the result off the seasonal need. The availability figures start at typical extension values: organic nitrogen at 60 percent, ammonium nitrogen at 80 percent when incorporated and 50 percent when left on the surface. Change them to your lab's numbers.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What is the nitrogen cost after P and K are valued?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Part of the price of MAP or DAP buys phosphate, not nitrogen. To compare a compound fairly against straight urea, the phosphate and potash in the blend are valued at the price of the straight products and taken off first. What is left, divided by the nitrogen delivered, is what you actually pay per kilogram of nitrogen.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How does a blend become a prescription map?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"One step in GeoPard. Choose flat rate and the blend you picked is written across the whole field as a file your terminal reads. Choose variable rate and each zone gets its own rate: an equation over your soil test and yield layers works out the nutrient each zone lacks most, sets the rate for that zone, converts it to kilograms of product with these same analyses, and exports the file. Copy as GeoPard equation on any blend gives you that variable-rate equation with your products already in it. Flat or variable is your call per field and per season.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Where do the prices come from, and can I change them?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"They are converted to your currency on the date shown. Overwrite them with your dealer's quote; the ranking updates as you type. Rates show in kilograms per hectare or pounds per acre depending on your region, and you can switch. Field totals follow in tonnes or short tons.\"\n      }\n    }\n  ]\n}\n<\/script>\n<\/div>\n<script nowprocket data-no-optimize=\"1\" data-no-defer=\"1\" data-no-minify=\"1\">\n(function(){\n  var root = document.querySelector('.gp-lead .gpx-faq');\n  if (!root) { return; }\n  var tabs = root.querySelectorAll('.gpx-tab');\n  var panels = root.querySelectorAll('.gpx-panel');\n  function activate(idx){\n    for (var i = 0; i < tabs.length; i++) {\n      var on = i === idx;\n      tabs[i].setAttribute('aria-selected', on ? 'true' : 'false');\n      tabs[i].setAttribute('tabindex', on ? '0' : '-1');\n      if (on) { panels[i].classList.add('is-active'); } else { panels[i].classList.remove('is-active'); }\n    }\n  }\n  for (var i = 0; i < tabs.length; i++) {\n    (function(n){\n      tabs[n].addEventListener('click', function(){ activate(n); });\n      tabs[n].addEventListener('keydown', function(ev){\n        var d = ev.key === 'ArrowRight' ? 1 : (ev.key === 'ArrowLeft' ? -1 : 0);\n        if (d === 0) { return; }\n        var t = (n + d + tabs.length) % tabs.length;\n        activate(t); tabs[t].focus(); ev.preventDefault();\n      });\n    })(i);\n  }\n})();\n<\/script>\n\n\n\n<!-- GeoPard Tool Wrapper - CTA only (CTA band + AI Assistant band, NO FAQ).\n     Pages pair this with their OWN faq.html, because the FAQ in block 13099 is\n     Field Data Explorer specific and answers questions nobody asked on another\n     tool's page. Block 13099 stays as it is for the legacy pages. -->\n<div class=\"gp-lead\">\n<style>\n\/* Shared CTA, integration chips and FAQ tab styling. These classes are USED by\n   this block but were only DEFINED in wrapper-top block 13098, so any page that\n   uses this block without 13098 (a tool page with an inline hero) rendered the\n   CTA and FAQ completely unstyled. Copied verbatim from 13098, so pages that\n   carry both blocks are byte-identical in effect. *\/\n.gp-lead{font-family:var(--wp--preset--font-family--nunito,\"Nunito\",system-ui,-apple-system,Segoe UI,sans-serif);color:#212121;max-width:1600px;margin:0 auto;padding:0 16px}\n.gp-lead .gpx-cta{background:linear-gradient(135deg,#145328 0%,#1b7a2a 65%,#1a7951 100%);border-radius:18px;padding:38px 40px;margin:36px 0 24px;color:#fafbf4;text-align:center;position:relative;overflow:hidden}\n.gp-lead .gpx-cta::before{content:\"\";position:absolute;inset:auto -40px -60px auto;width:200px;height:200px;background:radial-gradient(circle,rgba(178,6,15,0.26),transparent 70%);pointer-events:none}\n.gp-lead .gpx-cta h2{color:#fff;margin:0 0 12px;font-size:1.6rem}\n.gp-lead .gpx-cta p{color:rgba(255,255,255,0.95);font-size:1.05rem;max-width:740px;margin:0 auto 22px}\n.gp-lead .gpx-btn{display:inline-block;background:#b2060f;color:#fff;font-family:var(--wp--preset--font-family--poppins,\"Poppins\",sans-serif);font-weight:600;font-size:1rem;padding:14px 30px;border-radius:999px;text-decoration:none;transition:transform .15s,box-shadow .15s,background .15s;box-shadow:none}\n.gp-lead .gpx-btn:hover{transform:translateY(-1px);background:#fd4d48;color:#fff;box-shadow:none}\n.gp-lead .gpx-faq{margin:36px 0 8px}\n.gp-lead .gpx-faq h2{text-align:center;margin:0 0 20px;font-size:1.6rem}\n.gp-lead .gpx-tabs{border:1px solid #e8ebe2;border-radius:16px;overflow:hidden;background:#fff;box-shadow:0 2px 14px rgba(20,83,40,0.06)}\n.gp-lead .gpx-tablist{display:flex;gap:0;background:#f6f7f1;border-bottom:1px solid #e8ebe2;overflow-x:auto;scrollbar-width:none}\n.gp-lead .gpx-tablist::-webkit-scrollbar{display:none}\n.gp-lead .gpx-tab{flex:1 1 auto;min-width:max-content;background:transparent;border:0;padding:16px 22px;font-family:var(--wp--preset--font-family--poppins,\"Poppins\",sans-serif);font-size:.95rem;font-weight:600;color:#4c6066;cursor:pointer;border-bottom:3px solid transparent;transition:color .15s,border-color .15s,background .15s;white-space:nowrap;letter-spacing:.01em}\n.gp-lead .gpx-tab:hover{color:#145328;background:rgba(123,220,181,0.14)}\n.gp-lead .gpx-tab[aria-selected=\"true\"]{color:#145328;border-bottom-color:#15701e;background:#fff}\n.gp-lead .gpx-tab:focus{outline:2px solid #15701e;outline-offset:-2px}\n.gp-lead .gpx-panel{padding:28px 32px;display:none;animation:gpxfade .25s ease}\n.gp-lead .gpx-panel.is-active{display:block}\n.gp-lead .gpx-panel p{margin:0;line-height:1.7;color:#243024;font-size:1rem}\n.gp-lead .gpx-panel p+p{margin-top:10px}\n.gp-lead .gpx-panel kbd,.gp-lead .gpx-panel code{background:#f0f3ec;padding:2px 6px;border-radius:4px;font-family:var(--wp--preset--font-family--dm-mono,\"DM Mono\",ui-monospace,monospace);font-size:.88em;color:#145328}\n.gp-lead .gpx-integ{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:10px 0 20px}\n.gp-lead .gpx-integ-label{font-size:.86rem;color:rgba(255,255,255,0.86);margin:0 0 8px;font-weight:500;letter-spacing:.01em}\n.gp-lead .gpx-integ-chip{background:rgba(255,255,255,0.16);border:1px solid rgba(255,255,255,0.32);color:#fff;padding:6px 14px;border-radius:999px;font-size:.85rem;font-weight:600;letter-spacing:.02em}\n@media (max-width:760px){\n  .gp-lead .gpx-cta{padding:24px 22px}\n  .gp-lead .gpx-panel{padding:22px 20px}\n  .gp-lead .gpx-tab{padding:14px 16px;font-size:.9rem}\n}\n@keyframes gpxfade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}\n<\/style>\n\n<section class=\"gpx-cta\">\n  <h2>Bigger picture? GeoPard turns the data into prescriptions.<\/h2>\n  <p>This page reads one file at a time. The full GeoPard platform combines multi-year yield, NDVI, soil, and topography into management zones, generates variable rate prescriptions, and pushes them to your machine.<\/p>\n  <div class=\"gpx-integ-label\">Push prescriptions and pull as-applied data with:<\/div>\n  <div class=\"gpx-integ\">\n    <span class=\"gpx-integ-chip\">John Deere Operations Center<\/span>\n    <span class=\"gpx-integ-chip\">CNH FieldOps<\/span>\n    <span class=\"gpx-integ-chip\">AGCO \/ PTx FarmEngage<\/span>\n  <\/div>\n  <a class=\"gpx-btn\" href=\"https:\/\/app.geopard.tech\/signup?utm_source=geopard.tech&amp;utm_medium=lead-magnet&amp;utm_campaign=field-data-explorer&amp;utm_content=below-tool-cta\">Register free in GeoPard &rarr;<\/a>\n  <p style=\"margin:16px auto 0;max-width:740px;font-size:.95rem;color:rgba(255,255,255,.92)\">Already harvested? <a style=\"color:#ffffff;text-decoration:underline;text-underline-offset:3px\" href=\"https:\/\/geopard.tech\/yield-report\/\">See whether the variable rate paid off in the Automated Yield Report<\/a>.<\/p>\n<\/section>\n\n<section class=\"gpx-aiband\">\n  <style>\n    .gp-lead .gpx-aiband{display:flex;align-items:center;gap:24px;flex-wrap:wrap;background:#f2f7ee;border:1px solid #d6e2c5;border-radius:14px;padding:22px 26px;margin:26px 0}\n    .gp-lead .gpx-aiband-txt{flex:1 1 380px}\n    .gp-lead .gpx-aiband-new{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.05em;color:#ffffff;background:#b2060f;border-radius:999px;padding:3px 9px;vertical-align:3px;margin-left:10px}\n    .gp-lead .gpx-aiband h2{margin:0;font-size:1.3rem}\n    .gp-lead .gpx-aiband p{margin:8px 0 0;color:#4c6066;font-size:.98rem;line-height:1.55}\n    .gp-lead .gpx-aiband-btn{flex:0 0 auto;display:inline-flex;align-items:center;min-height:46px;background:#15701e;color:#ffffff;font-weight:600;padding:0 22px;border-radius:999px;text-decoration:none}\n    .gp-lead .gpx-aiband-btn:hover{background:#145328;color:#ffffff}\n    @media (max-width:640px){ .gp-lead .gpx-aiband{padding:18px} .gp-lead .gpx-aiband-btn{width:100%;justify-content:center} }\n  <\/style>\n  <div class=\"gpx-aiband-txt\">\n    <h2>Meet the GeoPard AI Assistant<span class=\"gpx-aiband-new\">NEW<\/span><\/h2>\n    <p>Reasoning AI for precision agriculture: it asks the right agronomic questions, shows its math, and builds dry-run validated prescriptions from your data. You approve every step.<\/p>\n  <\/div>\n  <a class=\"gpx-aiband-btn\" href=\"https:\/\/geopard.tech\/ai\/\">Watch how the AI thinks &rarr;<\/a>\n<\/section>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Odaberite gnojiva koja imate, postavite cilj za \u0161est hranjivih tvari i pogledajte svaku izvedivu mje\u0161avinu rangiranu prema prikladnosti i cijeni, s tonama za narud\u017ebu i jednad\u017ebom karte po zoni.<\/p>","protected":false},"author":210157960,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_eb_attr":"","content-type":"","_wpcom_ai_launchpad_about_page":false,"_wpcom_ai_launchpad_gallery_page":false,"_wpcom_ai_launchpad_contact_page":false,"_wpcom_ai_launchpad_events_page":false,"_wpcom_ai_launchpad_video_page":false,"_wpcom_ai_launchpad_portfolio_piece":false,"footnotes":"","big_sky_generated":false},"class_list":["post-14428","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Fertilizer Blend Calculator: N, P, K, S, Mg, Ca - GeoPard<\/title>\n<meta name=\"description\" content=\"Pick the fertilizers you have, set the target for six nutrients, and see every workable blend ranked by fit and cost, with tonnes to order and a per-zone map equation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/geopard.tech\/hr\/kalkulator-mjesavine-gnojiva\/\" \/>\n<meta property=\"og:locale\" content=\"hr_HR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Fertilizer Blend Calculator: N, P, K, S, Mg, Ca - GeoPard\" \/>\n<meta property=\"og:description\" content=\"Pick the fertilizers you have, set the target for six nutrients, and see every workable blend ranked by fit and cost, with tonnes to order and a per-zone map equation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/geopard.tech\/hr\/kalkulator-mjesavine-gnojiva\/\" \/>\n<meta property=\"og:site_name\" content=\"GeoPard - Precision agriculture Mapping software\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/geopardAgriculture\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-29T11:43:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@geopardagri\" \/>\n<meta name=\"twitter:label1\" content=\"Procijenjeno vrijeme \u010ditanja\" \/>\n\t<meta name=\"twitter:data1\" content=\"8 minuta\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/\",\"url\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/\",\"name\":\"Fertilizer Blend Calculator: N, P, K, S, Mg, Ca - GeoPard\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/geopard.tech\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/geopard.tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1\",\"datePublished\":\"2026-09-29T10:09:30+00:00\",\"dateModified\":\"2026-09-29T11:43:00+00:00\",\"description\":\"Pick the fertilizers you have, set the target for six nutrients, and see every workable blend ranked by fit and cost, with tonnes to order and a per-zone map equation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/#breadcrumb\"},\"inLanguage\":\"hr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"hr\",\"@id\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/geopard.tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/geopard.tech\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/geopard.tech\\\/fertilizer-blend-calculator\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/geopard.tech\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fertilizer Blend Calculator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/geopard.tech\\\/#website\",\"url\":\"https:\\\/\\\/geopard.tech\\\/\",\"name\":\"GeoPard - Precision agriculture software\",\"description\":\"Precision agriculture Mapping software\",\"publisher\":{\"@id\":\"https:\\\/\\\/geopard.tech\\\/#organization\"},\"alternateName\":\"GeoPard\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/geopard.tech\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"hr\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/geopard.tech\\\/#organization\",\"name\":\"GeoPard Agriculture\",\"alternateName\":\"GeoPard\",\"url\":\"https:\\\/\\\/geopard.tech\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"hr\",\"@id\":\"https:\\\/\\\/geopard.tech\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/geopard.tech\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/geopard_logo_transparentbackground.png?fit=512%2C68&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/geopard.tech\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/geopard_logo_transparentbackground.png?fit=512%2C68&ssl=1\",\"width\":512,\"height\":68,\"caption\":\"GeoPard Agriculture\"},\"image\":{\"@id\":\"https:\\\/\\\/geopard.tech\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/geopardAgriculture\\\/\",\"https:\\\/\\\/x.com\\\/geopardagri\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/geopard-agriculture\\\/\",\"https:\\\/\\\/www.instagram.com\\\/geopardagriculture\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCiaPGLAhRPNh-s85dXdC-Sw\",\"https:\\\/\\\/www.g2.com\\\/products\\\/geopard-agriculture-precision-farming-software\\\/reviews\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kalkulator mje\u0161avine gnojiva: N, P, K, S, Mg, Ca - GeoPard","description":"Odaberite gnojiva koja imate, postavite cilj za \u0161est hranjivih tvari i pogledajte svaku izvedivu mje\u0161avinu rangiranu prema prikladnosti i cijeni, s tonama za narud\u017ebu i jednad\u017ebom karte po zoni.","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:\/\/geopard.tech\/hr\/kalkulator-mjesavine-gnojiva\/","og_locale":"hr_HR","og_type":"article","og_title":"Fertilizer Blend Calculator: N, P, K, S, Mg, Ca - GeoPard","og_description":"Pick the fertilizers you have, set the target for six nutrients, and see every workable blend ranked by fit and cost, with tonnes to order and a per-zone map equation.","og_url":"https:\/\/geopard.tech\/hr\/kalkulator-mjesavine-gnojiva\/","og_site_name":"GeoPard - Precision agriculture Mapping software","article_publisher":"https:\/\/www.facebook.com\/geopardAgriculture\/","article_modified_time":"2026-09-29T11:43:00+00:00","og_image":[{"url":"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@geopardagri","twitter_misc":{"Procijenjeno vrijeme \u010ditanja":"8 minuta"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/","url":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/","name":"Kalkulator mje\u0161avine gnojiva: N, P, K, S, Mg, Ca - GeoPard","isPartOf":{"@id":"https:\/\/geopard.tech\/#website"},"primaryImageOfPage":{"@id":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/#primaryimage"},"image":{"@id":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1","datePublished":"2026-09-29T10:09:30+00:00","dateModified":"2026-09-29T11:43:00+00:00","description":"Odaberite gnojiva koja imate, postavite cilj za \u0161est hranjivih tvari i pogledajte svaku izvedivu mje\u0161avinu rangiranu prema prikladnosti i cijeni, s tonama za narud\u017ebu i jednad\u017ebom karte po zoni.","breadcrumb":{"@id":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/#breadcrumb"},"inLanguage":"hr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/geopard.tech\/fertilizer-blend-calculator\/"]}]},{"@type":"ImageObject","inLanguage":"hr","@id":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/#primaryimage","url":"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1","contentUrl":"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2025\/09\/Assign-Variable-Rates-in-the-Zones-Ag-inputs-Rates-Distribution-Tool.png?w=1200&amp;quality=88&amp;ssl=1"},{"@type":"BreadcrumbList","@id":"https:\/\/geopard.tech\/fertilizer-blend-calculator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/geopard.tech\/"},{"@type":"ListItem","position":2,"name":"Fertilizer Blend Calculator"}]},{"@type":"WebSite","@id":"https:\/\/geopard.tech\/#website","url":"https:\/\/geopard.tech\/","name":"GeoPard - Softver za preciznu poljoprivredu","description":"Precizna poljoprivreda Softver za mapiranje","publisher":{"@id":"https:\/\/geopard.tech\/#organization"},"alternateName":"GeoPard","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/geopard.tech\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"hr"},{"@type":"Organization","@id":"https:\/\/geopard.tech\/#organization","name":"GeoPard Poljoprivreda","alternateName":"GeoPard","url":"https:\/\/geopard.tech\/","logo":{"@type":"ImageObject","inLanguage":"hr","@id":"https:\/\/geopard.tech\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2026\/07\/geopard_logo_transparentbackground.png?fit=512%2C68&ssl=1","contentUrl":"https:\/\/i0.wp.com\/geopard.tech\/wp-content\/uploads\/2026\/07\/geopard_logo_transparentbackground.png?fit=512%2C68&ssl=1","width":512,"height":68,"caption":"GeoPard Agriculture"},"image":{"@id":"https:\/\/geopard.tech\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/geopardAgriculture\/","https:\/\/x.com\/geopardagri","https:\/\/www.linkedin.com\/company\/geopard-agriculture\/","https:\/\/www.instagram.com\/geopardagriculture\/","https:\/\/www.youtube.com\/channel\/UCiaPGLAhRPNh-s85dXdC-Sw","https:\/\/www.g2.com\/products\/geopard-agriculture-precision-farming-software\/reviews"]}]}},"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PdiCPa-3KI","_links":{"self":[{"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/pages\/14428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/users\/210157960"}],"replies":[{"embeddable":true,"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/comments?post=14428"}],"version-history":[{"count":0,"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/pages\/14428\/revisions"}],"wp:attachment":[{"href":"https:\/\/geopard.tech\/hr\/wp-json\/wp\/v2\/media?parent=14428"}],"curies":[{"name":"radni list","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}