{"id":2826,"date":"2026-07-20T14:38:13","date_gmt":"2026-07-20T12:38:13","guid":{"rendered":"https:\/\/gekkophotonics.com\/sulfur-thiosulfate-fertilizers\/what-we-measure\/"},"modified":"2026-07-20T14:38:13","modified_gmt":"2026-07-20T12:38:13","slug":"what-we-measure","status":"publish","type":"page","link":"https:\/\/gekkophotonics.com\/en\/sulfur-thiosulfate-fertilizers\/what-we-measure-five-process-values\/","title":{"rendered":"What We Measure &#8211; Five Process Values for Sulfur &#038; Thiosulfate Fertilizers (ATS) | Gekko Photonics"},"content":{"rendered":"<style>.elementor-2826 .elementor-element.elementor-element-2039c7e{margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 0px;}.elementor-2826 .elementor-element.elementor-element-e48623b > .elementor-element-populated{padding:0px 0px 0px 0px;}@media(min-width:768px){.elementor-2826 .elementor-element.elementor-element-e48623b{width:100%;}}<\/style>\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2826\" class=\"elementor elementor-2826 elementor-bc-flex-widget\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2039c7e gk-ms-host elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2039c7e\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-no\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e48623b gk-ms-col\" data-id=\"e48623b\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-0f7025e elementor-widget elementor-widget-html\" data-id=\"0f7025e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>.gk-ms-host,.gk-ms-host>.elementor-container,.gk-ms-col,.gk-ms-col>.elementor-widget-wrap,.gk-ms-col .elementor-widget-html,.gk-ms-col .elementor-widget-html>.elementor-widget-container{margin:0!important;padding:0!important;max-width:none!important;width:100%!important}<\/style>\n<style>\n\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Manrope:wght@300;400;500;600;700;800&display=swap');\n\n#gkms{\n  \/* --- brand tokens (from colors_and_type.css) --- *\/\n  --gk-blue:#019FE2; --gk-blue-600:#0088C2; --gk-blue-400:#3DB6E8; --gk-blue-100:#D6EFFA; --gk-blue-50:#EDF8FD;\n  --gk-navy-deep:#2B2E83; --gk-navy-dark:#192A3D; --gk-navy-800:#1F2A4A; --gk-slate:#3A4F66;\n  --gk-gold:#F3C969; --gk-white:#FFFFFF; --gk-off:#FAFBFC;\n  --g50:#F5F6F8; --g100:#E8EBEF; --g200:#D3D8DF; --g300:#B5BCC5; --g400:#8A93A0; --g500:#5E6676; --g600:#3F485A; --g700:#2A3342; --black:#0D0D0D;\n  --ok:#2BB673; --warn:#F3C969; --bad:#E04B4B;\n  --r-xs:4px; --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:24px; --r-pill:999px;\n  --sh-xs:0 1px 2px rgba(25,42,61,.06);\n  --sh-sm:0 1px 3px rgba(25,42,61,.08),0 1px 2px rgba(25,42,61,.04);\n  --sh-md:0 6px 16px rgba(25,42,61,.10),0 2px 4px rgba(25,42,61,.06);\n  --sh-lg:0 18px 40px rgba(25,42,61,.14),0 4px 10px rgba(25,42,61,.06);\n  --ease:cubic-bezier(0.22,1,0.36,1);\n  --font:\"Manrope\",system-ui,-apple-system,\"Segoe UI\",sans-serif;\n  font-family:var(--font); color:var(--gk-slate); font-size:16px; line-height:1.5;\n  -webkit-font-smoothing:antialiased; background:var(--gk-white);\n}\n#gkms *,#gkms *::before,#gkms *::after{box-sizing:border-box;margin:0;padding:0}\n#gkms img{max-width:100%;display:block}\n#gkms a{color:inherit;text-decoration:none}\n#gkms h1,#gkms h2,#gkms h3,#gkms h4{color:var(--gk-navy-deep);line-height:1.1;letter-spacing:-.02em;font-weight:800}\n#gkms .wrap{max-width:1200px;margin:0 auto;padding:0 24px}\n#gkms section{padding:clamp(72px,9vw,112px) 0}\n#gkms .eyebrow{display:inline-flex;align-items:center;gap:10px;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gk-blue)}\n#gkms .eyebrow::before{content:\"\";width:24px;height:1px;background:var(--gk-blue);display:inline-block}\n#gkms .eyebrow.no-line::before{display:none}\n#gkms .lead{font-size:clamp(17px,1.35vw,20px);line-height:1.6;color:var(--gk-slate)}\n#gkms .display{font-size:clamp(40px,5vw,72px);font-weight:800;line-height:1.02;letter-spacing:-.02em;color:var(--gk-navy-deep)}\n#gkms .h2{font-size:clamp(28px,3vw,46px);font-weight:800;letter-spacing:-.02em;line-height:1.08}\n#gkms .sec-head{max-width:820px;margin-bottom:64px;position:relative}\n#gkms .sec-head .h2{margin:18px 0 0}\n#gkms .sec-head .lead{margin-top:18px;max-width:64ch}\n#gkms .sec-head .num{position:absolute;right:-40px;top:-34px;font-size:clamp(96px,11vw,160px);font-weight:800;line-height:1;letter-spacing:-.04em;color:var(--gk-navy-deep);opacity:.05;pointer-events:none;font-variant-numeric:tabular-nums;user-select:none}\n@media(max-width:1100px){#gkms .sec-head .num{display:none}}\n#gkms .band .sec-head .num{color:#fff;opacity:.06}\n\n\/* ---- progress + nav ---- *\/\n#gkms .progress{position:fixed;top:0;left:0;height:3px;width:0;background:var(--gk-blue);z-index:120;transition:width .1s linear}\n#gkms .nav{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.86);backdrop-filter:blur(12px) saturate(140%);border-bottom:1px solid var(--g100)}\n#gkms .nav-in{max-width:1200px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:28px}\n#gkms .nav .logo{height:34px;width:auto}\n#gkms .nav-links{display:flex;gap:24px;flex:1;font-size:14px;font-weight:600}\n#gkms .nav-links a{color:var(--gk-navy-deep);position:relative;padding:4px 0;transition:color .15s}\n#gkms .nav-links a::after{content:\"\";position:absolute;left:0;bottom:-2px;height:2px;width:0;background:var(--gk-blue);transition:width .2s var(--ease)}\n#gkms .nav-links a:hover,#gkms .nav-links a.active{color:var(--gk-blue)}\n#gkms .nav-links a.active::after{width:100%}\n#gkms .btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--font);font-weight:600;font-size:14px;padding:12px 22px;border-radius:var(--r-md);border:1px solid transparent;cursor:pointer;transition:.18s var(--ease);white-space:nowrap}\n#gkms .btn-primary{background:var(--gk-blue);color:#fff;box-shadow:0 6px 18px rgba(1,159,226,.30)}\n#gkms .btn-primary:hover{background:var(--gk-blue-600);transform:translateY(-1px)}\n#gkms .btn-navy{background:var(--gk-navy-deep);color:#fff}\n#gkms .btn-navy:hover{background:#232566;transform:translateY(-1px)}\n#gkms .btn-ghost{background:transparent;color:var(--gk-navy-deep);border-color:var(--g200)}\n#gkms .btn-ghost:hover{border-color:var(--gk-blue);color:var(--gk-blue)}\n#gkms .btn-light{background:#fff;color:var(--gk-navy-deep)}\n#gkms .btn-light:hover{transform:translateY(-1px)}\n#gkms .btn-outline-light{background:rgba(255,255,255,.06);color:#fff;border-color:rgba(255,255,255,.28)}\n#gkms .btn-outline-light:hover{background:rgba(255,255,255,.14)}\n@media(max-width:940px){#gkms .nav-links{display:none}}\n\n\/* ---- hero ---- *\/\n#gkms .hero{position:relative;overflow:hidden;color:#fff;padding:150px 0 130px;\n  background-image:linear-gradient(100deg,rgba(15,22,38,.96) 0%,rgba(25,42,61,.86) 42%,rgba(25,42,61,.42) 100%),url('https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/hero-sulfur-wide.jpg');\n  background-size:cover;background-position:center}\n#gkms .hero .spectrum{position:absolute;inset:0;width:100%;height:100%;opacity:.28;pointer-events:none}\n#gkms .hero .spectrum path{fill:none;stroke-width:2}\n#gkms .hero-in{position:relative;max-width:1200px;margin:0 auto;padding:0 24px}\n#gkms .hero .display{color:#fff;max-width:17ch}\n#gkms .hero .display .accent{color:var(--gk-blue-400)}\n#gkms .hero .lead{color:#C8D0DC;max-width:56ch;margin-top:22px}\n#gkms .hero .eyebrow{color:var(--gk-blue-400)}\n#gkms .hero .eyebrow::before{background:var(--gk-blue-400)}\n#gkms .badges{display:flex;flex-wrap:wrap;gap:10px;margin:26px 0 32px}\n#gkms .badge{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;padding:8px 15px;border-radius:var(--r-pill);background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.16);color:#DCE4EF}\n#gkms .badge b{color:#fff;font-weight:800}\n#gkms .hero-cta{display:flex;flex-wrap:wrap;gap:12px}\n#gkms .scrollcue{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);color:rgba(255,255,255,.5);font-size:22px;animation:bob 1.8s var(--ease) infinite}\n@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,8px)}}\n\n\/* ---- generic reveal ---- *\/\n#gkms .reveal{opacity:0;transform:translateY(26px);transition:opacity .7s var(--ease),transform .7s var(--ease)}\n#gkms .reveal.in{opacity:1;transform:none}\n\n\/* ---- context strip (spec-sheet band) ---- *\/\n#gkms .ctx{background:var(--gk-off)}\n#gkms .ctx-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0}\n#gkms .ctx-item{padding:2px 30px}\n#gkms .ctx-item + .ctx-item{border-left:1px solid var(--g200)}\n@media(max-width:820px){#gkms .ctx-grid{grid-template-columns:repeat(2,1fr);gap:34px 0}\n  #gkms .ctx-item{padding:2px 26px}\n  #gkms .ctx-item:nth-child(odd){padding-left:0;border-left:none}\n  #gkms .ctx-item:nth-child(3),#gkms .ctx-item:nth-child(4){padding-top:0}}\n@media(max-width:520px){#gkms .ctx-grid{grid-template-columns:1fr;gap:28px 0}\n  #gkms .ctx-item{padding:0;border-left:none}}\n#gkms .ctx-item:first-child{padding-left:0}\n#gkms .ctx-item .k{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gk-blue);margin-bottom:12px}\n#gkms .ctx-item .v{font-weight:800;color:var(--gk-navy-deep);font-size:18px;line-height:1.22;letter-spacing:-.01em}\n#gkms .ctx-item p{font-size:14px;color:var(--gk-slate);margin-top:10px;line-height:1.55}\n\n\/* ---- chemistry tabs ---- *\/\n#gkms .tabs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px}\n#gkms .tab{font-family:var(--font);font-weight:700;font-size:14px;padding:11px 20px;border-radius:var(--r-pill);border:1px solid var(--g200);background:#fff;color:var(--gk-slate);cursor:pointer;transition:.18s var(--ease)}\n#gkms .tab:hover{border-color:var(--gk-blue-400);color:var(--gk-blue)}\n#gkms .tab.active{background:var(--gk-navy-deep);border-color:var(--gk-navy-deep);color:#fff}\n#gkms .tabpanels{position:relative;background:var(--gk-off);border:1px solid var(--g100);border-radius:var(--r-xl);padding:44px}\n@media(max-width:820px){#gkms .tabpanels{padding:26px}}\n#gkms .tabpanel{display:none;grid-template-columns:1.1fr .9fr;gap:44px;align-items:center}\n#gkms .tabpanel.active{display:grid;animation:fade .4s var(--ease)}\n@keyframes fade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}\n@media(max-width:820px){#gkms .tabpanel.active{grid-template-columns:1fr}}\n#gkms .tabpanel .tp-tag{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gk-blue)}\n#gkms .tabpanel h3{font-size:28px;margin:8px 0 14px}\n#gkms .tabpanel p{color:var(--gk-slate);line-height:1.65;font-size:16px}\n#gkms .tabpanel ul{list-style:none;margin:18px 0 0;display:flex;flex-direction:column;gap:10px}\n#gkms .tabpanel li{display:flex;gap:10px;align-items:flex-start;font-size:15px;color:var(--gk-slate)}\n#gkms .tabpanel li::before{content:\"\";flex:0 0 auto;width:6px;height:6px;border-radius:999px;background:var(--gk-blue);margin-top:8px}\n#gkms .tp-photo{border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--sh-lg);aspect-ratio:4\/3;background:var(--g100)}\n#gkms .tp-photo img{width:100%;height:100%;object-fit:cover}\n\n\/* ---- analyte + spectrum explorer ---- *\/\n#gkms .explorer{display:grid;grid-template-columns:1fr 1.15fr;gap:40px;align-items:stretch}\n@media(max-width:900px){#gkms .explorer{grid-template-columns:1fr}}\n#gkms .analyte-list{display:flex;flex-direction:column;gap:10px}\n#gkms .analyte{display:flex;justify-content:space-between;align-items:center;gap:14px;text-align:left;font-family:var(--font);\n  background:#fff;border:1px solid var(--g200);border-radius:var(--r-md);padding:16px 18px;cursor:pointer;transition:.18s var(--ease)}\n#gkms .analyte:hover{border-color:var(--gk-blue-400);transform:translateX(3px)}\n#gkms .analyte.active{border-color:var(--gk-blue);background:var(--gk-blue-50);box-shadow:var(--sh-sm)}\n#gkms .analyte .n{font-weight:700;color:var(--gk-navy-deep);font-size:15px}\n#gkms .analyte .band{font-size:12px;font-weight:700;color:var(--gk-blue);font-variant-numeric:tabular-nums;background:var(--gk-blue-100);padding:3px 9px;border-radius:var(--r-pill);white-space:nowrap}\n#gkms .spectrum-panel{background:var(--gk-navy-dark);border-radius:var(--r-xl);padding:28px;color:#fff;display:flex;flex-direction:column;box-shadow:var(--sh-lg)}\n#gkms .spectrum-panel .sp-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}\n#gkms .spectrum-panel .sp-live{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gk-blue-400);display:flex;align-items:center;gap:7px}\n#gkms .spectrum-panel .sp-live .dot{width:8px;height:8px;border-radius:999px;background:var(--gk-blue-400);animation:pulse 1.4s infinite}\n@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}\n#gkms .spectrum-panel .sp-read{font-variant-numeric:tabular-nums;font-size:13px;color:#93A1B5}\n#gkms .spec-svg{width:100%;height:200px;margin:10px 0 6px}\n#gkms .spec-svg .grid line{stroke:rgba(255,255,255,.06);stroke-width:1}\n#gkms .spec-svg .trace{fill:none;stroke:var(--gk-blue-400);stroke-width:2}\n#gkms .spec-svg .marker{stroke:var(--gk-gold);stroke-width:2;stroke-dasharray:4 4;opacity:0;transition:opacity .3s}\n#gkms .spec-svg .marker.on{opacity:1}\n#gkms .spec-svg .mlabel{fill:var(--gk-gold);font-size:11px;font-weight:700;opacity:0;transition:opacity .3s}\n#gkms .spec-svg .mlabel.on{opacity:1}\n#gkms .spec-detail{border-top:1px solid rgba(255,255,255,.1);padding-top:16px;margin-top:auto}\n#gkms .spec-detail .sd-name{font-weight:800;color:#fff;font-size:18px}\n#gkms .spec-detail .sd-desc{color:#C8D0DC;font-size:14px;line-height:1.55;margin-top:6px}\n#gkms .spec-axis{font-size:11px;color:#6E7A8C;text-align:center;letter-spacing:.06em}\n\n\/* ---- lab lag vs inline ---- *\/\n#gkms .versus{display:grid;grid-template-columns:1fr 1fr;gap:22px}\n@media(max-width:820px){#gkms .versus{grid-template-columns:1fr}}\n#gkms .vcard{border-radius:var(--r-xl);padding:36px 32px;position:relative;overflow:hidden}\n#gkms .vcard::before{content:\"\";position:absolute;left:0;top:0;right:0;height:4px}\n#gkms .vcard.old{background:var(--g50);border:1px solid var(--g200)}\n#gkms .vcard.old::before{background:var(--bad);opacity:.55}\n#gkms .vcard.new{background:linear-gradient(135deg,var(--gk-navy-deep) 0%,#1F2A6B 100%);color:#fff;box-shadow:var(--sh-lg)}\n#gkms .vcard.new::before{background:var(--gk-blue)}\n#gkms .vcard .vk{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin-bottom:14px}\n#gkms .vcard.old .vk{color:var(--g500)}\n#gkms .vcard.new .vk{color:var(--gk-blue-400)}\n#gkms .vcard .vtime{font-size:clamp(40px,6vw,64px);font-weight:800;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}\n#gkms .vcard.old .vtime{color:var(--gk-navy-deep)}\n#gkms .vcard.new .vtime{color:#fff}\n#gkms .vcard .vtime .u{font-size:.35em;font-weight:700;margin-left:6px;color:var(--gk-blue)}\n#gkms .vcard.old .vtime .u{color:var(--g400)}\n#gkms .vbar{height:10px;border-radius:999px;background:rgba(0,0,0,.08);margin:22px 0 16px;overflow:hidden}\n#gkms .vcard.new .vbar{background:rgba(255,255,255,.12)}\n#gkms .vbar span{display:block;height:100%;border-radius:999px;width:0;transition:width 1.2s var(--ease)}\n#gkms .vcard.old .vbar span{background:var(--bad)}\n#gkms .vcard.new .vbar span{background:var(--gk-blue)}\n#gkms .vcard p{font-size:14px;line-height:1.55}\n#gkms .vcard.old p{color:var(--gk-slate)}\n#gkms .vcard.new p{color:#C8D0DC}\n\n\/* ---- how \/ probe cycle ---- *\/\n#gkms .how-grid{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}\n@media(max-width:900px){#gkms .how-grid{grid-template-columns:1fr}}\n#gkms .cycle{background:var(--gk-navy-dark);border-radius:var(--r-xl);padding:34px;color:#fff;box-shadow:var(--sh-lg)}\n#gkms .cycle .ring{display:flex;justify-content:center;gap:0;margin-bottom:24px}\n#gkms .cyc-step{flex:1;text-align:center;position:relative;padding:0 6px}\n#gkms .cyc-step .ci{width:66px;height:66px;margin:0 auto 12px;border-radius:50%;display:flex;align-items:center;justify-content:center;\n  font-size:26px;background:rgba(255,255,255,.06);border:2px solid rgba(255,255,255,.14);transition:.35s var(--ease)}\n#gkms .cyc-step.on .ci{background:var(--gk-blue);border-color:var(--gk-blue);box-shadow:0 0 0 6px rgba(1,159,226,.22);transform:scale(1.08)}\n#gkms .cyc-step .ct{font-size:13px;font-weight:700;color:#C8D0DC}\n#gkms .cyc-step.on .ct{color:#fff}\n#gkms .cyc-arrow{display:flex;align-items:center;color:rgba(255,255,255,.3);font-size:18px}\n#gkms .cycle .cyc-cap{border-top:1px solid rgba(255,255,255,.1);padding-top:18px;color:#C8D0DC;font-size:14px;line-height:1.6}\n#gkms .cycle .cyc-cap b{color:#fff}\n#gkms .how-points{display:flex;flex-direction:column;gap:22px}\n#gkms .how-point{display:flex;gap:16px;align-items:flex-start}\n#gkms .how-point .hi{flex:0 0 auto;width:46px;height:46px;border-radius:12px;background:var(--gk-blue-50);color:var(--gk-blue);display:flex;align-items:center;justify-content:center;font-size:22px}\n#gkms .how-point h4{font-size:18px;color:var(--gk-navy-deep);margin-bottom:5px}\n#gkms .how-point p{font-size:15px;color:var(--gk-slate);line-height:1.55}\n\n\/* ---- metric band ---- *\/\n#gkms .band{background:linear-gradient(120deg,#141F30 0%,var(--gk-navy-dark) 55%,#1B3048 100%);color:#fff;position:relative;overflow:hidden}\n#gkms .band::before{content:\"\";position:absolute;inset:0;pointer-events:none;\n  background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);\n  background-size:56px 56px;mask-image:radial-gradient(70rem 40rem at 30% 0%,#000 0%,transparent 70%)}\n#gkms .band .wrap{position:relative}\n#gkms .band .metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:32px}\n@media(max-width:820px){#gkms .band .metrics{grid-template-columns:repeat(2,1fr)}}\n#gkms .metric{border-left:1px solid rgba(255,255,255,.14);padding-left:22px}\n#gkms .metric .mk{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gk-blue-400);margin-bottom:12px}\n#gkms .metric .mv{font-size:clamp(44px,4.4vw,68px);font-weight:800;letter-spacing:-.02em;line-height:.95;font-variant-numeric:tabular-nums}\n#gkms .metric .mv .u{font-size:.38em;color:var(--gk-blue-400);margin-left:4px;font-weight:800}\n#gkms .metric p{font-size:14px;color:#C8D0DC;margin-top:14px;line-height:1.45}\n\n\/* ---- proof cards ---- *\/\n#gkms .proof-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}\n@media(max-width:900px){#gkms .proof-grid{grid-template-columns:1fr;max-width:520px;margin:0 auto}}\n#gkms .proof{background:#fff;border:1px solid var(--g100);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-sm);transition:transform .25s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease);display:flex;flex-direction:column}\n#gkms .proof:hover{box-shadow:var(--sh-lg);transform:translateY(-4px);border-color:var(--gk-blue-100)}\n#gkms .proof .pph{aspect-ratio:16\/10;background:var(--g100);overflow:hidden;position:relative}\n#gkms .proof .pph img{width:100%;height:100%;object-fit:cover;transition:transform .55s var(--ease)}\n#gkms .proof:hover .pph img{transform:scale(1.045)}\n#gkms .proof .pph .ptag{position:absolute;left:14px;top:14px;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:rgba(15,22,38,.72);backdrop-filter:blur(6px);padding:6px 11px;border-radius:var(--r-pill)}\n#gkms .proof .pbody{padding:24px 24px 26px;display:flex;flex-direction:column;flex:1}\n#gkms .proof h4{color:var(--gk-navy-deep);font-size:18px;line-height:1.25;margin:0 0 12px}\n#gkms .proof p{font-size:14px;color:var(--gk-slate);line-height:1.62}\n#gkms .proof p b{color:var(--gk-navy-deep);font-variant-numeric:tabular-nums}\n\n\/* ---- duel ---- *\/\n#gkms .duel{background:#fff;border:1px solid var(--g100);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-md)}\n#gkms .duel-row{display:grid;grid-template-columns:1fr 1.15fr;align-items:stretch}\n#gkms .duel-row .mid{display:none}\n#gkms .duel-row .old,#gkms .duel-row .new{padding:18px 28px;font-size:15px;display:flex;align-items:center}\n#gkms .duel-row .old{color:var(--g500);background:var(--g50);border-bottom:1px solid var(--g100)}\n#gkms .duel-row .new{color:var(--gk-navy-deep);font-weight:600;background:var(--gk-blue-50);border-bottom:1px solid rgba(1,159,226,.14);border-left:2px solid var(--gk-blue)}\n#gkms .duel-row:last-child .old{border-bottom:none}\n#gkms .duel-row:last-child .new{border-bottom:none}\n#gkms .duel-row.duel-head .old,#gkms .duel-row.duel-head .new{font-weight:800;text-transform:uppercase;font-size:12px;letter-spacing:.1em;padding-top:20px;padding-bottom:20px}\n#gkms .duel-row.duel-head .old{background:var(--g100);color:var(--g500)}\n#gkms .duel-row.duel-head .new{background:var(--gk-navy-deep);color:#fff;border-bottom:none;border-left-color:var(--gk-navy-deep)}\n#gkms .duel .ck{color:var(--gk-blue);font-weight:800;margin-right:10px}\n#gkms .duel .xk{color:var(--g300);font-weight:800;margin-right:10px}\n@media(max-width:720px){#gkms .duel-row{grid-template-columns:1fr}#gkms .duel-row .old{border-bottom:1px dashed var(--g200)}}\n\n\/* ---- compliance ---- *\/\n#gkms .reg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}\n@media(max-width:820px){#gkms .reg-grid{grid-template-columns:1fr}}\n#gkms .reg{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-lg);padding:24px}\n#gkms .reg .flag{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.06em;padding:5px 11px;border-radius:6px;background:var(--gk-blue);color:#fff;text-transform:uppercase;margin-bottom:14px}\n#gkms .reg h4{font-size:17px;color:#fff;margin-bottom:6px}\n#gkms .reg p{font-size:14px;color:#C8D0DC;line-height:1.55}\n\n\/* ---- replace ---- *\/\n#gkms .repl{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}\n@media(max-width:720px){#gkms .repl{grid-template-columns:1fr}}\n#gkms .repl .item{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--g100);border-radius:var(--r-md);padding:18px 20px}\n#gkms .repl .lag{flex:0 0 auto;font-size:12px;font-weight:800;color:var(--bad);background:#FDE9E9;padding:5px 10px;border-radius:6px;white-space:nowrap}\n#gkms .repl .m{font-weight:700;color:var(--gk-navy-deep);font-size:15px}\n#gkms .repl .s{font-size:13px;color:var(--gk-slate);margin-top:3px}\n\n\/* ---- product ---- *\/\n#gkms .product{display:grid;grid-template-columns:.95fr 1.05fr;gap:48px;align-items:center}\n@media(max-width:900px){#gkms .product{grid-template-columns:1fr}}\n#gkms .prod-photo{background:radial-gradient(60% 55% at 50% 42%,#101321 0%,#010105 72%);border-radius:var(--r-xl);padding:36px 20px;box-shadow:var(--sh-lg);text-align:center;border:1px solid rgba(255,255,255,.06);position:relative;overflow:hidden}\n#gkms .prod-photo::after{content:\"\";position:absolute;left:10%;right:10%;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(1,159,226,.45),transparent)}\n#gkms .prod-photo img{margin:0 auto;max-height:460px;width:auto;position:relative}\n#gkms .spec-table{width:100%;border-collapse:collapse;background:#fff;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--g100);margin-top:22px}\n#gkms .spec-table td{padding:12px 18px;font-size:14px;border-bottom:1px solid var(--g100)}\n#gkms .spec-table tr:last-child td{border-bottom:none}\n#gkms .spec-table td:first-child{font-weight:600;color:var(--gk-navy-deep);width:44%}\n#gkms .spec-table td:last-child{color:var(--gk-slate)}\n\n\/* ---- CTA ---- *\/\n#gkms .cta{background:linear-gradient(135deg,#019FE2 0%,#2B2E83 100%);color:#fff;border-radius:var(--r-xl);padding:64px 48px;text-align:center;position:relative;overflow:hidden}\n#gkms .cta::after{content:\"\";position:absolute;inset:0;background:radial-gradient(40rem 20rem at 80% 120%,rgba(243,201,105,.18),transparent 60%);pointer-events:none}\n#gkms .cta .h2{color:#fff;max-width:20ch;margin:14px auto 0;position:relative}\n#gkms .cta p{color:rgba(255,255,255,.92);max-width:58ch;margin:16px auto 0;position:relative;font-size:17px;line-height:1.6}\n#gkms .cta .hero-cta{justify-content:center;margin-top:30px;position:relative}\n#gkms .cta .sub{margin-top:18px;font-size:13px;color:rgba(255,255,255,.82);position:relative}\n\n\/* ---- workshop strip (secondary, demoted) ---- *\/\n#gkms .strip{background:var(--gk-off);border-top:1px solid var(--g100);border-bottom:1px solid var(--g100)}\n#gkms .strip-in{display:flex;flex-wrap:wrap;gap:20px;align-items:center;justify-content:space-between;padding:34px 0}\n#gkms .strip .st-l{display:flex;align-items:center;gap:16px}\n#gkms .strip .st-ic{width:48px;height:48px;border-radius:12px;background:var(--gk-blue-50);color:var(--gk-blue);display:flex;align-items:center;justify-content:center;font-size:24px;flex:0 0 auto}\n#gkms .strip h4{font-size:18px;color:var(--gk-navy-deep)}\n#gkms .strip p{font-size:14px;color:var(--gk-slate);margin-top:2px}\n\n\/* ---- footer ---- *\/\n#gkms .foot{background:var(--black);color:#C8D0DC;padding:72px 0 30px}\n#gkms .foot-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1.1fr;gap:36px}\n@media(max-width:820px){#gkms .foot-grid{grid-template-columns:1fr 1fr}}\n#gkms .foot .flogo{height:42px;width:auto;filter:brightness(0) invert(1);margin-bottom:18px}\n#gkms .foot .ftag{font-size:14px;color:#8A93A0;line-height:1.6;max-width:34ch}\n#gkms .foot h5{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--gk-blue);margin-bottom:16px}\n#gkms .foot a{display:block;font-size:13px;color:#C8D0DC;line-height:2}\n#gkms .foot a:hover{color:var(--gk-blue-400)}\n#gkms .foot .addr{font-size:13px;color:#8A93A0;line-height:1.7;margin-top:4px}\n#gkms .foot .fbottom{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;margin-top:52px;padding-top:24px;border-top:1px solid rgba(255,255,255,.08);font-size:12px;color:#5E6676}\n#gkms .foot .fbottom .tagpl{color:var(--gk-blue);font-weight:700;letter-spacing:.14em;text-transform:uppercase}\n#gkms .mono-note{font-size:12px;color:var(--g400)}\n\n\/* ---- feasibility request form (custom, posts to gekko\/v1\/rsvp) ---- *\/\n#gkms .gkms-form{max-width:560px;margin:28px auto 0;text-align:left;position:relative}\n#gkms .gkms-form-q{font-weight:700;font-size:14px;color:#fff;margin:0 0 12px;text-align:center}\n#gkms .gkms-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}\n#gkms .gkms-opt{display:flex;align-items:center;justify-content:center;text-align:center;gap:8px;padding:13px 10px;border:1.5px solid rgba(255,255,255,.34);border-radius:var(--r-md);background:rgba(255,255,255,.08);color:#fff;font-family:var(--font);font-weight:600;font-size:14px;line-height:1.25;cursor:pointer;transition:.15s var(--ease)}\n#gkms .gkms-opt:hover{border-color:#fff;background:rgba(255,255,255,.16)}\n#gkms .gkms-opt.is-sel{background:#fff;color:var(--gk-navy-deep);border-color:#fff}\n#gkms .gkms-row{display:flex;gap:10px;flex-wrap:wrap}\n#gkms .gkms-email{flex:1 1 240px;min-width:0;padding:14px 15px;height:auto;line-height:1.4;border:1.5px solid rgba(255,255,255,.34);border-radius:var(--r-md);background:rgba(255,255,255,.96);color:var(--gk-navy-deep);font-family:var(--font);font-size:15px}\n#gkms .gkms-email::placeholder{color:var(--g400)}\n#gkms .gkms-email:focus{outline:none;border-color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.25)}\n#gkms .gkms-submit{flex:0 0 auto;box-shadow:0 6px 18px rgba(13,13,13,.18)}\n#gkms .gkms-hp{position:absolute!important;left:-9999px!important;top:auto;width:1px;height:1px;overflow:hidden;opacity:0}\n#gkms .gkms-consent{display:flex;align-items:flex-start;gap:10px;margin:14px 0 0;font-size:12.5px;color:rgba(255,255,255,.9);line-height:1.5;cursor:pointer;text-align:left}\n#gkms .gkms-consent-cb{flex:none;width:18px;height:18px;margin-top:1px;accent-color:#fff;cursor:pointer}\n#gkms .gkms-consent a{color:#fff;text-decoration:underline}\n#gkms .gkms-req{color:var(--gk-gold)}\n#gkms .gkms-msg{margin:12px 0 0;font-size:14px;min-height:1px;text-align:center;color:#fff}\n#gkms .gkms-msg.err{color:#FFDADA}\n#gkms .gkms-done{max-width:560px;margin:28px auto 0;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.30);border-radius:var(--r-lg);padding:24px;text-align:center;color:#fff;font-size:16px;font-weight:600;line-height:1.5}\n#gkms .cta-alt{margin-top:20px;position:relative}\n#gkms .cta-alt a{color:#fff;font-weight:600;font-size:14px;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.5);padding-bottom:2px}\n#gkms .cta-alt a:hover{border-color:#fff}\n@media(max-width:560px){#gkms .gkms-choices{grid-template-columns:1fr}}\n\n\/* ---- inline line icons (replacing emoji) ---- *\/\n#gkms .ci svg{width:28px;height:28px;display:block;color:#DCE4EF}\n#gkms .cyc-step.on .ci svg{color:#fff}\n#gkms .how-point .hi svg{width:24px;height:24px;display:block}\n#gkms .strip .st-ic svg{width:26px;height:26px;display:block}\n#gkms .gkms-hint{margin:0 0 16px;font-size:13px;color:rgba(255,255,255,.88);line-height:1.55;text-align:center}\n#gkms .gkms-submit{transition:background .2s var(--ease),color .2s var(--ease),border-color .2s var(--ease)}\n#gkms .gkms-submit.is-check{background:var(--ok);border-color:var(--ok);color:#fff;pointer-events:none}\n#gkms .gkms-submit svg{width:18px;height:18px;flex:0 0 auto;margin-right:2px}\n\n\n\/* ---- multi-page additions ---- *\/\n#gkms .subhero{position:relative;overflow:hidden;color:#fff;padding:120px 0 72px;\n  background:linear-gradient(115deg,#0F1626 0%,#192A3D 55%,#1F2A4A 100%)}\n#gkms .subhero .spectrum{position:absolute;inset:0;width:100%;height:100%;opacity:.20;pointer-events:none}\n#gkms .subhero .display{color:#fff;max-width:22ch;font-size:clamp(34px,4.4vw,54px)}\n#gkms .subhero .display .accent{color:var(--gk-blue-400)}\n#gkms .subhero .lead{color:#C8D0DC;max-width:62ch;margin-top:18px}\n#gkms .subhero .eyebrow{color:var(--gk-blue-400)}\n#gkms .subhero .eyebrow::before{background:var(--gk-blue-400)}\n#gkms .crumb{font-size:13px;color:#8A93A0;margin-bottom:18px}\n#gkms .crumb a{color:#C8D0DC}\n#gkms .crumb a:hover{color:#fff}\n#gkms .teaser-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}\n#gkms a.teaser{display:flex;flex-direction:column;background:#fff;border:1px solid var(--g100);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-sm);transition:.2s var(--ease);color:inherit}\n#gkms a.teaser:hover{transform:translateY(-3px);box-shadow:var(--sh-md);border-color:var(--gk-blue-100)}\n#gkms .teaser .tph{height:230px;overflow:hidden}\n#gkms .teaser .tph img{width:100%;height:100%;object-fit:cover}\n#gkms .teaser .tbody{padding:20px 22px 22px}\n#gkms .teaser .tk{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--gk-blue);margin-bottom:8px}\n#gkms .teaser h3{font-size:18px;color:var(--gk-navy-deep);margin-bottom:6px}\n#gkms .teaser p{font-size:14px;color:var(--gk-slate);line-height:1.55}\n#gkms .teaser .tgo{margin-top:auto;padding-top:14px;font-size:13.5px;font-weight:700;color:var(--gk-blue)}\n@media(max-width:940px){#gkms .teaser-grid{grid-template-columns:1fr}}\n#gkms .pager{display:flex;justify-content:space-between;gap:14px;max-width:1200px;margin:0 auto;padding:34px 24px}\n#gkms .pager a{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--gk-navy-deep)}\n#gkms .pager a:hover{color:var(--gk-blue)}\n\/* ---- packshot rule: no frame, no background, full device visible ---- *\/\n#gkms .prod-photo{background:none;border:none;box-shadow:none;padding:0;border-radius:0;overflow:visible}\n#gkms .prod-photo::after{display:none}\n#gkms .prod-photo img{max-height:560px;max-width:100%;width:auto;object-fit:contain}\n#gkms .packshot-stage{background:none;border:0;box-shadow:none;padding:0;text-align:center}\n#gkms .packshot-stage img{max-width:100%;height:auto;max-height:520px;object-fit:contain;filter:drop-shadow(0 24px 42px rgba(25,42,61,.28))}\n#gkms .tabpanel.active:not(:has(img)){grid-template-columns:1fr!important;max-width:840px}\n#gkms .product:not(:has(img)){grid-template-columns:1fr!important;max-width:840px}\n#gkms .how-grid:not(:has(img)):not(:has(.cycle)){grid-template-columns:1fr!important;max-width:840px}\n\/* ---- click-to-load YouTube facade ---- *\/\n#gkms .vid-embed{position:relative;width:100%;aspect-ratio:16\/9;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--sh-md);background:#0F1626}\n#gkms .vid-embed .yt-facade{display:block;width:100%;height:100%;margin:0;padding:0;border:0;cursor:pointer;background:#0F1626;position:relative}\n#gkms .vid-embed .yt-facade img{width:100%;height:100%;object-fit:cover;display:block}\n#gkms .vid-embed .yt-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}\n#gkms .vid-embed .yt-play svg{width:74px;height:auto;filter:drop-shadow(0 6px 16px rgba(0,0,0,.45));transition:transform .18s var(--ease)}\n#gkms .vid-embed .yt-facade:hover .yt-play svg,#gkms .vid-embed .yt-facade:focus-visible .yt-play svg{transform:scale(1.09)}\n#gkms .vid-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}\n\n<\/style>\n\n<div id=\"gkms\">\n<div id=\"gkms-progress\" style=\"position:fixed;top:0;left:0;height:3px;background:var(--gk-blue);width:0;z-index:200\"><\/div>\n<nav class=\"nav\">\n    <div class=\"nav-in\">\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/\"><img decoding=\"async\" class=\"logo\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/logo-full-2.png\" alt=\"Gekko Photonics\"><\/a>\n      <div class=\"nav-links\">\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/\">Home<\/a>\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/chemistry\/\">Chemistry<\/a>\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/what-we-measure\/\" class=\"active\">What we measure<\/a>\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/how-it-works\/\">How it works<\/a>\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/proof\/\">Proof<\/a>\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/compliance\/\">Compliance<\/a>\n      <a href=\"\/sulfur-thiosulfate-fertilizers\/instrument\/\">Instrument<\/a>\n      <\/div>\n      <a class=\"btn btn-primary\" href=\"#contact\">Test on your samples<\/a>\n    <\/div>\n  <\/nav>\n<header class=\"subhero\">\n  <svg class=\"spectrum\" viewBox=\"0 0 1200 420\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n    <path d=\"M0,320 L90,312 L150,290 L195,195 L240,305 L315,292 L375,185 L420,305 L480,262 L540,135 L600,290 L660,276 L720,225 L780,296 L840,282 L900,205 L960,300 L1020,288 L1080,240 L1140,292 L1200,270\" fill=\"none\" stroke=\"#019FE2\" stroke-width=\"2\"><\/path>\n    <path d=\"M0,335 L90,328 L150,318 L195,245 L240,325 L315,312 L375,232 L420,322 L480,292 L540,196 L600,312 L660,300 L720,258 L780,318 L840,305 L900,242 L960,320 L1020,308 L1080,272 L1140,314 L1200,295\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1\" stroke-dasharray=\"4 6\"><\/path>\n  <\/svg>\n  <div class=\"hero-in\" style=\"position:relative\">\n    <div class=\"crumb\"><a href=\"\/sulfur-thiosulfate-fertilizers\/\">Sulfur &amp; thiosulfate fertilizers<\/a> \/ What we measure<\/div>\n    <span class=\"eyebrow\">What we measure<\/span>\n    <h1 class=\"display\" style=\"margin-top:16px\">Five process values from <span class=\"accent\">one Raman spectrum<\/span>.<\/h1>\n    <p class=\"lead\">Thiosulfate concentration, the N\/S ratio, solution homogeneity, sulfate and stream stability - each read inline, in the flowing absorption stream itself with no sample drawn, while the product is still correctable. The offline lab methods stay as the reference; they stop being the gate.<\/p>\n  <\/div>\n<\/header>\n\n<!-- ===== 01 \u00b7 OVERVIEW ===== -->\n  <section id=\"overview\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">01<\/span>\n        <span class=\"eyebrow\">What we measure<\/span>\n        <h2 class=\"h2\">One spectrum in. Five process values out.<\/h2>\n        <p class=\"lead\">In ATS and related sulfur-fertilizer production, the on-spec decision reduces to a handful of composition values - thiosulfate concentration and the N\/S ratio chief among them - and most still come back from the lab after the absorption stream has moved on. All five live in the Raman spectrum of the flowing liquor, read inline in the stream, pipeline or tank itself with no sample drawn. Each is extracted by its own chemometric model, calibrated against your laboratory's reference values - iodometric titration and ion chromatography - during feasibility.<\/p>\n      <\/div>\n      <div class=\"ctx-grid\">\n        <div class=\"ctx-item reveal\"><div class=\"k\">Source<\/div><div class=\"v\">One Raman spectrum<\/div><p>Laser excitation at 785 nm, with a 1064 nm variant for strongly fluorescing media. Spectral range 300-1650 or 300-3500 cm&#8315;&sup1; at 8 cm&#8315;&sup1; resolution. Water is a weak Raman scatterer, so these aqueous sulfur streams read cleanly.<\/p><\/div>\n        <div class=\"ctx-item reveal\"><div class=\"k\">Acquisition<\/div><div class=\"v\">From 5 seconds<\/div><p>A single acquisition takes from 5 s, inside a 5-300 s window. The absorption stream becomes a live curve instead of a titration point every 20 to 30 minutes.<\/p><\/div>\n        <div class=\"ctx-item reveal\"><div class=\"k\">Extraction<\/div><div class=\"v\">One model per parameter<\/div><p>AI and advanced chemometrics with a CNN core in Spectrally OS, trained on your ATS, KTS\/CaTS and AMS matrices - more accurate and faster than the PLS and PCA benchmark, not a generic library calibration.<\/p><\/div>\n        <div class=\"ctx-item reveal\"><div class=\"k\">Delivery<\/div><div class=\"v\">Ordinary process tags<\/div><p>Values arrive in the PLC and DCS over PROFIBUS and PROFINET, and onward to MES, SCADA and LIMS. Every measurement is stored and exportable as CSV, PDF or raw spectra.<\/p><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== ANALYTE + SPECTRUM EXPLORER ===== -->\n  <section id=\"measure\" class=\"ctx\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">02<\/span>\n        <span class=\"eyebrow\">What Spectrally reads<\/span>\n        <h2 class=\"h2\">The values that decide whether a stream is on spec.<\/h2>\n        <p class=\"lead\">Each value is pulled straight from the Raman spectrum by a dedicated chemometric model. Select a parameter to see where it sits on the spectrum.<\/p>\n      <\/div>\n\n      <div class=\"explorer\">\n        <div class=\"analyte-list\" id=\"gkms-analytes\">\n          <button class=\"analyte active\" data-a=\"0\"><span class=\"n\">Thiosulfate concentration<\/span><span class=\"band\">master variable<\/span><\/button>\n          <button class=\"analyte\" data-a=\"1\"><span class=\"n\">N\/S ratio<\/span><span class=\"band\">N\/S<\/span><\/button>\n          <button class=\"analyte\" data-a=\"2\"><span class=\"n\">Solution homogeneity<\/span><span class=\"band\">uniformity<\/span><\/button>\n          <button class=\"analyte\" data-a=\"3\"><span class=\"n\">Sulfate SO&#8324;&sup2;&#8315;<\/span><span class=\"band\">~976 cm&#8315;&sup1;<\/span><\/button>\n          <button class=\"analyte\" data-a=\"4\"><span class=\"n\">Stream clarity \/ stability<\/span><span class=\"band\">baseline<\/span><\/button>\n        <\/div>\n\n        <div class=\"spectrum-panel\">\n          <div class=\"sp-top\">\n            <span class=\"sp-live\"><span class=\"dot\"><\/span>Live &middot; Raman 785 nm<\/span>\n            <span class=\"sp-read\" id=\"gkms-spread\">Absorption stream A-1 &middot; acquiring<\/span>\n          <\/div>\n          <svg class=\"spec-svg\" viewBox=\"0 0 600 200\" preserveAspectRatio=\"none\">\n            <g class=\"grid\">\n              <line x1=\"0\" y1=\"50\" x2=\"600\" y2=\"50\"\/><line x1=\"0\" y1=\"100\" x2=\"600\" y2=\"100\"\/><line x1=\"0\" y1=\"150\" x2=\"600\" y2=\"150\"\/>\n              <line x1=\"150\" y1=\"0\" x2=\"150\" y2=\"200\"\/><line x1=\"300\" y1=\"0\" x2=\"300\" y2=\"200\"\/><line x1=\"450\" y1=\"0\" x2=\"450\" y2=\"200\"\/>\n            <\/g>\n            <path class=\"trace\" id=\"gkms-trace\" d=\"M0,170 L60,166 L110,150 L150,120 L190,158 L240,150 L300,70 L340,150 L400,135 L470,60 L520,150 L560,140 L600,150\"\/>\n            <line class=\"marker\" id=\"gkms-marker\" x1=\"300\" y1=\"0\" x2=\"300\" y2=\"200\"\/>\n            <text class=\"mlabel\" id=\"gkms-mlabel\" x=\"306\" y=\"20\">band<\/text>\n          <\/svg>\n          <div class=\"spec-axis\">Raman shift (cm&#8315;&sup1;) &rarr;<\/div>\n          <div class=\"spec-detail\">\n            <div class=\"sd-name\" id=\"gkms-sdname\">Thiosulfate concentration<\/div>\n            <div class=\"sd-desc\" id=\"gkms-sddesc\">The value ATS is sold on: a strong Raman-active oxyanion, read straight off the flowing stream every few seconds - to single ppm - instead of by 20-30 min iodometric titration.<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 03 \u00b7 THIOSULFATE CONCENTRATION ===== -->\n  <section id=\"thiosulfate\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">03<\/span>\n        <span class=\"eyebrow\">Parameter 1 of 5<\/span>\n        <h2 class=\"h2\">Thiosulfate concentration - the spec number, read live on the stream.<\/h2>\n        <p class=\"lead\">Thiosulfate is the value ATS is sold on. ATS is produced by the continuous absorption of NH&#8323;, H&#8322;S and SO&#8322; gases, so the stream is running while the number is being decided - and Spectrally reads that number in place, without pulling a sample.<\/p>\n      <\/div>\n      <div class=\"how-grid\">\n        <div class=\"how-points\">\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"6.5\"\/><path d=\"M12 2.5v3M12 18.5v3M2.5 12h3M18.5 12h3\"\/><circle cx=\"12\" cy=\"12\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/div><div><h4>Why it decides spec<\/h4><p>ATS carries 12% N and 26% S, and thiosulfate concentration is what the product is graded on. Hold it on spec and the delivery is on spec; let it drift and the result is a customer complaint and a CE-certification problem under Regulation (EU) 2019\/1009.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/div><div><h4>How it is read today<\/h4><p>Iodometric thiosulfate titration - 20 to 30 minutes per pull, with reagents and a technician, describing a stream that has already moved on. Ion chromatography resolves the full anion picture, but at 30 to 60 minutes.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h3.5l2.5-6.5 4 13 2.5-6.5H21\"\/><\/svg><\/div><div><h4>What reading it inline changes<\/h4><p>Thiosulfate is a strong Raman-active oxyanion, so its concentration comes straight off the spectrum every few seconds, to single ppm, while the stream is still correctable. Your feasibility study on your own ATS matrix delivers the validated model and puts the accuracy figure for your chemistry in your hands, benchmarked against iodometric titration.<\/p><\/div><\/div>\n        <\/div>\n        <div class=\"tp-photo reveal\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/probe-flange-front-2.jpg\" alt=\"Spectrally X1 PROBE flange, front view on a sulfur-fertilizer process line\"><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 04 \u00b7 N\/S RATIO ===== -->\n  <section id=\"ns-ratio\" class=\"ctx\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">04<\/span>\n        <span class=\"eyebrow\">Parameter 2 of 5<\/span>\n        <h2 class=\"h2\">N\/S ratio - the number that defines the product, confirmed continuously.<\/h2>\n        <p class=\"lead\">The nitrogen-to-sulfur ratio is what a sulfur fertilizer is specified on. It is fixed by the absorption balance, and Spectrally confirms it continuously from the same spectrum rather than once per shift.<\/p>\n      <\/div>\n      <div class=\"how-grid\">\n        <div class=\"tp-photo reveal\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/ats-absorption-plant.jpg\" alt=\"Ammonium thiosulfate absorption plant with a gas-absorption column and clear liquid-fertilizer storage tanks\"><\/div>\n        <div class=\"how-points\">\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"6.5\"\/><path d=\"M12 2.5v3M12 18.5v3M2.5 12h3M18.5 12h3\"\/><circle cx=\"12\" cy=\"12\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/div><div><h4>Why it decides spec<\/h4><p>N\/S is the identity of the grade - 12% N to 26% S in ATS, and the equivalent balance in KTS, CaTS and AMS. Regulation (EU) 2019\/1009 for CE fertilising products calls for documented N and S content, so the ratio is exactly what a buyer and, where required, a Notified Body reconcile.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/div><div><h4>How it is read today<\/h4><p>The ratio is computed from separate anion results - ion chromatography at 30 to 60 minutes for the full S&#8322;O&#8323;&sup2;&#8315; and SO&#8324;&sup2;&#8315; split - or inferred from densitometry, which returns a concentration proxy and no composition.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h3.5l2.5-6.5 4 13 2.5-6.5H21\"\/><\/svg><\/div><div><h4>What reading it inline changes<\/h4><p>N\/S is confirmed live from thiosulfate concentration and solution homogeneity on one spectrum, per delivery and around the clock. The continuous, time-stamped composition record it produces strengthens the CE dossier and the answer to a customer audit.<\/p><\/div><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 05 \u00b7 SOLUTION HOMOGENEITY ===== -->\n  <section id=\"homogeneity\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">05<\/span>\n        <span class=\"eyebrow\">Parameter 3 of 5<\/span>\n        <h2 class=\"h2\">Solution homogeneity - tank and line uniformity without spot sampling.<\/h2>\n        <p class=\"lead\">A concentration that reads correct on average can still be uneven across a tank or along a line. Homogeneity is the part of the picture a spot sample cannot see between pulls, and it feeds straight into the N\/S ratio the customer receives.<\/p>\n      <\/div>\n      <div class=\"how-grid\">\n        <div class=\"how-points\">\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"6.5\"\/><path d=\"M12 2.5v3M12 18.5v3M2.5 12h3M18.5 12h3\"\/><circle cx=\"12\" cy=\"12\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/div><div><h4>Why it decides spec<\/h4><p>The declared N\/S ratio only holds if the solution is uniform. A stratified tank or a line that has not fully mixed ships variable product, even when the average is on spec.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/div><div><h4>How it is read today<\/h4><p>Spot sampling at intervals - each pull sees one point at one time, and everything between pulls runs unobserved. KTS, CaTS and AMS in the same family carry the same gap.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h3.5l2.5-6.5 4 13 2.5-6.5H21\"\/><\/svg><\/div><div><h4>What reading it inline changes<\/h4><p>The retractable immersion probe reads the flowing stream in place, so a drift in uniformity shows in the spectrum as it happens, with no spot sampling. The self-cleaning cycle - retract, rinse, return - keeps the optical window clean without interrupting measurement, and these clear, low-fouling aqueous liquors read cleanly.<\/p><\/div><\/div>\n        <\/div>\n        <div class=\"tp-photo reveal\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/probe-connected-1.jpg\" alt=\"Spectrally X1 PROBE fully connected on a thiosulfate-fertilizer line\"><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 06 \u00b7 SULFATE ===== -->\n  <section id=\"sulfate\" class=\"ctx\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">06<\/span>\n        <span class=\"eyebrow\">Parameter 4 of 5<\/span>\n        <h2 class=\"h2\">Sulfate SO&#8324;&sup2;&#8315; - a strong Raman band near 976 cm&#8315;&sup1;.<\/h2>\n        <p class=\"lead\">The sulfate anion is a direct handle on the sulfate side of the chemistry and on stream cleanliness. In AMS (ammonium sulfate) it is the product itself; across the family it is a quality and cleanliness marker.<\/p>\n      <\/div>\n      <div class=\"how-grid\">\n        <div class=\"how-points\">\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"6.5\"\/><path d=\"M12 2.5v3M12 18.5v3M2.5 12h3M18.5 12h3\"\/><circle cx=\"12\" cy=\"12\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/div><div><h4>Why it decides spec<\/h4><p>Sulfate content carries into the N\/S balance and the declared spec, and in AMS it is the sulfate-based nitrogen-plus-sulfur product itself. It is also the cleanest cleanliness signal in a rinse-water or changeover stream.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/div><div><h4>How it is read today<\/h4><p>Ion chromatography, 30 to 60 minutes including sample preparation - a lab loop away from the stream it describes.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h3.5l2.5-6.5 4 13 2.5-6.5H21\"\/><\/svg><\/div><div><h4>What reading it inline changes<\/h4><p>Sulfate shows a strong symmetric-stretch Raman band near 976 cm&#8315;&sup1;, measured directly in a Gekko fertilizer study (FS-001), so it reads continuously off the same spectrum as thiosulfate and the ratio. In rinse water the same band is a cleanliness handle (FS-003), catching carry-over before the next grade is made.<\/p><\/div><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 07 \u00b7 STREAM CLARITY \/ STABILITY ===== -->\n  <section id=\"stability\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">07<\/span>\n        <span class=\"eyebrow\">Parameter 5 of 5<\/span>\n        <h2 class=\"h2\">Stream clarity and stability - drift caught in-process.<\/h2>\n        <p class=\"lead\">Off-trend behaviour and baseline drift are the earliest sign that a stream is moving off spec. Catching them in-process is far cheaper than catching them as a customer complaint after delivery.<\/p>\n      <\/div>\n      <div class=\"how-grid\">\n        <div class=\"how-points\">\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"6.5\"\/><path d=\"M12 2.5v3M12 18.5v3M2.5 12h3M18.5 12h3\"\/><circle cx=\"12\" cy=\"12\" r=\"1.2\" fill=\"currentColor\" stroke=\"none\"\/><\/svg><\/div><div><h4>Why it decides spec<\/h4><p>ATS, KTS and AMS run as clear, low-fouling aqueous liquors, so a change in clarity or baseline stability is a genuine process signal, not noise - and it usually leads the composition numbers.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M12 7.5V12l3 2\"\/><\/svg><\/div><div><h4>How it is read today<\/h4><p>Noticed after the fact, when an offline result comes back or a customer flags a delivery - by which point the affected material has already shipped.<\/p><\/div><\/div>\n          <div class=\"how-point reveal\"><div class=\"hi\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M3 12h3.5l2.5-6.5 4 13 2.5-6.5H21\"\/><\/svg><\/div><div><h4>What reading it inline changes<\/h4><p>Spectrally OS flags baseline drift and off-trend spectra as they happen, with PASS\/FAIL classification and alerts to the PLC and DCS. The line is steered on the live signal, so a deviation is corrected in the stream instead of explained after it.<\/p><\/div><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ===== 08 \u00b7 WHAT COMES OFF YOUR CRITICAL PATH ===== -->\n  <section id=\"displaced\">\n    <div class=\"wrap\">\n      <div class=\"sec-head reveal\">\n        <span class=\"num\">08<\/span>\n        <span class=\"eyebrow\">The offline methods, displaced<\/span>\n        <h2 class=\"h2\">What comes off your critical path.<\/h2>\n        <p class=\"lead\">None of these methods disappears. They move from real-time gatekeeper to periodic verification - and the on-spec decision stops waiting for them. Iodometric titration and ion chromatography stay the reference method; Spectrally owns the composition side inline - thiosulfate, N\/S ratio, sulfate and homogeneity. Where a standard calls for trace-metal certification, that stays with ICP: a clean division of labor.<\/p>\n      <\/div>\n      <div class=\"repl\">\n        <div class=\"item reveal\"><span class=\"lag\">20-30 min<\/span><div><div class=\"m\">Iodometric titration - thiosulfate<\/div><div class=\"s\">A manual pull plus reagents, describing a stream already gone. Becomes a periodic reference; thiosulfate is read inline.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">30-60 min<\/span><div><div class=\"m\">Ion chromatography (S&#8322;O&#8323;&sup2;&#8315;, SO&#8324;&sup2;&#8315;)<\/div><div class=\"s\">The full anion split verified inline as composition. IC stays the reference method behind it.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">indirect<\/span><div><div class=\"m\">Densitometry<\/div><div class=\"s\">A concentration proxy without composition. N\/S ratio and homogeneity confirmed live from the spectrum instead.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">ICP scope<\/span><div><div class=\"m\">ICP - trace metals<\/div><div class=\"s\">Raman owns composition inline; ICP owns trace-metal certification. A clean division of labor.<\/div><\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<div class=\"pager\">\n    <span><a href=\"\/sulfur-thiosulfate-fertilizers\/chemistry\/\">&larr; Chemistry<\/a><\/span>\n    <span><a href=\"\/sulfur-thiosulfate-fertilizers\/how-it-works\/\">How it works &rarr;<\/a><\/span>\n  <\/div>\n<section id=\"contact\">\n    <div class=\"wrap\">\n      <div class=\"cta reveal\">\n        <span class=\"eyebrow no-line\" style=\"color:#fff;justify-content:center\">Your next step<\/span>\n        <h2 class=\"h2\">See these values measured on your own ATS, KTS\/CaTS or AMS stream.<\/h2>\n        <p>Send representative samples or process data from your ATS, KTS\/CaTS or AMS stream. We build and validate the chemometric models on your matrix and report which of these values inline Raman reads on your line, and how accurately, benchmarked against iodometric titration and ion chromatography. Your feasibility study hands you the validated model and the numbers before any commitment. Where a standard calls for trace-metal certification, that stays with ICP: a clean division of labor.<\/p>\n        <form class=\"gkms-form\" data-region=\"m3-sulfur-thiosulfate-fertilizers\" data-region-label=\"Microsite M3 - Sulfur and thiosulfate fertilizers (ATS)\" data-source=\"microsite-m3-what-we-measure\" novalidate>\n          <div class=\"gkms-form-q\">What would you like to do?<\/div>\n          <div class=\"gkms-choices\" role=\"radiogroup\" aria-label=\"What would you like to do?\">\n            <button type=\"button\" class=\"gkms-opt is-sel\" data-val=\"feasibility\" role=\"radio\" aria-checked=\"true\">Feasibility study<\/button>\n            <button type=\"button\" class=\"gkms-opt\" data-val=\"workshop\" role=\"radio\" aria-checked=\"false\">Workshop seat<\/button>\n            <button type=\"button\" class=\"gkms-opt\" data-val=\"info\" role=\"radio\" aria-checked=\"false\">Send info<\/button>\n          <\/div>\n          <p class=\"gkms-hint\" id=\"gkms-hint\"><\/p>\n          <div class=\"gkms-row\">\n            <input type=\"email\" class=\"gkms-email\" name=\"email\" required placeholder=\"you@company.com\" autocomplete=\"email\" aria-label=\"Your work email\">\n            <button type=\"submit\" class=\"btn btn-light gkms-submit\">Send request<\/button>\n          <\/div>\n          <input type=\"text\" class=\"gkms-hp\" name=\"company_hp\" tabindex=\"-1\" autocomplete=\"off\" aria-hidden=\"true\">\n          <label class=\"gkms-consent\"><input type=\"checkbox\" class=\"gkms-consent-cb\" name=\"consent\" required><span>By submitting this form, I confirm I have read and understood the <a href=\"https:\/\/gekkophotonics.com\/en\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">privacy policy<\/a> <span class=\"gkms-req\">*<\/span><\/span><\/label>\n          <p class=\"gkms-msg\" aria-live=\"polite\"><\/p>\n        <\/form>\n        <p class=\"cta-alt\"><a href=\"https:\/\/gekkophotonics.com\/products\/spectrally-inline\/\">Explore Spectrally X1 INLINE -&gt;<\/a><\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n<footer class=\"foot\">\n    <div class=\"wrap\">\n      <div class=\"foot-grid\">\n        <div>\n          <img decoding=\"async\" class=\"flogo\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/logo-full-2.png\" alt=\"Gekko Photonics\">\n          <p class=\"ftag\">Engineering-Driven Analytics. Real-time process composition with inline Raman spectroscopy.<\/p>\n        <\/div>\n        <div>\n          <h5>Platform<\/h5>\n          <a href=\"https:\/\/gekkophotonics.com\/products\/spectrally-inline\/\">Spectrally X1 INLINE<\/a>\n          <a href=\"https:\/\/gekkophotonics.com\/\">Spectrally X1 PROBE<\/a>\n          <a href=\"https:\/\/gekkophotonics.com\/\">Spectrally OS<\/a>\n        <\/div>\n        <div>\n          <h5>This mini-site<\/h5>\n          <a href=\"\/sulfur-thiosulfate-fertilizers\/chemistry\/\">Chemistry<\/a>\n          <a href=\"\/sulfur-thiosulfate-fertilizers\/what-we-measure\/\">What we measure<\/a>\n          <a href=\"\/sulfur-thiosulfate-fertilizers\/how-it-works\/\">How it works<\/a>\n          <a href=\"\/sulfur-thiosulfate-fertilizers\/proof\/\">Proof<\/a>\n          <a href=\"\/sulfur-thiosulfate-fertilizers\/compliance\/\">Compliance<\/a>\n          <a href=\"\/sulfur-thiosulfate-fertilizers\/instrument\/\">Instrument<\/a>\n        <\/div>\n        <div>\n          <h5>Contact<\/h5>\n          <a href=\"mailto:contact@gekkophotonics.com\">contact@gekkophotonics.com<\/a>\n          <a href=\"https:\/\/gekkophotonics.com\/\">gekkophotonics.com<\/a>\n          <div class=\"addr\">NextCorps, 260 E. Main Street, Suite 6000<br>Rochester, NY 14604, USA<\/div>\n        <\/div>\n      <\/div>\n      <div class=\"fbottom\">\n        <span>&copy; 2026 Gekko Photonics Sp. z o.o. Installation and service by authorized Gekko Photonics technicians only.<\/span>\n        <span class=\"tagpl\">Engineering-Driven Analytics<\/span>\n      <\/div>\n    <\/div>\n  <\/footer>\n<\/div>\n\n<script>\n(function(){\n  var root=document.getElementById('gkms'); if(!root||root.dataset.init)return; root.dataset.init=\"1\";\n\n  var bar=root.querySelector('#gkms-progress');\n  if(bar){window.addEventListener('scroll',function(){\n    var h=document.documentElement,b=document.body;\n    var st=(h.scrollTop||b.scrollTop),sh=(h.scrollHeight-h.clientHeight);\n    bar.style.width=(sh>0?(st\/sh*100):0)+'%';\n  },{passive:true});}\n\n  root.querySelectorAll('a[href^=\"#\"]').forEach(function(a){\n    a.addEventListener('click',function(e){\n      var t=root.querySelector(a.getAttribute('href')); if(!t)return;\n      e.preventDefault(); window.scrollTo({top:t.offsetTop-70,behavior:'smooth'});\n    });\n  });\n\n  var io=new IntersectionObserver(function(es){es.forEach(function(en){if(en.isIntersecting){en.target.classList.add('in');io.unobserve(en.target);}});},{threshold:0.14});\n  root.querySelectorAll('.reveal').forEach(function(el){io.observe(el);});\n\n  root.querySelectorAll('.tab').forEach(function(t){\n    t.addEventListener('click',function(){\n      root.querySelectorAll('.tab').forEach(function(x){x.classList.remove('active');});\n      root.querySelectorAll('.tabpanel').forEach(function(x){x.classList.remove('active');});\n      t.classList.add('active');\n      var p=root.querySelector('.tabpanel[data-panel=\"'+t.dataset.tab+'\"]'); if(p)p.classList.add('active');\n    });\n  });\n\n  if(root.querySelector('#gkms-analytes')){\n    var A=[\n      {n:'Thiosulfate concentration', d:'The value ATS is sold on: a strong Raman-active oxyanion, read straight off the flowing stream every few seconds - to single ppm - instead of by 20-30 min iodometric titration.', x:470, lab:'S\u2082O\u2083\u00b2\u207b'},\n      {n:'N\/S ratio', d:'The nitrogen-to-sulfur ratio that defines the product. Confirmed continuously from thiosulfate concentration and homogeneity on the same spectrum, not reconstructed once per shift.', x:380, lab:'N\/S'},\n      {n:'Solution homogeneity', d:'Tank and line uniformity read in place by the immersion probe, so stratification shows in the spectrum immediately - no spot sampling between pulls.', x:150, lab:'uniformity'},\n      {n:'Sulfate SO\u2084\u00b2\u207b', d:'A strong symmetric-stretch Raman band near 976 cm\u207b\u00b9 (Gekko fertilizer study FS-001) - a direct handle on the sulfate side and on stream cleanliness.', x:300, lab:'~976 cm\u207b\u00b9'},\n      {n:'Stream clarity \/ stability', d:'Baseline drift and off-trend spectra flagged in-process, with PASS\/FAIL and alerts to the PLC and DCS, before a deviation becomes a customer complaint.', x:540, lab:'baseline'}\n    ];\n    var mk=root.querySelector('#gkms-marker'),ml=root.querySelector('#gkms-mlabel'),\n        sn=root.querySelector('#gkms-sdname'),sd=root.querySelector('#gkms-sddesc'),rd=root.querySelector('#gkms-spread');\n    function selA(i){\n      root.querySelectorAll('.analyte').forEach(function(b){b.classList.toggle('active',+b.dataset.a===i);});\n      var a=A[i]; if(!a||!mk)return;\n      mk.setAttribute('x1',a.x); mk.setAttribute('x2',a.x); mk.classList.add('on');\n      ml.setAttribute('x', a.x>540? a.x-70 : a.x+6); ml.textContent=a.lab; ml.classList.add('on');\n      sn.textContent=a.n; sd.textContent=a.d;\n      rd.textContent='Absorption stream \u00b7 '+a.lab+' locked';\n    }\n    root.querySelectorAll('.analyte').forEach(function(b){b.addEventListener('click',function(){selA(+b.dataset.a);});});\n    selA(0);\n  }\n\n  var vio=new IntersectionObserver(function(es){es.forEach(function(en){\n    if(en.isIntersecting){en.target.querySelectorAll('.vbar span').forEach(function(s){s.style.width=s.dataset.w+'%';});vio.unobserve(en.target);}\n  });},{threshold:0.3});\n  root.querySelectorAll('.versus').forEach(function(el){vio.observe(el);});\n\n  root.querySelectorAll('.yt-facade').forEach(function(btn){\n    btn.addEventListener('click',function(){\n      var id=btn.getAttribute('data-yt'); if(!id)return;\n      var ifr=document.createElement('iframe');\n      ifr.src='https:\/\/www.youtube-nocookie.com\/embed\/'+id+'?autoplay=1&rel=0&modestbranding=1';\n      ifr.setAttribute('allow','autoplay; encrypted-media; picture-in-picture; web-share');\n      ifr.setAttribute('allowfullscreen','');\n      ifr.setAttribute('title','Spectrally self-cleaning probe cycle');\n      var wrap=btn.closest('.vid-embed')||btn.parentElement;\n      wrap.innerHTML=''; wrap.appendChild(ifr);\n    });\n  });\n\n  var cyc=root.querySelector('#gkms-cycle'),ci=0;\n  if(cyc){setInterval(function(){\n    var steps=cyc.querySelectorAll('.cyc-step'); steps.forEach(function(s){s.classList.remove('on');});\n    steps[ci].classList.add('on'); ci=(ci+1)%steps.length;\n  },1300);}\n\n  function countUp(el){\n    var to=parseFloat(el.dataset.to),dec=+(el.dataset.dec||0),suf=el.dataset.suffix||'',pre=el.dataset.prefix||'';\n    var t0=null,dur=1400;\n    function step(ts){ if(!t0)t0=ts; var p=Math.min((ts-t0)\/dur,1); var e=1-Math.pow(1-p,3); var val=(to*e).toFixed(dec);\n      el.innerHTML=pre+val+(suf?'<span class=\"u\">'+suf+'<\/span>':''); if(p<1)requestAnimationFrame(step);}\n    requestAnimationFrame(step);\n  }\n  var mio=new IntersectionObserver(function(es){es.forEach(function(en){\n    if(en.isIntersecting){en.target.querySelectorAll('.mv').forEach(countUp);mio.unobserve(en.target);}\n  });},{threshold:0.4});\n  root.querySelectorAll('.metrics').forEach(function(el){mio.observe(el);});\n})();\n<\/script>\n\n<script>\n(function(){\n  var form=document.querySelector('#gkms .gkms-form'); if(!form||form.dataset.init) return; form.dataset.init='1';\n  var opts=form.querySelectorAll('.gkms-opt'), msg=form.querySelector('.gkms-msg'),\n      submitBtn=form.querySelector('.gkms-submit'), hint=form.querySelector('#gkms-hint'), chosen='feasibility';\n  var SRC=form.getAttribute('data-source')||'microsite-m1';\n  var HUB='\/usa-workshops\/?utm_source=microsite&utm_medium=microsite&utm_campaign=usa-workshops&utm_content=m1-formaldehyde-amino-resins';\n  var LABEL={ feasibility:'Send request', workshop:'See workshop dates', info:'Send info' };\n  var HINT={\n    feasibility:'Feasibility runs on your samples in the Gekko lab - no hardware to buy to find out whether it works.',\n    workshop:'One-day, on-site workshops at nine US locations in 2026 - a live demonstration on the instrument, 20 seats a day, free to attend. Pick your city on the next step.',\n    info:'We will email an overview, specs and a sample report for your process - no meeting required.'\n  };\n  function apply(){ if(submitBtn && !submitBtn.classList.contains('is-check')) submitBtn.textContent=LABEL[chosen]||'Send request'; if(hint) hint.textContent=HINT[chosen]||''; }\n  opts.forEach(function(b){ b.addEventListener('click',function(){ chosen=b.getAttribute('data-val');\n    opts.forEach(function(x){ var on=x===b; x.classList.toggle('is-sel',on); x.setAttribute('aria-checked',on?'true':'false'); });\n    if(msg){ msg.textContent=''; msg.className='gkms-msg'; } apply(); }); });\n  apply();\n  form.addEventListener('submit',function(e){ e.preventDefault();\n    var email=(form.querySelector('.gkms-email').value||'').trim();\n    if(!chosen){ msg.className='gkms-msg err'; msg.textContent='Please choose an option.'; return; }\n    if(!\/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$\/.test(email)){ msg.className='gkms-msg err'; msg.textContent='Please enter a valid email address.'; return; }\n    var cc=form.querySelector('.gkms-consent-cb');\n    if(cc && !cc.checked){ msg.className='gkms-msg err'; msg.textContent='Please confirm you have read the privacy policy.'; return; }\n    var old=submitBtn.textContent; submitBtn.disabled=true; submitBtn.textContent='Sending...';\n    var payload={ email:email, response:chosen, region:form.getAttribute('data-region')||'', region_label:form.getAttribute('data-region-label')||'', consent:(cc&&cc.checked)?'yes':'', source:SRC, page_url:location.href, page_title:document.title, company_hp:(form.querySelector('.gkms-hp').value||'') };\n    try{ var q=new URLSearchParams(location.search); ['utm_source','utm_medium','utm_campaign','utm_term','utm_content'].forEach(function(k){ var v=q.get(k); if(v) payload[k]=v; }); }catch(_){}\n    fetch('\/wp-json\/gekko\/v1\/rsvp',{ method:'POST', headers:{'Content-Type':'application\/json'}, body:JSON.stringify(payload) })\n      .then(function(r){ return r.json().catch(function(){ return {ok:false}; }); })\n      .then(function(d){ if(d&&d.ok){\n          if(chosen==='workshop'){\n            submitBtn.classList.add('is-check'); submitBtn.disabled=false;\n            submitBtn.innerHTML='<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M20 6L9 17l-5-5\"\/><\/svg> Taking you to the workshops';\n            if(msg){ msg.className='gkms-msg'; msg.textContent=''; }\n            setTimeout(function(){ window.location.href=HUB; }, 950);\n          } else {\n            var t= chosen==='feasibility' ? 'Thanks - we will reply with the next steps for a feasibility study on your samples.' : 'Thanks - we will send the information shortly.';\n            form.className='gkms-form gkms-done'; form.textContent=t;\n          }\n        } else { msg.className='gkms-msg err'; msg.textContent='Something went wrong. Please try again, or email contact@gekkophotonics.com.'; submitBtn.disabled=false; submitBtn.textContent=old; } })\n      .catch(function(){ msg.className='gkms-msg err'; msg.textContent='Network error. Please try again.'; submitBtn.disabled=false; submitBtn.textContent=old; });\n  });\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":2824,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2826","page","type-page","status-publish","hentry"],"blocksy_meta":[],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2826","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/comments?post=2826"}],"version-history":[{"count":0,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2826\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2824"}],"wp:attachment":[{"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/media?parent=2826"}],"curies":[{"name":"entry","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}