{"id":2729,"date":"2026-07-14T10:36:22","date_gmt":"2026-07-14T08:36:22","guid":{"rendered":"https:\/\/gekkophotonics.com\/formaldehyde-amino-resins\/chemistry\/"},"modified":"2026-07-20T13:24:39","modified_gmt":"2026-07-20T11:24:39","slug":"chemistry","status":"publish","type":"page","link":"https:\/\/gekkophotonics.com\/en\/formaldehyde-amino-resins\/chemistry-coverage-raman-gekko-photonics\/","title":{"rendered":"Chemistry Coverage \u2013 PF, UF, MUF\/MF, UFC &amp; Formalin Inline Raman | Gekko Photonics"},"content":{"rendered":"<style>.elementor-2729 .elementor-element.elementor-element-b267a0e{margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 0px;}.elementor-2729 .elementor-element.elementor-element-311b3c9 > .elementor-element-populated{padding:0px 0px 0px 0px;}@media(min-width:768px){.elementor-2729 .elementor-element.elementor-element-311b3c9{width:100%;}}<\/style>\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2729\" class=\"elementor elementor-2729 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-b267a0e gk-ms-host elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b267a0e\" 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-311b3c9 gk-ms-col\" data-id=\"311b3c9\" 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-7ad389c elementor-widget elementor-widget-html\" data-id=\"7ad389c\" 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\/gekko-m1-hero-resin-plant-wide-scaled.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\n\/* ---- packshot rule: no frame, no background, full device visible ----\n   Neutralizes the dark .prod-photo card from the base design - packshots stand free\n   on the page; the studio renders carry their own soft floor shadow. *\/\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\/* transparent-PNG packshots (product family lineup): silhouette drop-shadow *\/\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\/* sections whose image was removed: collapse the empty 2nd column so text isn't a half-empty box.\n   Protect the self-cleaning block (.cycle) which is intentionally two text columns. *\/\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 (how-it-works self-cleaning video) ---- *\/\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=\"\/formaldehyde-amino-resins\/\"><img decoding=\"async\" class=\"logo\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/logo-full.png\" alt=\"Gekko Photonics\"><\/a>\n      <div class=\"nav-links\">\n      <a href=\"\/formaldehyde-amino-resins\/\">Home<\/a>\n      <a href=\"\/formaldehyde-amino-resins\/chemistry\/\" class=\"active\">Chemistry<\/a>\n      <a href=\"\/formaldehyde-amino-resins\/what-we-measure\/\">What we measure<\/a>\n      <a href=\"\/formaldehyde-amino-resins\/how-it-works\/\">How it works<\/a>\n      <a href=\"\/formaldehyde-amino-resins\/proof\/\">Proof<\/a>\n      <a href=\"\/formaldehyde-amino-resins\/compliance\/\">Compliance<\/a>\n      <a href=\"\/formaldehyde-amino-resins\/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=\"\/formaldehyde-amino-resins\/\">Formaldehyde &amp; amino resins<\/a> \/ Chemistry<\/div>\n    <span class=\"eyebrow\">Chemistry coverage<\/span>\n    <h1 class=\"display\" style=\"margin-top:16px\">Four chemistries. <span class=\"accent\">One measurement layer.<\/span><\/h1>\n    <p class=\"lead\">PF, UF, MUF\/MF and UFC plus formalin - the condensation chemistries this mini-site covers, and what Spectrally reads in each of them.<\/p>\n  <\/div>\n<\/header>\n\n<!-- ===== 01 \u00b7 COVERAGE OVERVIEW ===== -->\n<section id=\"coverage\" class=\"ctx\">\n  <div class=\"wrap\">\n    <div class=\"sec-head reveal\">\n      <span class=\"num\">01<\/span>\n      <span class=\"eyebrow\">Coverage<\/span>\n      <h2 class=\"h2\">One measurement layer, from methanol to shipped resin.<\/h2>\n      <p class=\"lead\">The formaldehyde value chain runs from methanol oxidation through formalin and UFC to the amino and phenolic resins built on them. Every step shares the same blind spot: composition is known 30-45 minutes after the sample leaves the line - up to 90 for melamine. Spectrally X1 INLINE puts one Raman measurement layer across all of it. A probe in the vessel or line, a chemometric model per matrix, values in your control system in seconds.<\/p>\n    <\/div>\n    <div class=\"ctx-grid\">\n      <div class=\"ctx-item reveal\"><div class=\"k\">Upstream<\/div><div class=\"v\">Formalin \/ HCHO<\/div><p>Methanol oxidation over silver or Fe-Mo catalyst. HCHO, methanol and paraformaldehyde read inline in production, filling and storage.<\/p><\/div>\n      <div class=\"ctx-item reveal\"><div class=\"k\">Intermediate<\/div><div class=\"v\">UFC concentrate<\/div><p>Urea-formaldehyde pre-solution at about 85% solids, F\/U around 4.7. Composition verified in 1-2 minutes at receiving, or inline.<\/p><\/div>\n      <div class=\"ctx-item reveal\"><div class=\"k\">Amino resins<\/div><div class=\"v\">UF &middot; MUF \/ MF<\/div><p>MDF, particleboard and HPL laminate binders. F\/U and F\/M\/U molar ratio, free formaldehyde and urea conversion tracked live.<\/p><\/div>\n      <div class=\"ctx-item reveal\"><div class=\"k\">Phenolic<\/div><div class=\"v\">PF resole \/ novolak<\/div><p>Phenol-formaldehyde condensation for wood panels, abrasives, foundry and laminates. Free monomers and the endpoint read in the reactor.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== 02 \u00b7 PF ===== -->\n<section id=\"pf\">\n  <div class=\"wrap\">\n    <div class=\"sec-head reveal\">\n      <span class=\"num\">02<\/span>\n      <span class=\"eyebrow\">PF &middot; Phenol-formaldehyde<\/span>\n      <h2 class=\"h2\">Phenolic resins: the endpoint decides the batch.<\/h2>\n      <p class=\"lead\">Novolak or resole, produced from phenol and formaldehyde in an aqueous or aqueous-organic reactor. The condensation has to stop at the right point: too early and the resin is under-condensed, too late and the batch over-condenses toward scrap. Residual phenol and formaldehyde are the quality parameters your customers specify.<\/p>\n    <\/div>\n\n    <div class=\"tabpanels reveal\">\n      <div class=\"tabpanel active\">\n        <div>\n          <span class=\"tp-tag\">What Spectrally reads in PF<\/span>\n          <h3>From a 20-40 minute lag to a live curve.<\/h3>\n          <p>Offline detection of residual phenol takes 20-40 minutes per sample. The reaction keeps running while the answer travels, and batch-to-batch F\/Ph variance surfaces later as different reactivity at your customer. The probe reads the mixture where it reacts:<\/p>\n          <ul>\n            <li>F\/Ph molar ratio, continuously through the cook<\/li>\n            <li>Residual phenol and residual formaldehyde in real time<\/li>\n            <li>Condensation endpoint - the batch stops on a measured value, not a time margin<\/li>\n          <\/ul>\n          <p style=\"margin-top:16px\">PF media coat optical windows within days. The self-cleaning probe retracts into a rinse chamber between readings, so the signal holds through long campaigns. The probe tolerates pH 2-10 continuously - covering both the acidic novolak and the alkaline resole route.<\/p>\n        <\/div>\n        <div class=\"tp-photo\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/probe-reactor-line.jpg\" alt=\"Spectrally X1 PROBE on a reactor line\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"proof-grid\" style=\"margin-top:40px\">\n      <div class=\"proof reveal\">\n        <div class=\"pph\"><span class=\"ptag\">PF reaction mixture<\/span><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/probe-resin-line.jpg\" alt=\"Spectrally X1 PROBE on a resin line\"><\/div>\n        <div class=\"pbody\">\n          <h4>Phenol &amp; formaldehyde during synthesis<\/h4>\n          <p>Feasibility models on real PF reaction mixtures tracked phenol with a mean absolute error around <b>0.03 pp<\/b> and formaldehyde around <b>0.21 pp<\/b> versus the standard reference methods.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"proof reveal\">\n        <div class=\"pph\"><span class=\"ptag\">Resin during synthesis<\/span><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/probe-reactor-nozzle.jpg\" alt=\"Spectrally X1 PROBE at a reactor nozzle\"><\/div>\n        <div class=\"pbody\">\n          <h4>Viscosity across the full reaction<\/h4>\n          <p>Regression models at <b>R&sup2; &gt; 0.99<\/b> with uncertainty around <b>&plusmn;0.25 Pa&middot;s<\/b> - a live read on the condensation endpoint instead of a 10-minute offline sampling cycle.<\/p>\n        <\/div>\n      <\/div>\n      <div class=\"proof reveal\">\n        <div class=\"pph\"><span class=\"ptag\">PF deployment<\/span><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/inline-front-panel.jpg\" alt=\"Spectrally X1 INLINE front panel at a resin plant\"><\/div>\n        <div class=\"pbody\">\n          <h4>One plant, documented economics<\/h4>\n          <p>A European PF producer closed its polycondensation control loop this way: payback in roughly <b>6.5 months<\/b>, about <b>180,000 EUR<\/b> saved per year. One plant in the resin segment - a documented case, not a general promise.<\/p>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <div style=\"margin-top:40px\">\n      <h3 style=\"font-size:20px;color:var(--gk-navy-deep);margin-bottom:16px\">What comes off the PF critical path<\/h3>\n      <div class=\"repl\">\n        <div class=\"item reveal\"><span class=\"lag\">20-40 min<\/span><div><div class=\"m\">HPLC - residual phenol<\/div><div class=\"s\">Sample prep, HPLC hardware, a lab technician. Becomes a periodic reference.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">30-45 min<\/span><div><div class=\"m\">Titration (ISO 9020) - formaldehyde<\/div><div class=\"s\">Manual draw from the reactor. Free HCHO is tracked live instead.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">solids only<\/span><div><div class=\"m\">Refractometry<\/div><div class=\"s\">Reads total solids, gives no composition. Replaced by multi-parameter reads.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">10 min cycle<\/span><div><div class=\"m\">Offline viscometry<\/div><div class=\"s\">An indirect proxy for reaction progress. The endpoint is read directly.<\/div><\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== 03 \u00b7 UF ===== -->\n<section id=\"uf\" class=\"ctx\">\n  <div class=\"wrap\">\n    <div class=\"sec-head reveal\">\n      <span class=\"num\">03<\/span>\n      <span class=\"eyebrow\">UF &middot; Urea-formaldehyde<\/span>\n      <h2 class=\"h2\">Urea resins: F\/U drift is the whole game.<\/h2>\n      <p class=\"lead\">UF is the dominant binder for MDF and particleboard - over 80% of the wood-resin market. The F\/U molar ratio moves during the reaction and differs between batches, and it sets the reactivity and cure behavior your customer sees downstream.<\/p>\n    <\/div>\n\n    <div class=\"tabpanels reveal\">\n      <div class=\"tabpanel active\">\n        <div>\n          <span class=\"tp-tag\">What Spectrally reads in UF<\/span>\n          <h3>The titration comes back after the reaction has moved on.<\/h3>\n          <p>The routine today: an operator draws a sample every 10-20 minutes, and the sulfite titration result lands 30-45 minutes later. Off-spec batches mean downtime or disposal of the charge. Inline Raman replaces the loop with a value in seconds:<\/p>\n          <ul>\n            <li>F\/U molar ratio and free formaldehyde, updated in seconds<\/li>\n            <li>Degree of urea conversion through the production batch<\/li>\n            <li>Viscosity inferred from the Raman spectrum - an indirect endpoint read<\/li>\n          <\/ul>\n          <p style=\"margin-top:16px\">The operator sees when the reaction reaches its optimum and stops it there - no over-condensation loss, no conservative time margin. The same data set documents free formaldehyde per batch, the record CARB ATCM 93120 and EN 717-1 emission classes ask for.<\/p>\n        <\/div>\n      <div class=\"tp-photo reveal\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/gen-reactor-agitator.jpg\" alt=\"Stainless steel urea-formaldehyde resin reactor with agitator at a chemical plant\"><\/div><\/div>\n    <\/div>\n\n    <div class=\"duel reveal\" style=\"margin-top:40px\">\n      <div class=\"duel-row duel-head\"><div class=\"old\">UF lab loop<\/div><div class=\"mid\"><\/div><div class=\"new\">Spectrally inline<\/div><\/div>\n      <div class=\"duel-row\"><div class=\"old\"><span class=\"xk\">&times;<\/span>Manual sample from the reactor every 10-20 min<\/div><div class=\"mid\">&rarr;<\/div><div class=\"new\"><span class=\"ck\">&check;<\/span>Probe reads the mixture continuously - no sampling<\/div><\/div>\n      <div class=\"duel-row\"><div class=\"old\"><span class=\"xk\">&times;<\/span>Sulfite titration (EN 120): result in 30-45 min<\/div><div class=\"mid\">&rarr;<\/div><div class=\"new\"><span class=\"ck\">&check;<\/span>Free formaldehyde value in seconds<\/div><\/div>\n      <div class=\"duel-row\"><div class=\"old\"><span class=\"xk\">&times;<\/span>HPLC residual urea: 30-60 min plus sample prep<\/div><div class=\"mid\">&rarr;<\/div><div class=\"new\"><span class=\"ck\">&check;<\/span>Urea conversion tracked through the batch<\/div><\/div>\n      <div class=\"duel-row\"><div class=\"old\"><span class=\"xk\">&times;<\/span>Inline refractometry: solids only, urea vs methylol species unresolved<\/div><div class=\"mid\">&rarr;<\/div><div class=\"new\"><span class=\"ck\">&check;<\/span>Composition, not an index - F\/U, free HCHO, conversion<\/div><\/div>\n      <div class=\"duel-row\"><div class=\"old\"><span class=\"xk\">&times;<\/span>Endpoint by operator experience and a time margin<\/div><div class=\"mid\">&rarr;<\/div><div class=\"new\"><span class=\"ck\">&check;<\/span>Endpoint stopped on the measured value<\/div><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== 04 \u00b7 MUF \/ MF ===== -->\n<section id=\"muf\">\n  <div class=\"wrap\">\n    <div class=\"sec-head reveal\">\n      <span class=\"num\">04<\/span>\n      <span class=\"eyebrow\">MUF \/ MF &middot; Melamine<\/span>\n      <h2 class=\"h2\">Melamine resins: dosing errors priced in real time.<\/h2>\n      <p class=\"lead\">MUF and MF systems for HPL laminates, furniture and flooring surfaces. Melamine added to the UF base buys water and temperature resistance - at several times the price of urea.<\/p>\n    <\/div>\n\n    <div class=\"tabpanels reveal\">\n      <div class=\"tabpanel active\">\n        <div>\n          <span class=\"tp-tag\">What Spectrally reads in MUF \/ MF<\/span>\n          <h3>The margin is set while the reactor runs.<\/h3>\n          <p>A melamine dosing error of &plusmn;5% moves the batch margin and the emission class of the laminate it ends up in. Offline melamine HPLC takes 60-90 minutes with sample preparation, so the producer learns about a dosing error after the reactor is done. Inline, the composition is visible while dosing can still be corrected:<\/p>\n          <ul>\n            <li>F\/M\/U molar ratio - melamine dosing controlled during the reaction, not after<\/li>\n            <li>Free formaldehyde without the titration loop<\/li>\n            <li>Degree of urea conversion and spectrum-inferred viscosity<\/li>\n            <li>Cloud point \/ water tolerance as endpoint indicators<\/li>\n          <\/ul>\n          <p style=\"margin-top:16px\">Per-batch composition records also carry the documentation CARB ATCM 93120 and EN 717-1 \/ EN 438-2 emission classes expect for HPL exports.<\/p>\n        <\/div>\n        <div class=\"tp-photo reveal\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/gen-reactor-bank.jpg\" alt=\"Bank of stainless steel condensation reactors in a resin production plant\"><\/div><\/div>\n    <\/div>\n\n    <div style=\"margin-top:40px\">\n      <h3 style=\"font-size:20px;color:var(--gk-navy-deep);margin-bottom:16px\">What comes off the MUF \/ MF critical path<\/h3>\n      <div class=\"repl\">\n        <div class=\"item reveal\"><span class=\"lag\">60-90 min<\/span><div><div class=\"m\">HPLC - melamine<\/div><div class=\"s\">Specialized hardware plus sample prep. Becomes a periodic reference.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">30-45 min<\/span><div><div class=\"m\">Titration (EN 120) - free HCHO<\/div><div class=\"s\">Manual sampling replaced by a continuous live value.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">calculated<\/span><div><div class=\"m\">Molar ratio from charge weights<\/div><div class=\"s\">Computed from weigh-ins - never verifies what is actually in the reactor.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">10 min cycle<\/span><div><div class=\"m\">Inline \/ offline viscometry<\/div><div class=\"s\">An indirect condensation proxy that carries no composition.<\/div><\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== 05 \u00b7 UFC + FORMALIN ===== -->\n<section id=\"upstream\" class=\"ctx\">\n  <div class=\"wrap\">\n    <div class=\"sec-head reveal\">\n      <span class=\"num\">05<\/span>\n      <span class=\"eyebrow\">UFC &amp; Formalin &middot; Upstream<\/span>\n      <h2 class=\"h2\">The feedstocks: verified in minutes, not trusted on paper.<\/h2>\n      <p class=\"lead\">Formalin is 37-50% HCHO in water with a methanol stabilizer, made by oxidizing methanol over a silver or iron-molybdenum catalyst. UFC concentrates it further into a urea-formaldehyde pre-solution at about 85% solids, F\/U around 4.7. Both feed every resin reactor downstream - and both are usually accepted on a certificate of analysis.<\/p>\n    <\/div>\n\n    <div class=\"tabpanels reveal\">\n      <div class=\"tabpanel active\">\n        <div>\n          <span class=\"tp-tag\">Formalin \/ formaldehyde<\/span>\n          <h3>Producer side: the product stream, read inline.<\/h3>\n          <p>The standard control is sulfite titration at 30-45 minutes per sample - a typical formalin unit has no fast inline HCHO measurement on the finished product. An off-spec batch, with the wrong paraformaldehyde level or too much formic acid, reaches the customer and disturbs their resin cook. Spectrally reads the stream where it flows:<\/p>\n          <ul>\n            <li>HCHO concentration inline - in production, the filling line or storage<\/li>\n            <li>Methanol and paraformaldehyde in the same read<\/li>\n            <li>Composition verified at every transfer in 1-2 minutes instead of a 45-minute titration<\/li>\n          <\/ul>\n        <\/div>\n        <div class=\"tp-photo\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/inline-cabinet-piping.jpg\" alt=\"Spectrally X1 INLINE cabinet on a process line\"><\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"tabpanels reveal\" style=\"margin-top:24px\">\n      <div class=\"tabpanel active\">\n        <div>\n          <span class=\"tp-tag\">UFC &middot; Urea-formaldehyde concentrate<\/span>\n          <h3>Buyer side: every delivery checked before it hits the reactor.<\/h3>\n          <p>UFC composition varies batch to batch and supplier to supplier - &plusmn;5-10% on F\/U. Without a fast check, the buyer either trusts the supplier's CoA or waits 30-45 minutes for an own titration while the charge is already in the reactor. Measured at receiving, the numbers drive the recipe:<\/p>\n          <ul>\n            <li>F\/U and HCHO concentration in 1-2 minutes, at-line or inline<\/li>\n            <li>Automatic correction of urea charges and dilution for each UFC batch<\/li>\n            <li>No manual sampling of concentrated formaldehyde streams<\/li>\n          <\/ul>\n        <\/div>\n      <div class=\"tp-photo reveal\"><img decoding=\"async\" src=\"https:\/\/gekkophotonics.com\/wp-content\/uploads\/2026\/07\/gen-formalin-tanks.jpg\" alt=\"Bulk storage tanks for formalin and urea-formaldehyde concentrate at a plant\"><\/div><\/div>\n    <\/div>\n\n    <div style=\"margin-top:40px\">\n      <h3 style=\"font-size:20px;color:var(--gk-navy-deep);margin-bottom:16px\">What comes off the upstream critical path<\/h3>\n      <div class=\"repl\">\n        <div class=\"item reveal\"><span class=\"lag\">30-45 min<\/span><div><div class=\"m\">Titration (ISO 9020 \/ ASTM E1179) - HCHO<\/div><div class=\"s\">Manual draw and a lab bench. Read inline instead.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">30-60 min<\/span><div><div class=\"m\">HPLC - paraformaldehyde, formic acid<\/div><div class=\"s\">The usual off-spec drivers, tracked in the same Raman read.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">at-line<\/span><div><div class=\"m\">NIR<\/div><div class=\"s\">Used by some producers - gives HCHO and MeOH, but a weaker signal at low paraformaldehyde levels.<\/div><\/div><\/div>\n        <div class=\"item reveal\"><span class=\"lag\">no composition<\/span><div><div class=\"m\">Refractometry \/ densitometry<\/div><div class=\"s\">Indirect concentration indices - no F\/U, no composition.<\/div><\/div><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ===== 06 \u00b7 ONE PLATFORM ===== -->\n<section id=\"platform\" class=\"band\">\n  <div class=\"wrap\">\n    <div class=\"sec-head reveal\">\n      <span class=\"num\">06<\/span>\n      <span class=\"eyebrow no-line\" style=\"color:var(--gk-blue-400)\">One layer, one platform<\/span>\n      <h2 class=\"h2\" style=\"color:#fff;margin-top:12px\">Different chemistries. The same instrument, the same workflow.<\/h2>\n      <p class=\"lead\" style=\"color:#C8D0DC\">Every stream above is measured by the same platform: a Spectrally X1 PROBE in the vessel or line, the Spectrally X1 INLINE analyzer up to 100 m away by fiber, and Spectrally OS turning spectra into process values. What changes per chemistry is the chemometric model - built and validated on your matrix during the feasibility study.<\/p>\n    <\/div>\n    <div class=\"reg-grid\">\n      <div class=\"reg reveal\"><span class=\"flag\">Hardware<\/span><h4>One probe family across streams<\/h4><p>316L immersion probe, IP67, ATEX\/IECEx Zone 0 versions, -40 to +125 &deg;C, up to 16 bar, pH 2-10 continuous. The self-cleaning module retracts and rinses the optics between readings, so fouling PF and UF media stay readable.<\/p><\/div>\n      <div class=\"reg reveal\"><span class=\"flag\">Models<\/span><h4>A dedicated model per matrix<\/h4><p>CNN, PLS and PCA models in Spectrally OS, trained on your recipes against laboratory reference values. Calibration maintains itself from a reference integrated in the probe - no manual recalibration routine.<\/p><\/div>\n      <div class=\"reg reveal\"><span class=\"flag\">Integration<\/span><h4>Values, not spectra, in the control room<\/h4><p>Concentrations and ratios arrive over PROFIBUS \/ PROFINET as ordinary process tags. Every measurement is stored and exportable - CSV, PDF or raw spectra - as a per-batch record.<\/p><\/div>\n    <\/div>\n    <div class=\"metrics\" id=\"gkms-metrics\" style=\"margin-top:56px\">\n      <div class=\"metric\"><div class=\"mk\">Chemistry families<\/div><div class=\"mv\" data-to=\"4\">0<\/div><p>PF, UF, MUF\/MF and UFC \/ formalin - one measurement layer.<\/p><\/div>\n      <div class=\"metric\"><div class=\"mk\">UF market share<\/div><div class=\"mv\" data-to=\"80\" data-prefix=\"&gt;\" data-suffix=\"%\">0<span class=\"u\">%<\/span><\/div><p>UF holds more than 80% of the wood-resin market - the largest stream covered.<\/p><\/div>\n      <div class=\"metric\"><div class=\"mk\">Acquisition<\/div><div class=\"mv\" data-to=\"5\" data-suffix=\"s\">0<span class=\"u\">s<\/span><\/div><p>A single Raman acquisition takes from 5 seconds.<\/p><\/div>\n      <div class=\"metric\"><div class=\"mk\">Slowest loop removed<\/div><div class=\"mv\" data-to=\"90\" data-suffix=\"min\">0<span class=\"u\">min<\/span><\/div><p>Melamine HPLC at the top of its range - off the critical path.<\/p><\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n<div class=\"pager\">\n    <span><\/span>\n    <span><a href=\"\/formaldehyde-amino-resins\/what-we-measure\/\">What we measure &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\">Start with your own chemistry.<\/h2>\n        <p>Send representative samples from your PF, UF, MUF\/MF, UFC or formalin process. We build and validate a chemometric model on your matrix in the Gekko lab and report exactly what inline Raman would read on your line - before any hardware decision.<\/p>\n        <form class=\"gkms-form\" data-region=\"m1-formaldehyde-amino-resins\" data-region-label=\"Microsite M1 - Formaldehyde and amino resins\" data-source=\"microsite-m1-chemistry\" 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.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=\"\/formaldehyde-amino-resins\/chemistry\/\">Chemistry<\/a>\n          <a href=\"\/formaldehyde-amino-resins\/what-we-measure\/\">What we measure<\/a>\n          <a href=\"\/formaldehyde-amino-resins\/how-it-works\/\">How it works<\/a>\n          <a href=\"\/formaldehyde-amino-resins\/proof\/\">Proof<\/a>\n          <a href=\"\/formaldehyde-amino-resins\/compliance\/\">Compliance<\/a>\n          <a href=\"\/formaldehyde-amino-resins\/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:'F\/U \u00b7 F\/Ph molar ratio', d:'The master lever for reactivity. Controlled live from the spectrum instead of inferred after the cook has finished.', x:300, lab:'ratio'},\n      {n:'Free formaldehyde', d:'Residual HCHO tracked in-process, not 20 to 45 minutes later by titration.', x:190, lab:'HCHO'},\n      {n:'Free phenol', d:'Residual phenol read from its aromatic ring band, without an offline HPLC run.', x:470, lab:'~1000 cm\\u207B\\u00B9'},\n      {n:'Resin solids \/ NVM', d:'Non-volatile matter tracked consistently across grades and plants.', x:110, lab:'solids'},\n      {n:'Cloud point \/ water tolerance', d:'Endpoint indicators for melamine and UF systems, read continuously.', x:340, lab:'endpoint'},\n      {n:'Condensation (viscosity) endpoint', d:'The cook endpoint read live as viscosity builds - so you stop exactly on spec.', x:240, lab:'viscosity'}\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='Reactor R-1 \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":2696,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-2729","page","type-page","status-publish","hentry"],"blocksy_meta":[],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2729","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=2729"}],"version-history":[{"count":2,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2729\/revisions"}],"predecessor-version":[{"id":2776,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2729\/revisions\/2776"}],"up":[{"embeddable":true,"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/pages\/2696"}],"wp:attachment":[{"href":"https:\/\/gekkophotonics.com\/en\/wp-json\/wp\/v2\/media?parent=2729"}],"curies":[{"name":"entry","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}