PageSourceSearch

https://emtechengineering.com/services/lab/

html emtechengineering.com collected 2026-10-10 00:26:31 UTC 56,069 bytes, 171 lines download raw bytes

1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Lab | Emtech Engineering</title><meta name="description" content="Site management, coordination, IT and network support, and 3D printing: the operational backbone for R&#38;D and integration programs. Led by Luke Dickie."><meta property="og:title" content="Lab | Emtech Engineering"><meta property="og:description" content="Site management, coordination, IT and network support, and 3D printing: the operational backbone for R&#38;D and integration programs. Led by Luke Dickie."><meta property="og:type" content="website"><meta property="og:site_name" content="Emtech Engineering"><meta name="twitter:card" content="summary_large_image"><link rel="icon" href="/favicon.ico" sizes="48x48"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="icon" type="image/png" sizes="192x192" href="/icon-192.png"><link rel="apple-touch-icon" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><meta name="theme-color" content="#1E3A5F"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap" rel="stylesheet"><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate"><link rel="stylesheet" href="/_astro/culture.BPCcMVHx.css">
2<link rel="stylesheet" href="/_astro/deployment.BaNdD3Le.css">
3<style>.em-svc-cap{background:var(--bg-white);padding:140px 60px}.em-svc-cap__i{max-width:1180px;margin:0 auto}.em-svc-intro{max-width:820px;margin:0 auto 72px;text-align:center;font-family:Plus Jakarta Sans,sans-serif;font-size:20px;line-height:1.65;color:var(--text-2)}.em-svc-cap__hdr{text-align:center;margin-bottom:64px;display:flex;flex-direction:column;align-items:center;gap:18px}.em-svc-cap__grid{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}.em-svc-cap__card{background:var(--bg-white);border:1px solid var(--card-b);border-radius:var(--r-xl);padding:40px 36px;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.em-svc-cap__card:hover{transform:translateY(-4px);box-shadow:0 12px 32px #1e3a5f0f}.em-svc-cap__num{font-family:Outfit,sans-serif;font-size:14px;font-weight:600;color:var(--green-d);letter-spacing:.1em;margin-bottom:16px;display:inline-block}.em-svc-cap__title{font-family:Outfit,sans-serif;font-size:24px;font-weight:600;color:var(--text-1);letter-spacing:-.01em;margin-bottom:14px}.em-svc-cap__desc{font-family:Plus Jakarta Sans,sans-serif;font-size:16.5px;color:var(--text-2);line-height:1.7}.em-svc-proc{background:var(--bg-soft);padding:140px 60px}.em-svc-proc__i{max-width:1180px;margin:0 auto}.em-svc-proc__hdr{text-align:center;margin-bottom:64px;display:flex;flex-direction:column;align-items:center;gap:18px}.em-svc-proc__steps{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.em-svc-proc__step{background:#fff;border:1px solid var(--card-b);border-radius:var(--r-xl);padding:40px 32px}.em-svc-proc__num{font-family:Outfit,sans-serif;font-size:14px;font-weight:600;color:var(--green-d);letter-spacing:.1em;text-transform:uppercase;margin-bottom:16px;display:inline-block}.em-svc-proc__title{font-family:Outfit,sans-serif;font-size:22px;font-weight:600;color:var(--text-1);letter-spacing:-.01em;margin-bottom:14px}.em-svc-proc__desc{font-family:Plus Jakarta Sans,sans-serif;font-size:16px;color:var(--text-2);line-height:1.7}.em-svc-aud{background:var(--bg-white);padding:140px 60px}.em-svc-aud__i{max-width:920px;margin:0 auto;text-align:center}.em-svc-aud__hdr{margin-bottom:56px;display:flex;flex-direction:column;align-items:center;gap:18px}.em-svc-aud__list{list-style:none;padding:0;margin:0 auto;display:flex;flex-direction:column;gap:16px;text-align:left;max-width:780px}.em-svc-aud__list li{font-family:Plus Jakarta Sans,sans-serif;font-size:17.5px;color:var(--text-1);line-height:1.65;padding:20px 26px;background:var(--bg-soft);border-radius:var(--r-lg);border-left:3px solid var(--green)}@media (max-width: 900px){.em-svc-cap,.em-svc-proc,.em-svc-aud{padding:80px 24px}.em-svc-cap__grid,.em-svc-proc__steps{grid-template-columns:1fr;gap:18px}
3.em-svc-cap__card,.em-svc-proc__step{padding:32px 26px}.em-svc-aud__list li{padding:18px 22px;font-size:16.5px}}
4.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;scroll-padding-top:80px;overflow-x:clip}body{font-family:Plus Jakarta Sans,sans-serif;background:#fff;color:#1e3a5f;overflow-x:clip}:root{--bg-white: #FFFFFF;--bg-soft: #EBF1F9;--bg-tint: #D8E6F3;--bg-dark: #1E3A5F;--navy: #1E3A5F;--navy-mid: #1E3A5C;--navy-soft: #3D5A7A;--text-1: #1E3A5F;--text-2: #3D5A7A;--text-3: #6B859F;--card-bg: #FFFFFF;--card-b: #C8DAED;--shadow: 0 2px 20px rgba(30, 58, 95, .08);--shadow-lg: 0 10px 40px rgba(30, 58, 95, .15);--green: #6CC04A;--green-d: #4A8A2E;--green-t: #EBF6E2;--green-b: #A8DA88;--green-btn: #0B1C08;--r-xs: 2px;--r-sm: 3px;--r-md: 4px;--r-xl: 6px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes up{to{opacity:1;transform:translateY(0)}}@keyframes slideIn{to{opacity:1;transform:translate(0)}}@keyframes floatUp{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.em-badge{display:inline-flex;align-items:center;gap:9px;background:var(--green-t);border:1px solid var(--green-b);border-radius:var(--r-sm);padding:7px 14px;font-family:Outfit,sans-serif;font-size:11px;font-weight:700;letter-spacing:.13em;color:var(--green-d);text-transform:uppercase;width:fit-content}.em-badge--dark{background:#6cc04a21;border-color:#6cc04a4d;color:#6cc04a}.em-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0;animation:pulse 2.4s ease-in-out infinite}.em-pip{width:7px;height:7px;border-radius:50%;background:#6cc04a;box-shadow:0 0 8px #6cc04a99;flex-shrink:0;animation:pulse 1.8s ease-in-out infinite}.em-h2{font-family:Outfit,sans-serif;font-size:clamp(32px,4vw,52px);font-weight:600;color:var(--text-1);letter-spacing:-.025em;line-height:1.1;margin:16px 0 14px}.em-h2 em{font-style:normal;color:var(--green)}.em-sub{font-size:17px;color:var(--text-2);line-height:1.7;max-width:600px;margin:0 auto}.em-btn{display:inline-flex;align-items:center;gap:8px;background:var(--green);color:var(--green-btn);font-family:Outfit,sans-serif;font-size:15px;font-weight:700;letter-spacing:.01em;padding:15px 30px;border-radius:var(--r-sm);text-decoration:none;border:none;cursor:pointer;transition:background .2s,transform .15s,box-shadow .2s}.em-btn:hover{background:#7dd65a;transform:translateY(-2px);box-shadow:0 8px 28px #6cc04a52}.em-ghost{display:inline-flex;align-items:center;gap:10px;background:transparent;color:#fff;font-family:Outfit,sans-serif;font-size:15px;font-weight:600;padding:14px 26px;border-radius:var(--r-sm);border:1.5px solid rgba(255,255,255,.3);text-decoration:none;cursor:pointer;transition:border-color .2s,background .2s,transform .15s}.em-ghost:hover{border-color:#ffffffbf;background:#ffffff14;transform:translateY(-2px)}.em-reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay, 0ms)}.em-reveal.is-visible{opacity:1;transform:translateY(0)}.em-grid-bg{position:relative}.em-grid-bg:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px);background-size:48px 48px;pointer-events:none;z-index:0;mask-image:radial-gradient(ellipse at center,#000,#0000004d);-webkit-mask-image:radial-gradient(ellipse at center,rgba(0,0,0,1) 0%,rgba(0,0,0,.3) 100%)}.em-grid-bg--light:before{background-image:linear-gradient(rgba(30,58,95,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(30,58,95,.035) 1px,transparent 1px)}.em-grid-bg>*{position:relative;z-index:1}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.em-reveal{opacity:1!important;transform:none!important}}
5.em-proof{background:var(--bg-white);padding:140px 60px}.em-proof__i{max-width:1280px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:center}.em-proof__h2{font-family:Outfit,sans-serif;font-size:clamp(32px,4vw,52px);font-weight:600;color:var(--text-1);letter-spacing:-.025em;line-height:1.1;margin:20px 0 26px}.em-proof__h2 em{font-style:italic;color:var(--green)}.em-proof__body{font-size:18px;color:var(--text-2);line-height:1.72;margin-bottom:40px}.em-proof__bullets{display:flex;flex-direction:column;gap:16px;list-style:none;padding:0;margin:0}.em-proof__bullet{display:flex;align-items:flex-start;gap:14px}.em-proof__bico{width:22px;height:22px;flex-shrink:0;margin-top:3px;background:var(--green-t);border:1px solid var(--green-b);border-radius:50%;display:flex;align-items:center;justify-content:center}.em-proof__bullet p{font-size:16.5px;color:var(--text-2);line-height:1.65;margin:0}.em-proof__card{border-radius:var(--r-xl);overflow:hidden;position:relative}.em-proof__card-inner{padding:48px;position:relative;z-index:1}.em-proof__card-hdr{font-family:Outfit,sans-serif;font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#ffffff8c;margin-bottom:32px;display:flex;align-items:center;gap:10px}.em-proof__card-dot{width:7px;height:7px;border-radius:50%;background:#6cc04a;display:inline-block}.em-proof__stats{display:grid;grid-template-columns:1fr 1fr;gap:2px;border-radius:var(--r-xs);overflow:hidden}.em-stat{background:#ffffff0f;padding:32px 28px;transition:background .2s}.em-stat:hover{background:#ffffff1a}.em-stat__num{font-family:Outfit,sans-serif;
5font-size:clamp(32px,3.5vw,48px);font-weight:600;color:#6cc04a;letter-spacing:-.03em;line-height:1;margin-bottom:10px}.em-stat__lbl{font-family:Outfit,sans-serif;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#ffffff8c;padding-bottom:14px;border-bottom:2px solid rgba(108,192,74,.3);display:inline-block}@media (max-width: 1024px){.em-proof{padding:100px 40px}.em-proof__i{grid-template-columns:1fr;gap:56px}}@media (max-width: 640px){.em-proof{padding:72px 24px}.em-proof__card-inner{padding:32px}.em-stat{padding:24px 20px}}
6</style>
7<link rel="stylesheet" href="/_astro/_event_.BMBvG4Lx.css">
7<script type="module" src="/_astro/hoisted.Bs3Vp893.js"></script>
7</head> <body> <header class="em-hdr" id="em-hdr"> <div class="em-hdr__i"> <a href="/" class="em-hdr__logo" aria-label="Emtech Engineering — home"> <img src="/emtech-logo-white.png" alt="Emtech Engineering"> </a> <nav class="em-hdr__nav" aria-label="Primary"> <ul class="em-hdr__list"> <li class="em-hdr__item em-hdr__item--has-menu" data-mega="services"> <button class="em-hdr__toggle" type="button" aria-expanded="false" aria-haspopup="true"> Services <svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> </li><li class="em-hdr__item em-hdr__item--has-menu" data-mega="company"> <button class="em-hdr__toggle" type="button" aria-expanded="false" aria-haspopup="true"> Company <svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> </li><li class="em-hdr__item em-hdr__item--has-menu" data-mega="careers"> <button class="em-hdr__toggle" type="button" aria-expanded="false" aria-haspopup="true"> Careers <svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> </li><li class="em-hdr__item em-hdr__item--has-menu" data-mega="resources"> <button class="em-hdr__toggle" type="button" aria-expanded="false" aria-haspopup="true"> Resources <svg width="10" height="10" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> </li><li class="em-hdr__item"> <a href="/events" class="em-hdr__link">Events</a> </li> </ul> </nav> <a href="https://orbit.emtech.us/login" class="em-hdr__portal"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <rect x="5" y="11" width="14" height="10" rx="2" stroke="currentColor" stroke-width="2"></rect> <path d="M8 11V7a4 4 0 0 1 8 0v4" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path> </svg>
8Portal login
9</a> <a href="/contact" class="em-hdr__cta">Get In Touch</a> <button class="em-hdr__burger" type="button" aria-label="Open menu" aria-expanded="false"> <span></span><span></span><span></span> </button> </div> <!-- ── Mega-menu panels (one per nav group) ──────────── --> <div class="em-mega" data-panel="services"> <div class="em-mega__i"> <div class="em-mega__lcol"> <div class="em-mega__eyebrow">Our Services</div> <h2 class="em-mega__heading"> Embedded engineering, <em>by service line.</em> </h2> <div class="em-mega__services"> <a href="/services/lab" class="em-mega__svc"> <span class="em-mega__svc-num">01</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> Lab <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">Site operations, IT, and in-house 3D printing</p> </div> </a><a href="/services/testing" class="em-mega__svc"> <span class="em-mega__svc-num">02</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> Testing <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">Test data that drives engineering decisions</p> </div> </a><a href="/services/eoat" class="em-mega__svc"> <span class="em-mega__svc-num">03</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> EOAT <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">End-of-arm tooling engineered for your line</p> </div> </a><a href="/services/reliability" class="em-mega__svc"> <span class="em-mega__svc-num">04</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> Reliability <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">Root-cause depth across controls and embedded systems</p> </div> </a><a href="/services/hardware" class="em-mega__svc"> <span class="em-mega__svc-num">05</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> Hardware <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">Custom test beds, design adaptation, and retrofitting</p> </div> </a><a href="/services/deployment" class="em-mega__svc"> <span class="em-mega__svc-num">06</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> Deployment <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">Installation, commissioning, and multi-site logistics</p> </div> </a><a href="/services/integrated-engineering" class="em-mega__svc"> <span class="em-mega__svc-num">07</span> <div class="em-mega__svc-body"> <h3 class="em-mega__svc-name"> Engineering &amp; Field Support <svg class="em-mega__svc-arrow" width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </h3> <p class="em-mega__svc-lead">Mechanical, electrical, test, and controls disciplines</p> </div> </a> </div> </div> <div class="em-mega__rcol"> <div class="em-mega__featured"> <div class="em-mega__featured-img" aria-hidden="true"> <img src="/photos/eng-robot-cell.jpg" alt="" loading="lazy" decoding="async"> </div> <div class="em-mega__featured-body"> <span class="em-mega__featured-eyebrow">Talk to Our Team</span> <h3 class="em-mega__featured-title">Not sure which service fits your project?</h3> <p class="em-mega__featured-desc">Most engagements span more than one service line. Describe the problem, and the right team gets lined up.</p> <a href="/contact" class="em-mega__featured-cta"> Start a conversation <svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </a> </div> </div> </div> </div> </div><div class="em-mega" data-panel="company"> <div class="em-mega__i"> <div class="em-mega__lcol"> <div class="em-mega__eyebrow">Our Company</div> <h2 class="em-mega__heading"> The people behind <em>the work.</em> </h2> <div class="em-mega__sublist"> <a href="/about" class="em-mega__sub"> <span class="em-mega__sub-name">About Emtech</span> <span class="em-mega__sub-desc">The story, the mission, and how the engineering gets done.</span> </a><a href="/about/culture" class="em-mega__sub"> <span class="em-mega__sub-name">Culture &amp; Values</span> <span class="em-mega__sub-desc">What it&#39;s like to work here, and the standards that come with it.</span> </a><a href="/about/guiding-principles" class="em-mega__sub"> <span class="em-mega__sub-name">Guiding Principles</span> <span class="em-mega__sub-desc">The principles behind every program.</span> </a><a href="/about/team" class="em-mega__sub"> <span class="em-mega__sub-name">Our Team</span> <span class="em-mega__sub-desc">Meet the senior people behind every Emtech engagement.</span> </a> </div> </div> <div class="em-mega__rcol"> <div class="em-mega__featured"> <div class="em-mega__featured-img" aria-hidden="true"> <img src="/photos/eng-workstation.jpg" alt="" loading="lazy" decoding="async"> </div> <div class="em-mega__featured-body"> <span class="em-mega__featured-eyebrow">Our Team</span> <h3 class="em-mega__featured-title">Senior people, accountable to outcomes.</h3> <p class="em-mega__featured-desc">Emtech is built around engineers who own the result — not the kickoff or the deliverable, the result.</p> <a href="/about/team" class="em-mega__featured-cta"> Meet the team <svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </a> </div> </div> </div> </div> </div><div class="em-mega" data-panel="careers"> <div class="em-mega__i"> <div class="em-mega__lcol"> <div class="em-mega__eyebrow">Join Us</div> <h2 class="em-mega__heading"> Work with <em>senior engineers.</em> </h2> <div class="em-mega__sublist"> <a href="/careers" class="em-mega__sub"> <span class="em-mega__sub-name">All Openings</span> <span class="em-mega__sub-desc">Every open role across all service lines and disciplines.</span> </a><a href="/careers#full-time" class="em-mega__sub"> <span class="em-mega__sub-name">Full-Time Roles</span> <span class="em-mega__sub-desc">Engineering positions: mechanical, electrical, test, controls.</span> </a><a href="/careers#staff" class="em-mega__sub"> <span class="em-mega__sub-name">Operations</span> <span class="em-mega__sub-desc">
9Staff roles across HR, finance, sales, and program support.</span> </a> </div> </div> <div class="em-mega__rcol"> <div class="em-mega__featured"> <div class="em-mega__featured-img" aria-hidden="true"> <img src="/photos/eng-3dprinter-multimeter.jpg" alt="" loading="lazy" decoding="async"> </div> <div class="em-mega__featured-body"> <span class="em-mega__featured-eyebrow">We&#39;re Hiring</span> <h3 class="em-mega__featured-title">Roles open across all seven service lines.</h3> <p class="em-mega__featured-desc">Embedded with senior people, working directly on customer programs from day one. No QA gauntlets, no months on the bench.</p> <a href="/careers" class="em-mega__featured-cta"> View open roles <svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </a> </div> </div> </div> </div> </div><div class="em-mega" data-panel="resources"> <div class="em-mega__i"> <div class="em-mega__lcol"> <div class="em-mega__eyebrow">Insights</div> <h2 class="em-mega__heading"> From the field, <em>in our own words.</em> </h2> <div class="em-mega__sublist"> <a href="/resources" class="em-mega__sub"> <span class="em-mega__sub-name">All Resources</span> <span class="em-mega__sub-desc">Articles, case studies, and industry analysis.</span> </a><a href="/resources#case-studies" class="em-mega__sub"> <span class="em-mega__sub-name">Case Studies</span> <span class="em-mega__sub-desc">Delivered engagements, with the engineering behind them.</span> </a><a href="/resources#articles" class="em-mega__sub"> <span class="em-mega__sub-name">Articles</span> <span class="em-mega__sub-desc">Perspectives on robotics, automation, and embedded engineering.</span> </a> </div> </div> <div class="em-mega__rcol"> <div class="em-mega__featured"> <div class="em-mega__featured-img" aria-hidden="true"> <img src="/photos/robot-arm-tray.jpg" alt="" loading="lazy" decoding="async"> </div> <div class="em-mega__featured-body"> <span class="em-mega__featured-eyebrow">Topic Spotlight</span> <h3 class="em-mega__featured-title">Amazon Vulcan: a deeper look at the system.</h3> <p class="em-mega__featured-desc">Ten articles tracking Amazon&#39;s tactile manipulation breakthrough across trade press, mainstream media, and industry analysis.</p> <a href="/resources" class="em-mega__featured-cta"> Read the analysis <svg width="14" height="14" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <path d="M5 12h14m0 0l-6-6m6 6l-6 6" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </a> </div> </div> </div> </div> </div> <!-- ── Mobile drawer (preserved) ─────────────────────── --> <div class="em-hdr__drawer" aria-hidden="true"> <ul class="em-hdr__drawer-list"> <li class="em-hdr__drawer-group"> <button class="em-hdr__drawer-toggle" type="button" aria-expanded="false"> Services <svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <div class="em-hdr__drawer-sub"> <a href="/services/lab" class="em-hdr__drawer-link">Lab</a><a href="/services/testing" class="em-hdr__drawer-link">Testing</a><a href="/services/eoat" class="em-hdr__drawer-link">EOAT</a><a href="/services/reliability" class="em-hdr__drawer-link">Reliability</a><a href="/services/hardware" class="em-hdr__drawer-link">Hardware</a><a href="/services/deployment" class="em-hdr__drawer-link">Deployment</a><a href="/services/integrated-engineering" class="em-hdr__drawer-link">Engineering &amp; Field Support</a> </div> </li><li class="em-hdr__drawer-group"> <button class="em-hdr__drawer-toggle" type="button" aria-expanded="false"> Company <svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button>
9 <div class="em-hdr__drawer-sub"> <a href="/about" class="em-hdr__drawer-link">About Emtech</a><a href="/about/culture" class="em-hdr__drawer-link">Culture &amp; Values</a><a href="/about/guiding-principles" class="em-hdr__drawer-link">Guiding Principles</a><a href="/about/team" class="em-hdr__drawer-link">Our Team</a> </div> </li><li class="em-hdr__drawer-group"> <button class="em-hdr__drawer-toggle" type="button" aria-expanded="false"> Careers <svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <div class="em-hdr__drawer-sub"> <a href="/careers" class="em-hdr__drawer-link">All Openings</a><a href="/careers#full-time" class="em-hdr__drawer-link">Full-Time Roles</a><a href="/careers#staff" class="em-hdr__drawer-link">Operations</a> </div> </li><li class="em-hdr__drawer-group"> <button class="em-hdr__drawer-toggle" type="button" aria-expanded="false"> Resources <svg width="12" height="12" viewBox="0 0 12 12" fill="none" aria-hidden="true"> <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </button> <div class="em-hdr__drawer-sub"> <a href="/resources" class="em-hdr__drawer-link">All Resources</a><a href="/resources#case-studies" class="em-hdr__drawer-link">Case Studies</a><a href="/resources#articles" class="em-hdr__drawer-link">Articles</a> </div> </li><li> <a href="/events" class="em-hdr__drawer-link em-hdr__drawer-link--top">Events</a> </li> <li class="em-hdr__drawer-cta-wrap"> <a href="/contact" class="em-btn">Get In Touch</a> <a href="https://orbit.emtech.us/login" class="em-hdr__drawer-portal"> <svg width="15" height="15" viewBox="0 0 24 24" fill="none" aria-hidden="true"> <rect x="5" y="11" width="14" height="10" rx="2" stroke="currentColor" stroke-width="2"></rect> <path d="M8 11V7a4 4 0 0 1 8 0v4" stroke="currentColor" stroke-width="2" stroke-linecap="round"></path> </svg>
10Portal login
11</a> </li> </ul> </div> </header> <!-- Backdrop sits outside the header so it covers the whole viewport --> <div class="em-mega-backdrop" id="em-mega-backdrop"></div>   <main>  <section class="sh-hero sh-hero--has-bg" data-astro-cid-rtnuwni6>  <div class="sh-hero__bg" aria-hidden="true" data-astro-cid-rtnuwni6> <img src="/svc-lab-hero.jpg" alt="Engineering team working with 3D printing equipment in a collaborative lab environment" loading="eager" decoding="async" data-astro-cid-rtnuwni6> </div> <div class="sh-hero__veil" aria-hidden="true" data-astro-cid-rtnuwni6></div>  <div class="sh-hero__inner" data-astro-cid-rtnuwni6> <span class="sh-hero__eyebrow" data-astro-cid-rtnuwni6>Lab</span> <h1 class="sh-hero__title" data-astro-cid-rtnuwni6> Operations that<em class="sh-hero__accent" data-astro-cid-rtnuwni6>keep work moving.</em> </h1> <p class="sh-hero__subtitle" data-astro-cid-rtnuwni6>General site management, cross-team coordination, IT and network support, and in-house 3D printing — the operational layer that lets engineering teams focus on engineering.</p> <a href="/contact" class="sh-hero__cta" data-astro-cid-rtnuwni6> Start a Project <span aria-hidden="true" data-astro-cid-rtnuwni6>&nbsp;→</span> </a> </div> </section>  <!-- ── Capabilities ─────────────────────────────────── --><section class="em-svc-cap"> <div class="em-svc-cap__i"> <p class="em-svc-intro em-reveal">Engineering execution stalls when the underlying environment isn&#39;t right — tools missing, network down, parts not where they need to be, prototypes waiting on a print queue. The Lab team eliminates that friction so the work in front of senior engineers is the work that actually moves programs forward.</p> <div class="em-svc-cap__hdr em-reveal"> <div class="em-badge"><span class="em-badge__dot"></span>What's Included</div> <h2 class="em-h2">Capabilities <em>and scope.</em></h2> </div> <div class="em-svc-cap__grid"> <article class="em-svc-cap__card em-reveal"> <span class="em-svc-cap__num">01</span> <h3 class="em-svc-cap__title">General Site Management</h3> <p class="em-svc-cap__desc">Day-to-day management of project sites, lab environments, and the supporting infrastru
11cture engineering teams depend on. Keeps the lab a productive workspace, not a thing engineers have to maintain.</p> </article><article class="em-svc-cap__card em-reveal"> <span class="em-svc-cap__num">02</span> <h3 class="em-svc-cap__title">Site Coordination</h3> <p class="em-svc-cap__desc">Cross-team coordination across active engagements, vendor management, and the logistics of getting tools, parts, and shipments to where they need to be — when they need to be there.</p> </article><article class="em-svc-cap__card em-reveal"> <span class="em-svc-cap__num">03</span> <h3 class="em-svc-cap__title">IT &amp; Network Support</h3> <p class="em-svc-cap__desc">Network setup, workstation provisioning, and ongoing IT support for project environments — onsite or embedded. Engineers stay productive instead of fighting infrastructure.</p> </article><article class="em-svc-cap__card em-reveal"> <span class="em-svc-cap__num">04</span> <h3 class="em-svc-cap__title">3D Printing</h3> <p class="em-svc-cap__desc">In-house additive manufacturing capacity for prototyping fixtures, custom tooling, and rapid-iteration parts. Faster than waiting on outside service bureaus and more controllable on revision.</p> </article> </div> </div> </section> <!-- ── Process ──────────────────────────────────────── --> <section class="em-svc-proc"> <div class="em-svc-proc__i"> <div class="em-svc-proc__hdr em-reveal"> <div class="em-badge"><span class="em-badge__dot"></span>How We Work</div> <h2 class="em-h2">A clear <em>working process.</em></h2> </div> <div class="em-svc-proc__steps"> <div class="em-svc-proc__step em-reveal"> <span class="em-svc-proc__num">Step 01</span> <h3 class="em-svc-proc__title">Survey the Environment</h3> <p class="em-svc-proc__desc">Walk the lab, map the workflow, identify what is slowing teams down before standing anything up. Operational friction is rarely where leadership assumes it is.</p> </div><div class="em-svc-proc__step em-reveal"> <span class="em-svc-proc__num">Step 02</span> <h3 class="em-svc-proc__title">Stand Up Infrastructure</h3> <p class="em-svc-proc__desc">Network, workstations, tools, print capacity, parts management — built around how your team actually works, not a generic template.</p> </div><div class="em-svc-proc__step em-reveal"> <span class="em-svc-proc__num">Step 03</span> <h3 class="em-svc-proc__title">Sustain Through the Program</h3> <p class="em-svc-proc__desc">Day-to-day operations, vendor coordination, and continuous improvement. The lab stays a tailwind for the engineering work, not a tax on it.</p> </div> </div> </div> </section> <!-- ── Audience ─────────────────────────────────────── --> <section class="em-svc-aud"> <div class="em-svc-aud__i"> <div class="em-svc-aud__hdr em-reveal"> <div class="em-badge"><span class="em-badge__dot"></span>Who It's For</div> <h2 class="em-h2">Built for <em>specific situations.</em></h2> </div> <ul class="em-svc-aud__list em-reveal"> <li>R&amp;D teams running multiple concurrent prototypes</li><li>Programs with embedded engineering teams that need local operational support</li><li>Organizations needing flexible in-house 3D printing capacity</li><li>Engineering groups whose current site operations are creating drag on schedule</li> </ul> </div> </section>  <section class="em-proof"> <div class="em-proof__i"> <div class="em-reveal"> <div class="em-badge"> <span class="em-badge__dot"></span>Embedded Engineering Teams </div> <h2 class="em-proof__h2"> Scale Engineering Capacity<br><em>Without the Overhead</em> </h2> <p class="em-proof__body">Emtech embeds specialized technical teams directly in your environment, integrated into your workflow and accountable to your outcomes.</p> <ul class="em-proof__bullets"> <li class="em-proof__bullet"> <div class="em-proof__bico"> <svg width="10" height="10" viewBox="0 0 10 10" fill="none"> <path d="M2 5L4.2 7.2L8 3" stroke="#4A8A2E" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <p>Technology-agnostic, recommending what fits the project.</p> </li><li class="em-proof__bullet"> <div class="em-proof__bico">
11 <svg width="10" height="10" viewBox="0 0 10 10" fill="none"> <path d="M2 5L4.2 7.2L8 3" stroke="#4A8A2E" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <p>Same execution depth at 1 site or 20, scaling with the project.</p> </li><li class="em-proof__bullet"> <div class="em-proof__bico"> <svg width="10" height="10" viewBox="0 0 10 10" fill="none"> <path d="M2 5L4.2 7.2L8 3" stroke="#4A8A2E" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <p>R&amp;D through live ops, owning the outcome.</p> </li> </ul> </div> <div class="em-proof__card em-reveal" style="background:linear-gradient(rgba(30,58,95,.82),rgba(30,58,95,.82)),url('/proof-bg.jpg') center/cover no-repeat;"> <div class="em-proof__card-inner"> <div class="em-proof__card-hdr"> <span class="em-proof__card-dot"></span>2026 Execution Results </div> <div class="em-proof__stats"> <div class="em-stat"> <div class="em-stat__num">100K+</div> <span class="em-stat__lbl">Annual Field Hours</span> </div><div class="em-stat"> <div class="em-stat__num">100%</div> <span class="em-stat__lbl">On-Time Delivery</span> </div><div class="em-stat"> <div class="em-stat__num">20+</div> <span class="em-stat__lbl">Facilities, NA + EU</span> </div><div class="em-stat"> <div class="em-stat__num">50 States + EU</div> <span class="em-stat__lbl">Service Coverage</span> </div> </div> </div> </div> </div> </section>  <section class="rs-sec" data-astro-cid-kwyw5pkz> <div class="rs-sec__inner" data-astro-cid-kwyw5pkz> <div class="rs-sec__head" data-astro-cid-kwyw5pkz> <span class="rs-sec__eyebrow" data-astro-cid-kwyw5pkz>Cross-service capability</span> <h2 class="rs-sec__title" data-astro-cid-kwyw5pkz> Other engineering<em class="rs-sec__accent" data-astro-cid-kwyw5pkz> service lines.</em> </h2> <p class="rs-sec__intro" data-astro-cid-kwyw5pkz>
12Most engagements span more than one team. Here's how the other Emtech service lines fit alongside this one.
13</p> </div> <div class="rs-sec__grid" data-astro-cid-kwyw5pkz> <a href="/services/testing" class="rs-sec__card" data-astro-cid-kwyw5pkz> <div class="rs-sec__iconwrap" data-astro-cid-kwyw5pkz> <img src="/icons/chip-gear.png" alt="" loading="lazy" decoding="async" data-astro-cid-kwyw5pkz> </div> <h3 class="rs-sec__card__title" data-astro-cid-kwyw5pkz>Testing &amp; Validation</h3> <p class="rs-sec__card__body" data-astro-cid-kwyw5pkz>Reliability, performance, and acceptance testing.</p> <span class="rs-sec__card__arrow" data-astro-cid-kwyw5pkz>Explore →</span> </a><a href="/services/eoat" class="rs-sec__card" data-astro-cid-kwyw5pkz> <div class="rs-sec__iconwrap" data-astro-cid-kwyw5pkz> <img src="/icons/arm-boxes.png" alt="" loading="lazy" decoding="async" data-astro-cid-kwyw5pkz> </div> <h3 class="rs-sec__card__title" data-astro-cid-kwyw5pkz>EOAT Engineering</h3> <p class="rs-sec__card__body" data-astro-cid-kwyw5pkz>End-of-arm tooling, SolidWorks design, QA.</p> <span class="rs-sec__card__arrow" data-astro-cid-kwyw5pkz>Explore →</span> </a><a href="/services/reliability" class="rs-sec__card" data-astro-cid-kwyw5pkz> <div class="rs-sec__iconwrap" data-astro-cid-kwyw5pkz> <img src="/icons/gears-cog.png" alt="" loading="lazy" decoding="async" data-astro-cid-kwyw5pkz> </div> <h3 class="rs-sec__card__title" data-astro-cid-kwyw5pkz>Reliability</h3> <p class="rs-sec__card__body" data-astro-cid-kwyw5pkz>Root-cause depth across controls and embedded.</p> <span class="rs-sec__card__arrow" data-astro-cid-kwyw5pkz>Explore →</span> </a><a href="/services/hardware" class="rs-sec__card" data-astro-cid-kwyw5pkz> <div class="rs-sec__iconwrap" data-astro-cid-kwyw5pkz> <img src="/icons/arm-gears.png" alt="" loading="lazy" decoding="async" data-astro-cid-kwyw5pkz> </div> <h3 class="rs-sec__card__title" data-astro-cid-kwyw5pkz>Hardware</h3> <p class="rs-sec__card__body" data-astro-cid-kwyw5pkz>Custom test beds, adaptation, retrofitting.</p> <span class="rs-sec__card__arrow" data-astro-cid-kwyw5pkz>Explore →</span> </a><a href="/services/deployment" class="rs-sec__card" data-astro-cid-kwyw5pkz> <div class="rs-sec__iconwrap" data-astro-cid-kwyw5pkz> <img src="/icons/arm-monitor.png" alt="" loading="lazy" decoding="async" data-astro-cid-kwyw5pkz> </div> <h3 class="rs-sec__card__title" data-astro-cid-kwyw5pkz>Deployment</h3> <p class="rs-sec__card__body" data-astro-cid-kwyw5pkz>Commissioning, integration, multi-site rollout.</p> <span class="rs-sec__card__arrow" data-astro-cid-kwyw5pkz>Explore →</span> </a><a href="/services/integrated-engineering" class="rs-sec__card" data-astro-cid-kwyw5pkz> <div class="rs-sec__iconwrap" data-astro-cid-kwyw5pkz> <img src="/icons/arm-circuit.png" alt="" loading="lazy" decoding="async" data-astro-cid-kwyw5pkz> </div> <h3 class="rs-sec__card__title" data-astro-cid-kwyw5pkz>Engineering &amp; Field Support</h3> <p class="rs-sec__card__body" data-astro-cid-kwyw5pkz>Mechanical, electrical, test, and controls.</p> <span class="rs-sec__card__arrow" data-astro-cid-kwyw5pkz>Explore →</span> </a> </div> </div> </section>  <section class="em-contact" id="contact">
13  <div class="em-contact__i"> <!-- LEFT: heading + info --> <div class="em-contact__left em-reveal"> <div class="em-badge"> <span class="em-badge__dot"></span>Get In Touch </div> <h2 class="em-contact__h2">Let&#39;s Start the<br><em>Conversation.</em> </h2>  <p class="em-contact__sub">Tell us where the project stands. The response will come prepared: the right questions, the right context, and a clear picture of what working together involves.</p> <address class="em-contact__info"> <div class="em-contact__info-item"> <div class="em-contact__info-ico"> <svg width="17" height="17" viewBox="0 0 18 18" fill="none"> <path d="M9 1.5C6.1 1.5 3.75 3.85 3.75 6.75c0 4.22 5.25 9.75 5.25 9.75s5.25-5.53 5.25-9.75C14.25 3.85 11.9 1.5 9 1.5zm0 7.13a2.38 2.38 0 110-4.76 2.38 2.38 0 010 4.76z" stroke="#4A8A2E" stroke-width="1.4" stroke-linejoin="round"></path> </svg> </div> <div> <div class="em-contact__info-lbl">Address</div> <div class="em-contact__info-val">635 W Reynolds Ave<br>Centralia, WA 98531</div> </div> </div> <div class="em-contact__info-item"> <div class="em-contact__info-ico"> <svg width="17" height="17" viewBox="0 0 18 18" fill="none"> <path d="M3.5 3h3l1.5 3.75-1.88 1.13a9.75 9.75 0 004.5 4.5L12.25 10.5 16 12v3a1.5 1.5 0 01-1.5 1.5A12 12 0 012 4.5 1.5 1.5 0 013.5 3z" stroke="#4A8A2E" stroke-width="1.4" stroke-linejoin="round"></path> </svg> </div> <div> <div class="em-contact__info-lbl">Phone</div> <div class="em-contact__info-val"> <a href="tel:3607484891" style="color:var(--text-2);text-decoration:none;">360-748-4891</a> </div> </div> </div> <div class="em-contact__info-item"> <div class="em-contact__info-ico"> <svg width="17" height="17" viewBox="0 0 18 18" fill="none"> <circle cx="9" cy="9" r="7.5" stroke="#4A8A2E" stroke-width="1.4"></circle> <path d="M9 5.25V9.75L11.25 12" stroke="#4A8A2E" stroke-width="1.4" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <div> <div class="em-contact__info-lbl">Hours</div> <div class="em-contact__info-val">Mon – Fri: 7:30am – 4:00pm PT</div> </div> </div> <div class="em-contact__info-item"> <div class="em-contact__info-ico"> <svg width="17" height="17" viewBox="0 0 18 18" fill="none"> <circle cx="9" cy="7.5" r="3" stroke="#4A8A2E" stroke-width="1.4"></circle> <path d="M2.25 15.75c0-4.14 3.02-6.75 6.75-6.75s6.75 2.61 6.75 6.75" stroke="#4A8A2E" stroke-width="1.4" stroke-linecap="round"></path> </svg> </div> <div> <div class="em-contact__info-lbl">Response Time</div> <div class="em-contact__info-val">Fit, timeline & next steps<br>confirmed on the first call</div> </div> </div> </address> </div> <!-- RIGHT: form card --> <div class="em-contact__form-card em-reveal"> <div class="em-contact__form-header"> <div class="em-contact__form-dots"> <span></span><span></span><span></span> </div> <span class="em-contact__form-title">Connect with Emtech</span> </div> <div class="em-contact__form-body"> <div class="em-intent-wrap"> <label class="em-intent-label" for="em-intent">
14How Can Emtech Help?<span>*</span> </label> <select class="em-intent-sel" id="em-intent" name="intent" onchange="emShowForm(this.value)" required> <option value="" disabled selected>Select your inquiry type...</option> <option value="client">I'm interested in working together on a project</option> <option value="intern">I'm a university or academic partner</option> <option value="career">I'm interested in joining the team</option> </select> </div> <div class="em-ghl-frame" id="em-ghl-client" style="display:none;"> <div class="em-ghl-label"> <div class="em-ghl-label__ico"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none"> <path d="M20 7H4a2 2 0 00-2 2v10a2 2 0 002 2h16a2 2 0 002-2V9a2 2 0 00-2-2z" stroke="#4A8A2E" stroke-width="1.5"></path> <path d="M16 7V5a4 4 0 00-8 0v2" stroke="#4A8A2E" stroke-width="1.5"></path> </svg> </div> <span class="em-ghl-label__text">
15Project Inquiry<span>— tell us about your engineering needs</span> </span> </div> <iframe src="https://links.emtech.us/widget/form/dzis9x3FfZaEQk3GzHdh" data-em-hidden-at-load="1" id="inline-dzis9x3FfZaEQk3GzHdh" data-layout="{'id':'INLINE'}" data-trigger-type="alwaysShow" data-trigger-value="" data-activation-type="alwaysActivated" data-activation-value="" data-deactivation-type="neverDeactivate" data-deactivation-value="" data-form-name="Client Inquiry" data-height="600" data-layout-iframe-id="inline-dzis9x3FfZaEQk3GzHdh" data-form-id="dzis9x3FfZaEQk3GzHdh" class="astro-jjagjrbk" style="width:100%;height:600px;border:none;border-radius:4px;" title="Client inquiry form"></iframe> <a class="em-ghl-open" href="https://links.emtech.us/widget/form/dzis9x3FfZaEQk3GzHdh" target="_blank" rel="noopener">Having trouble with the form? Open it full screen</a> </div> <div class="em-ghl-frame" id="em-ghl-intern" style="display:none;"> <div class="em-ghl-label"> <div class="em-ghl-label__ico"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none"> <path d="M22 10v6M2 10l10-5 10 5-10 5z" stroke="#4A8A2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M6 12v5c3 3 9 3 12 0v-5" stroke="#4A8A2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <span class="em-ghl-label__text">
16University<span>— academic partnerships</span> </span> </div> <iframe src="https://links.emtech.us/widget/form/Y1KuKG0kUMrqdz5DWfz6" data-em-hidden-at-load="1" id="inline-Y1KuKG0kUMrqdz5DWfz6" data-layout="{'id':'INLINE'}" data-trigger-type="alwaysShow" data-trigger-value="" data-activation-type="alwaysActivated" data-activation-value="" data-deactivation-type="neverDeactivate" data-deactivation-value="" data-form-name="University Partnership Inquiry" data-height="600" data-layout-iframe-id="inline-Y1KuKG0kUMrqdz5DWfz6" data-form-id="Y1KuKG0kUMrqdz5DWfz6" class="astro-jjagjrbk" style="width:100%;height:600px;border:none;border-radius:4px;" title="University partnership inquiry form"></iframe> <a class="em-ghl-open" href="https://links.emtech.us/widget/form/Y1KuKG0kUMrqdz5DWfz6" target="_blank" rel="noopener">Having trouble with the form? Open it full screen</a> </div> <div class="em-ghl-frame" id="em-ghl-career" style="display:none;"> <div class="em-ghl-label"> <div class="em-ghl-label__ico"> <svg width="14" height="14" viewBox="0 0 24 24" fill="none"> <circle cx="12" cy="8" r="4" stroke="#4A8A2E" stroke-width="1.5"></circle> <path d="M4 21v-1a6 6 0 0112 0v1" stroke="#4A8A2E" stroke-width="1.5" stroke-linecap="round"></path> <path d="M16 11l2 2 4-4" stroke="#4A8A2E" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> </svg> </div> <span class="em-ghl-label__text">
17Careers<span>— join the Emtech team</span> </span> </div> <iframe src="https://links.emtech.us/widget/form/07iIjVvK6f1s8pvWY6BF" data-em-hidden-at-load="1" id="inline-07iIjVvK6f1s8pvWY6BF" data-layout="{'id':'INLINE'}" data-trigger-type="alwaysShow" data-trigger-value="" data-activation-type="alwaysActivated" data-activation-value="" data-deactivation-type="neverDeactivate" data-deactivation-value="" data-form-name="Career Inquiry" data-height="600" data-layout-iframe-id="inline-07iIjVvK6f1s8pvWY6BF" data-form-id="07iIjVvK6f1s8pvWY6BF" class="astro-jjagjrbk" style="width:100%;height:600px;border:none;border-radius:4px;" title="Career inquiry form"></iframe> <a class="em-ghl-open" href="https://links.emtech.us/widget/form/07iIjVvK6f1s8pvWY6BF" target="_blank" rel="noopener">Having trouble with the form? Open it full screen</a> </div> </div> </div> </div> </section> 
17<script>
18  // Source tracking: pass this page's query string (utm_* etc.) into each
19  // GoHighLevel form, and always include `source` so every submission
20  // records where it came from. ?source=xyz in the page URL wins; otherwise
21  // the page path is used (e.g. "join", "contact", "fira-usa-2026").
22  (function () {
23    var params = new URLSearchParams(window.location.search);
24    params.delete('form');
25    if (!params.get('source')) {
26      var path = window.location.pathname.replace(/^\/+|\/+$/g, '');
27      params.set('source', path || 'home');
28    }
29    var qs = params.toString();
30    document.querySelectorAll('.em-ghl-frame iframe').forEach(function (f) {
31      var base = f.getAttribute('src').split('?')[0];
32      f.setAttribute('src', base + '?' + qs);
33    });
34  })();
35</script>
35 
35<script src="https://link.msgsndr.com/js/form_embed.js"></script>
35 
35<script>
36  function emShowForm(intent) {
37    document.querySelectorAll('.em-ghl-frame').forEach(function (f) {
38      f.style.display = 'none';
39    });
40    if (intent) {
41      var el = document.getElementById('em-ghl-' + intent);
42      if (el) {
43        el.style.display = 'block';
44        // A form that loaded while hidden can report the wrong height.
45        // Reload it once when first shown so it sizes itself correctly.
46        var frame = el.querySelector('iframe');
47        if (frame && !frame.dataset.emShown) {
48          frame.dataset.emShown = '1';
49          if (frame.offsetHeight < 50 || frame.dataset.emHiddenAtLoad === '1') frame.src = frame.src;
50        }
51        if (window.innerWidth < 768) {
52          setTimeout(function () {
53            el.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
54          }, 100);
55        }
56      }
57    }
58  }
59
60  // Deep link: ?form=client|intern|career opens that form on load.
61  (function () {
62    function applyDeepLink() {
63      var want = new URLSearchParams(window.location.search).get('form');
64      if (!want) return;
65      var sel = document.getElementById('em-intent');
66      if (!sel || !document.getElementById('em-ghl-' + want)) return;
67      sel.value = want;
68      emShowForm(want);
69      var section = document.getElementById('contact');
70      if (section) section.scrollIntoView({ block: 'start' });
71    }
72    if (document.readyState === 'loading') {
73      document.addEventListener('DOMContentLoaded', applyDeepLink);
74    } else {
75      applyDeepLink();
76    }
77    document.addEventListener('astro:page-load', applyDeepLink);
78  })();
79</script>
79   </main> <footer class="em-footer em-grid-bg"> <div class="em-footer__i"> <div class="em-footer__top"> <div> <a href="/" style="display:inline-block;"> <img src="/emtech-logo-white.png" alt="Emtech Engineering" class="em-footer__logo"> </a> <p class="em-footer__tag">
80Embedded engineering, from concept to steady-state production.
81</p> <a href="https://www.linkedin.com/company/emtechllc" target="_blank" rel="noopener" class="em-footer__social" aria-label="Emtech Engineering on LinkedIn"> <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> <path d="M4.98 3.5a2.5 2.5 0 1 1-.02 5 2.5 2.5 0 0 1 .02-5zM3 8.98h4v12H3v-12zM9.5 8.98h3.83v1.64h.05c.53-1 1.84-2.06 3.78-2.06 4.03 0 4.78 2.65 4.78 6.1v6.32h-4v-5.6c0-1.34-.03-3.06-1.87-3.06-1.87 0-2.16 1.46-2.16 2.97v5.69h-4v-12z"></path> </svg> </a> </div> <div> <div class="em-footer__col-t">Services</div> <ul class="em-footer__links"> <li><a href="/services/lab">Lab</a></li><li><a href="/services/testing">Testing</a></li><li><a href="/services/eoat">EOAT</a></li><li><a href="/services/reliability">Reliability</a></li><li><a href="/services/hardware">Hardware</a></li><li><a href="/services/deployment">Deployment</a></li><li><a href="/services/integrated-engineering">Engineering &amp; Field Support</a></li> </ul> </div> <div> <div class="em-footer__col-t">Connect</div> <ul class="em-footer__links"> <li><a href="/contact">Industry Clients</a></li><li><a href="/contact">University Partners</a></li><li><a href="/careers">Careers</a></li> </ul> </div> <div class="em-footer__events" data-em-footer-events data-limit="3"> <div class="em-footer__col-t">Upcoming Events</div> <ul class="em-footer__links"> <li data-em-footer-event data-expires="1792742400000" data-start="1792454400000"> <a href="/fira-usa-2026"> FIRA USA 2026 <span class="em-footer__event-date">Oct 20 to 22</span> </a> </li><li data-em-footer-event data-expires="1792656000000" data-start="1792454400000"> <a href="/robobusiness-2026"> RoboBusiness 2026 <span class="em-footer__event-date">Oct 20 to 21</span> </a> </li><li data-em-footer-event data-expires="1800518400000" data-start="1800230400000"> <a href="/a3-business-forum-2027"> A3 Business Forum 2027 <span class="em-footer__event-date">Jan 18 to 20</span> </a> </li><li data-em-footer-event data-expires="1810281600000" data-start="1809907200000" hidden> <a href="/automate-2027"> Automate 2027 <span class="em-footer__event-date">May 10 to 13</span> </a> </li><li data-em-footer-event data-expires="1812096000000" data-start="1811894400000" hidden> <a href="/robotics-summit-2027"> Robotics Summit 2027 <span class="em-footer__event-date">Jun 2 to 3</span> </a> </li><li data-em-footer-event data-expires="1819353600000" data-start="1819152000000" hidden> <a href="/ivt-expo-usa-2027"> iVT Expo USA 2027 <span class="em-footer__event-date">Aug 25 to 26</span> </a> </li> </ul> <a href="/events" class="em-footer__events-all">All events</a> </div> <div> <div class="em-footer__col-t">Contact</div> <address class="em-footer__addr">
82635 W Reynolds Ave<br>
83Centralia, WA 98531<br><br> <a href="tel:3607484891">360-748-4891</a><br>
84Mon – Fri: 7:30am – 4:00pm PT
85</address> </div> </div> <div class="em-footer__bot"> <p class="em-footer__copy">© 2026 Emtech Engineering. All rights reserved.</p> <ul class="em-footer__legal"> <li><a href="/privacy">Privacy Policy</a></li> <li><a href="/terms">Terms &amp; Conditions</a></li> </ul> </div> </div> </footer>   <!--
86      Motion layer — runs on every page load and after every view
87      transition. Handles two things:
88        1. Scroll reveals (.em-reveal elements fade up when visible)
89        2. Animated counters (stat numbers count up when visible)
90      Inline so it loads before the user can scroll. Respects
91      prefers-reduced-motion via global.css.
92    --> 
92<script>
93      function emInitMotion() {
94        // ── 1. Scroll reveals ─────────────────────────────────
95        const revealEls = document.querySelectorAll('.em-reveal:not(.is-visible)');
96        if (revealEls.length) {
97          const revealObserver = new IntersectionObserver((entries) => {
98            entries.forEach((entry) => {
99              if (entry.isIntersecting) {
100                entry.target.classList.add('is-visible');
101                revealObserver.unobserve(entry.target);
102              }
103            });
104          }, { threshold: 0.12, rootMargin: '0px 0px -40px 0px' });
105
106          revealEls.forEach((el) => {
107            // Apply stagger inside grids: each sibling .em-reveal gets +Nms delay.
108            const staggerParent = el.closest('[data-stagger]');
109            if (staggerParent) {
110              const step = parseInt(staggerParent.dataset.stagger, 10) || 90;
111              const siblings = Array.from(staggerParent.querySelectorAll('.em-reveal'));
112              const idx = siblings.indexOf(el);
113              if (idx >= 0) el.style.setProperty('--reveal-delay', idx * step + 'ms');
114            }
115            revealObserver.observe(el);
116          });
117        }
118
119        // ── 2. Animated counters ──────────────────────────────
120        // Targets .em-stat-card__val and .em-stat__num. Parses the
121        // text content for a number, animates 0 → target, preserves
122        // any prefix ("<") and suffix ("%", "K+", " States + EU").
123        const counterEls = document.querySelectorAll(
124          '.em-stat-card__val:not([data-counted]), .em-stat__num:not([data-counted])'
125        );
126        if (counterEls.length) {
127          const counterObserver = new IntersectionObserver((entries) => {
128            entries.forEach((entry) => {
129              if (!entry.isIntersecting) return;
130              const el = entry.target;
131              if (el.dataset.counted) return;
132              el.dataset.counted = 'true';
133              counterObserver.unobserve(el);
134              emAnimateCounter(el);
135            });
136          }, { threshold: 0.5 });
137          counterEls.forEach((el) => counterObserver.observe(el));
138        }
139      }
140
141      function emAnimateCounter(el) {
142        const raw = (el.textContent || '').trim();
143        // Match: optional non-digit prefix, digits, optional suffix.
144        const m = raw.match(/^([^\d]*)(\d+)(.*)$/);
145        if (!m) return;
146        const prefix = m[1];
147        const target = parseInt(m[2], 10);
148        const suffix = m[3];
149        if (!Number.isFinite(target) || target <= 0) return;
150
151        const duration = 1500;
152        const start = performance.now();
153
154        function tick(now) {
155          const elapsed = now - start;
156          const p = Math.min(elapsed / duration, 1);
157          // ease-out cubic — confident settle, no bounce.
158          const eased = 1 - Math.pow(1 - p, 3);
159          const current = Math.round(target * eased);
160          el.textContent = prefix + current + suffix;
161          if (p < 1) requestAnimationFrame(tick);
162        }
163        // Start at 0 to avoid flash.
164        el.textContent = prefix + '0' + suffix;
165        requestAnimationFrame(tick);
166      }
167
168      // Run on initial load AND on every view transition.
169      emInitMotion();
170      document.addEventListener('astro:page-load', emInitMotion);
171    </script>
171 </body> </html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.