{"id":1172,"date":"2026-09-30T10:53:41","date_gmt":"2026-09-30T10:53:41","guid":{"rendered":"https:\/\/www.zoomtech.com.sg\/staging\/?page_id=1172"},"modified":"2026-10-17T19:09:03","modified_gmt":"2026-10-17T19:09:03","slug":"compare-new","status":"publish","type":"page","link":"https:\/\/www.zoomtech.com.sg\/staging\/compare-new\/","title":{"rendered":"Compare New"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1172\" class=\"elementor elementor-1172\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-zt_cmp_header elementor-widget elementor-widget-html\" data-id=\"zt_cmp_header\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ZOOM TECH CANONICAL 74PX FIXED VIEWPORT HEADER (SINGLE-ROW LOCK) -->\n<div id=\"zt-site-header-wrapper\" style=\"width: 100% !important; position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; z-index: 1000000 !important; background: #FFFFFF !important; background-color: #FFFFFF !important; border-bottom: 1px solid #E2E8F0 !important; box-shadow: 0 2px 10px rgba(15, 23, 42, 0.04) !important; margin: 0 !important; padding: 0 !important; box-sizing: border-box !important; display: block !important; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\">\n  <header id=\"zt-main-header\" style=\"max-width: 1440px !important; min-height: 74px !important; height: 74px !important; margin: 0 auto !important; padding: 0 2rem !important; display: flex !important; flex-direction: row !important; justify-content: space-between !important; align-items: center !important; box-sizing: border-box !important; flex-wrap: nowrap !important; white-space: nowrap !important;\">\n    \n    <!-- Left: Brand Master Logo -->\n    <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/home-new\/\" class=\"zt-header-logo\" style=\"text-decoration: none; display: flex; align-items: center; z-index: 1000001;\">\n      <img decoding=\"async\" src=\"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2018\/07\/small-logo.png\" alt=\"Zoom Tech Pte Ltd\" style=\"height: 38px; width: auto; object-fit: contain; display: block;\" \/>\n    <\/a>\n\n    <!-- Center: Strict Single-Row Desktop Navigation -->\n    <nav class=\"zt-desktop-nav\" aria-label=\"Main Navigation\">\n      \n      <!-- 2. PRODUCTS (DROPDOWN TRIGGER ONLY - NO DIRECT LANDING PAGE) -->\n      <div class=\"zt-nav-dropdown-item\" id=\"nav-dropdown-products\">\n        <button type=\"button\" id=\"nav-link-products\" class=\"zt-nav-link zt-nav-parent-link\" aria-expanded=\"false\" aria-controls=\"zt-dropdown-products\" aria-label=\"Open Products menu\" style=\"background: none; border: none; cursor: pointer; padding: 0; font-family: inherit; font-size: inherit; font-weight: inherit; color: inherit; display: inline-flex; align-items: center; gap: 4px;\">\n          <span>Products<\/span>\n          <svg class=\"zt-chevron-icon\" width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"transition: transform 0.2s ease; margin-left: 2px;\">\n            <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n          <\/svg>\n        <\/button>\n\n        <!-- Products 5-Category Master Mega Dropdown Panel -->\n        <div class=\"zt-dropdown-panel\" id=\"zt-dropdown-products\" style=\"max-width: 100vw; box-sizing: border-box;\">\n          <div style=\"max-width: 1440px; margin: 0 auto; padding: 0 2rem; box-sizing: border-box;\">\n            <div style=\"display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; width: 100%; box-sizing: border-box;\" class=\"zt-products-5cat-grid\">\n              \n              <!-- Cat 1: ZoomGate -->\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/zoomgate\/\" class=\"zt-mega-item zt-mega-item-card\" style=\"text-decoration: none; display: flex; flex-direction: column; gap: 0.4rem; padding: 1.15rem 1rem; border-radius: 8px; border: 1px solid #E2E8F0; background: #FFFFFF; transition: all 0.2s ease; box-sizing: border-box;\">\n                <div style=\"font-size: 0.68rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">HARDWARE<\/div>\n                <div style=\"font-size: 0.98rem; font-weight: 800; color: #0F172A;\">ZoomGate<\/div>\n                <div style=\"font-size: 0.78rem; color: #64748B; line-height: 1.45; white-space: normal;\">Pedestrian speed gates &amp; optical turnstiles.<\/div>\n              <\/a>\n\n              <!-- Cat 2: ZoomFace -->\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/facial-recognition\/\" class=\"zt-mega-item zt-mega-item-card\" style=\"text-decoration: none; display: flex; flex-direction: column; gap: 0.4rem; padding: 1.15rem 1rem; border-radius: 8px; border: 1px solid #E2E8F0; background: #FFFFFF; transition: all 0.2s ease; box-sizing: border-box;\">\n                <div style=\"font-size: 0.68rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">BIOMETRICS<\/div>\n                <div style=\"font-size: 0.98rem; font-weight: 800; color: #0F172A;\">ZoomFace<\/div>\n                <div style=\"font-size: 0.78rem; color: #64748B; line-height: 1.45; white-space: normal;\">AI facial recognition admission terminals.<\/div>\n              <\/a>\n\n              <!-- Cat 3: ZoomAccess -->\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/access\/\" class=\"zt-mega-item zt-mega-item-card\" style=\"text-decoration: none; display: flex; flex-direction: column; gap: 0.4rem; padding: 1.15rem 1rem; border-radius: 8px; border: 1px solid #E2E8F0; background: #FFFFFF; transition: all 0.2s ease; box-sizing: border-box;\">\n                <div style=\"font-size: 0.68rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">SOFTWARE<\/div>\n                <div style=\"font-size: 0.98rem; font-weight: 800; color: #0F172A;\">ZoomAccess<\/div>\n                <div style=\"font-size: 0.78rem; color: #64748B; line-height: 1.45; white-space: normal;\">Web access control &amp; lift dispatch sync.<\/div>\n              <\/a>\n\n              <!-- Cat 4: ZoomSurveillance -->\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/surveillance\/\" class=\"zt-mega-item zt-mega-item-card\" style=\"text-decoration: none; display: flex; flex-direction: column; gap: 0.4rem; padding: 1.15rem 1rem; border-radius: 8px; border: 1px solid #E2E8F0; background: #FFFFFF; transition: all 0.2s ease; box-sizing: border-box;\">\n                <div style=\"font-size: 0.68rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">ANALYTICS<\/div>\n                <div style=\"font-size: 0.98rem; font-weight: 800; color: #0F172A;\">ZoomSurveillance<\/div>\n                <div style=\"font-size: 0.78rem; color: #64748B; line-height: 1.45; white-space: normal;\">i-LIDS certified CMS video analytics.<\/div>\n              <\/a>\n\n              <!-- Cat 5: ZoomIOT -->\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/solutions-new\/\" class=\"zt-mega-item zt-mega-item-card\" style=\"text-decoration: none; display: flex; flex-direction: column; gap: 0.4rem; padding: 1.15rem 1rem; border-radius: 8px; border: 1px solid #E2E8F0; background: #FFFFFF; transition: all 0.2s ease; box-sizing: border-box;\">\n                <div style=\"font-size: 0.68rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">TELEMETRY<\/div>\n                <div style=\"font-size: 0.98rem; font-weight: 800; color: #0F172A;\">ZoomIOT<\/div>\n                <div style=\"font-size: 0.78rem; color: #64748B; line-height: 1.45; white-space: normal;\">Connected facility security telemetry.<\/div>\n              <\/a>\n\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- 3. ABOUT -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/about-new\/\" id=\"nav-link-about\" class=\"zt-nav-link\">\n        <span>About<\/span>\n      <\/a>\n\n      <!-- 4. OUR WORK -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/our-projects\/\" id=\"nav-link-work\" class=\"zt-nav-link\">\n        <span>Our Work<\/span>\n      <\/a>\n\n      <!-- 5. INSIGHTS -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/pressroom\/\" id=\"nav-link-insights\" class=\"zt-nav-link\">\n        <span>Insights<\/span>\n      <\/a>\n\n    <\/nav>\n\n    <!-- Right: Header CTA + Mobile Hamburger Toggle -->\n    <div style=\"display: flex; align-items: center; gap: 12px; z-index: 1000001;\">\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/\" id=\"nav-link-contact\" class=\"zt-header-cta-btn zt-header-desktop-cta\" style=\"text-decoration: none; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 700; font-size: 0.85rem; padding: 0.6rem 1.35rem; border-radius: 9999px; transition: all 0.22s ease; white-space: nowrap;\">\n        Talk to us\n      <\/a>\n\n      <!-- Mobile Hamburger Button -->\n      <button id=\"zt-mobile-toggle\" onclick=\"window.openMobileDrawer && window.openMobileDrawer()\" type=\"button\" aria-label=\"Toggle navigation menu\" style=\"display: none; background: none; border: 1px solid #CBD5E1; border-radius: 6px; width: 42px; height: 42px; cursor: pointer; align-items: center; justify-content: center; padding: 0;\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#0F172A\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"><\/line><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"><\/line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"><\/line><\/svg>\n      <\/button>\n    <\/div>\n\n  <\/header>\n<\/div>\n\n<!-- FIXED HEADER VIEWPORT SPACER (74PX) -->\n<div id=\"zt-header-spacer\" style=\"height: 74px !important; width: 100% !important; display: block !important; margin: 0 !important; padding: 0 !important; box-sizing: border-box !important;\"><\/div>\n\n<!-- FULL-SCREEN MOBILE DRAWER & OVERLAY -->\n<div id=\"zt-mobile-overlay\" onclick=\"window.closeMobileDrawer && window.closeMobileDrawer()\" style=\"display: none; position: fixed; inset: 0; width: 100vw; height: 100vh; background: rgba(15, 23, 42, 0.65); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); z-index: 10000008; opacity: 0; transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1);\"><\/div>\n\n<div id=\"zt-mobile-drawer\" style=\"position: fixed; top: 0; left: 0; right: 0; bottom: 0; inset: 0; width: 100vw; max-width: 100vw; height: 100vh; height: 100dvh; max-height: 100dvh; background: #FFFFFF; z-index: 10000010; transform: translateX(100%); transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1); display: none; flex-direction: column; justify-content: space-between; padding: 1.25rem 1.5rem max(1.25rem, env(safe-area-inset-bottom, 1.25rem)) 1.5rem; box-sizing: border-box; overflow-y: auto; -webkit-overflow-scrolling: touch; border-radius: 0; border: none; box-shadow: none;\">\n  <div style=\"display: flex; flex-direction: column; gap: 1.25rem; width: 100%; box-sizing: border-box;\">\n    \n    <!-- Drawer Header: Small Logo + X Button -->\n    <div style=\"display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #F1F5F9; padding-bottom: 1rem; width: 100%; box-sizing: border-box;\">\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/home-new\/\" style=\"text-decoration: none; display: inline-flex; align-items: center; max-width: 180px;\">\n        <img decoding=\"async\" src=\"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2018\/07\/small-logo.png\" alt=\"Zoom Tech\" style=\"height: 20px; max-height: 20px; max-width: 170px; width: auto; object-fit: contain; display: block;\" \/>\n      <\/a>\n      <button id=\"zt-mobile-close\" onclick=\"window.closeMobileDrawer && window.closeMobileDrawer()\" type=\"button\" aria-label=\"Close navigation menu\" style=\"background: #F1F5F9; border: none; border-radius: 8px; min-width: 42px; min-height: 42px; width: 42px; height: 42px; font-size: 1.6rem; color: #0F172A; cursor: pointer; display: flex; align-items: center; justify-content: center; line-height: 1; padding: 0;\">&times;<\/button>\n    <\/div>\n\n    <!-- Mobile Nav Links with Accordion -->\n    <div style=\"display: flex; flex-direction: column; gap: 0.35rem; width: 100%; box-sizing: border-box;\">\n      \n      <!-- 2. PRODUCTS ACCORDION -->\n      <div class=\"zt-drawer-acc-item\" id=\"zt-drawer-item-products\" style=\"border-radius: 6px; overflow: hidden; width: 100%;\">\n        <div class=\"zt-drawer-acc-header\" data-target=\"products\" style=\"display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 0.5rem; cursor: pointer; border-radius: 6px; transition: background 0.15s ease; user-select: none;\">\n          <span style=\"font-size: 1.1rem; font-weight: 700; color: #0F172A;\">Products<\/span>\n          <span id=\"zt-drawer-icon-products\" class=\"zt-drawer-acc-icon\" style=\"font-size: 1.25rem; font-weight: 600; color: #64748B; width: 24px; text-align: right; user-select: none; line-height: 1;\">+<\/span>\n        <\/div>\n        <div id=\"zt-drawer-sub-products\" class=\"zt-drawer-submenu\" style=\"display: none; flex-direction: column; gap: 0.15rem; padding: 0.25rem 0 0.5rem 0.75rem; border-left: 2px solid #E2E8F0; margin-left: 0.5rem; margin-top: 0.15rem;\">\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/zoomgate\/\" class=\"zt-mobile-sublink\" style=\"text-decoration: none; font-size: 0.95rem; font-weight: 600; color: #475569; padding: 0.5rem 0.5rem; border-radius: 4px; display: block;\">ZoomGate<\/a>\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/facial-recognition\/\" class=\"zt-mobile-sublink\" style=\"text-decoration: none; font-size: 0.95rem; font-weight: 600; color: #475569; padding: 0.5rem 0.5rem; border-radius: 4px; display: block;\">ZoomFace<\/a>\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/access\/\" class=\"zt-mobile-sublink\" style=\"text-decoration: none; font-size: 0.95rem; font-weight: 600; color: #475569; padding: 0.5rem 0.5rem; border-radius: 4px; display: block;\">ZoomAccess<\/a>\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/surveillance\/\" class=\"zt-mobile-sublink\" style=\"text-decoration: none; font-size: 0.95rem; font-weight: 600; color: #475569; padding: 0.5rem 0.5rem; border-radius: 4px; display: block;\">ZoomSurveillance<\/a>\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/solutions-new\/\" class=\"zt-mobile-sublink\" style=\"text-decoration: none; font-size: 0.95rem; font-weight: 600; color: #475569; padding: 0.5rem 0.5rem; border-radius: 4px; display: block;\">ZoomIOT<\/a>\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/products-new\/\" class=\"zt-mobile-sublink\" style=\"text-decoration: none; font-size: 0.95rem; font-weight: 700; color: #059669; padding: 0.5rem 0.5rem; border-radius: 4px; display: block;\">View All Products &rarr;<\/a>\n        <\/div>\n      <\/div>\n\n      <!-- 3. ABOUT -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/about-new\/\" class=\"zt-mobile-drawer-link\" style=\"text-decoration: none; font-size: 1.1rem; font-weight: 700; color: #0F172A; padding: 0.75rem 0.5rem; border-radius: 6px; transition: all 0.15s ease; display: block;\">About<\/a>\n\n      <!-- 4. OUR WORK -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/our-projects\/\" class=\"zt-mobile-drawer-link\" style=\"text-decoration: none; font-size: 1.1rem; font-weight: 700; color: #0F172A; padding: 0.75rem 0.5rem; border-radius: 6px; transition: all 0.15s ease; display: block;\">Our Work<\/a>\n\n      <!-- 5. INSIGHTS -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/pressroom\/\" class=\"zt-mobile-drawer-link\" style=\"text-decoration: none; font-size: 1.1rem; font-weight: 700; color: #0F172A; padding: 0.75rem 0.5rem; border-radius: 6px; transition: all 0.15s ease; display: block;\">Insights<\/a>\n\n      <!-- 6. TALK TO US \/ CONTACT -->\n      <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/\" class=\"zt-mobile-drawer-link\" style=\"text-decoration: none; font-size: 1.1rem; font-weight: 700; color: #059669; padding: 0.75rem 0.75rem; border-radius: 8px; transition: all 0.15s ease; display: block; background: #ECFDF5; margin-top: 0.25rem;\">Talk to us &rarr;<\/a>\n\n    <\/div>\n  <\/div>\n\n  <!-- Bottom Direct Quick Actions -->\n  <div style=\"display: flex; flex-direction: column; gap: 8px; width: 100%; padding-top: 1.25rem; border-top: 1px solid #F1F5F9; box-sizing: border-box;\">\n    <a href=\"tel:+6569041285\" style=\"text-decoration: none; display: flex; align-items: center; justify-content: center; gap: 8px; text-align: center; width: 100%; box-sizing: border-box; padding: 0.75rem 1rem; background-color: #0F172A; color: #FFFFFF; font-weight: 700; font-size: 0.88rem; border-radius: 8px;\">\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#10B981\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\"><\/path><\/svg>\n      <span style=\"white-space: nowrap;\">Call: +65 6904 1285<\/span>\n    <\/a>\n    <a href=\"https:\/\/wa.me\/6569041285?text=Hi%20Zoom%20Tech%2C%20I%27m%20interested%20in%20your%20access%20control%20solutions.%20I%27d%20like%20to%20know%20more.\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"text-decoration: none; display: flex; align-items: center; justify-content: center; gap: 8px; text-align: center; width: 100%; box-sizing: border-box; padding: 0.75rem 1rem; background-color: #25D366; color: #FFFFFF; font-weight: 700; font-size: 0.88rem; border-radius: 8px;\">\n      <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"#FFFFFF\"><path d=\"M.057 24l1.687-6.163c-1.041-1.804-1.588-3.849-1.587-5.946.003-6.556 5.338-11.891 11.893-11.891 3.181.001 6.167 1.24 8.413 3.488 2.245 2.248 3.481 5.236 3.48 8.414-.003 6.557-5.338 11.892-11.893 11.892-1.99-.001-3.951-.5-5.688-1.448l-6.305 1.654zm6.597-3.807c1.676.995 3.276 1.591 5.392 1.592 5.448 0 9.886-4.434 9.889-9.885.002-5.462-4.415-9.89-9.881-9.892-5.452 0-9.887 4.434-9.889 9.884-.001 2.225.651 3.891 1.746 5.634l-.999 3.648 3.742-.981zm11.387-5.464c-.074-.124-.272-.198-.57-.347-.297-.149-1.758-.868-2.031-.967-.272-.099-.47-.149-.669.149-.198.297-.768.967-.941 1.165-.173.198-.347.223-.644.074-.297-.149-1.255-.462-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.297-.347.446-.521.151-.172.2-.296.3-.495.099-.198.05-.372-.025-.521-.075-.148-.669-1.611-.916-2.206-.242-.579-.487-.501-.669-.51l-.57-.01c-.198 0-.52.074-.792.372s-1.04 1.016-1.04 2.479 1.065 2.876 1.213 3.074c.149.198 2.095 3.2 5.076 4.487.709.306 1.263.489 1.694.626.712.226 1.36.194 1.872.118.571-.085 1.758-.719 2.006-1.413.248-.695.248-1.29.173-1.414z\"\/><\/svg>\n      <span style=\"white-space: nowrap;\">WhatsApp: +65 6904 1285<\/span>\n    <\/a>\n  <\/div>\n<\/div>\n\n<style>\n\/* ZERO GAP BETWEEN FIXED HEADER & HERO ACROSS ALL VIEWPORTS *\/\nhtml, body {\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.elementor,\n.elementor-section,\n.elementor-column,\n.elementor-widget-wrap,\n.elementor-widget,\n.elementor-widget-html,\n.elementor-element {\n  margin: 0 !important;\n  padding: 0 !important;\n  --widgets-spacing: 0px 0px !important;\n}\n\n.elementor-widget:not(:last-child) {\n  margin-bottom: 0 !important;\n}\n\n.elementor-widget-html .elementor-widget-container {\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n\/* FIXED 100% VIEWPORT GLOBAL HEADER (Z-INDEX 1000000) *\/\n#zt-site-header-wrapper {\n  width: 100% !important;\n  position: fixed !important;\n  top: 0 !important;\n  left: 0 !important;\n  right: 0 !important;\n  z-index: 1000000 !important;\n  background: #FFFFFF !important;\n  background-color: #FFFFFF !important;\n  border-bottom: 1px solid #E2E8F0 !important;\n  box-shadow: 0 2px 10px rgba(15, 23, 42, 0.04) !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n  display: block !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n}\n\n#zt-header-spacer {\n  height: 74px !important;\n  width: 100% !important;\n  display: block !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  box-sizing: border-box !important;\n}\n\n#zt-main-header {\n  max-width: 1440px !important;\n  min-height: 74px !important;\n  height: 74px !important;\n  margin: 0 auto !important;\n  padding: 0 2rem !important;\n  display: flex !important;\n  flex-direction: row !important;\n  justify-content: space-between !important;\n  align-items: center !important;\n  box-sizing: border-box !important;\n  flex-wrap: nowrap !important;\n  white-space: nowrap !important;\n}\n\n\/* LOGO: STRICT INLINE ROW COMPONENT *\/\n.zt-header-logo {\n  flex-shrink: 0 !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.zt-header-logo img {\n  height: 34px !important;\n  max-height: 34px !important;\n  width: auto !important;\n  object-fit: contain !important;\n  display: block !important;\n}\n\n\/* NAVIGATION: STRICT NON-WRAPPING FLEX ROW *\/\n.zt-desktop-nav {\n  display: flex !important;\n  flex-direction: row !important;\n  align-items: center !important;\n  gap: 2rem !important;\n  height: 100% !important;\n  flex-wrap: nowrap !important;\n  white-space: nowrap !important;\n  flex-shrink: 0 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n}\n\n.zt-nav-dropdown-item {\n  height: 74px !important;\n  display: inline-flex !important;\n  flex-direction: row !important;\n  align-items: center !important;\n  position: relative !important;\n  flex-shrink: 0 !important;\n  white-space: nowrap !important;\n}\n\n.zt-nav-link,\n.zt-nav-parent-link {\n  color: #1E293B !important;\n  text-decoration: none !important;\n  font-size: 0.95rem !important;\n  font-weight: 600 !important;\n  white-space: nowrap !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  transition: color 0.18s ease !important;\n}\n\n.zt-nav-link:hover,\n.zt-nav-parent-link:hover {\n  color: #059669 !important;\n}\n\n.zt-nav-caret-btn {\n  color: #64748B !important;\n  background: none !important;\n  border: none !important;\n  cursor: pointer !important;\n  padding: 0.5rem 0.25rem 0.5rem 0.15rem !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n}\n\n\/* RIGHT CTA BUTTON *\/\n.zt-header-cta-btn {\n  text-decoration: none !important;\n  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif !important;\n  font-weight: 700 !important;\n  font-size: 0.85rem !important;\n  color: #FFFFFF !important;\n  background: #0F172A !important;\n  background-color: #0F172A !important;\n  padding: 0.6rem 1.35rem !important;\n  border-radius: 9999px !important;\n  display: inline-flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  transition: all 0.22s cubic-bezier(0.16, 1, 0.3, 1) !important;\n  box-sizing: border-box !important;\n}\n\n.zt-header-cta-btn:hover {\n  background: #059669 !important;\n  background-color: #059669 !important;\n  color: #FFFFFF !important;\n}\n\n\/* ACTIVE PAGE STATE (4-6px Below Text Baseline) *\/\n.zt-nav-link.zt-active-route {\n  color: #059669 !important;\n  font-weight: 700 !important;\n  position: relative !important;\n}\n.zt-nav-link.zt-active-route::after {\n  content: '' !important;\n  position: absolute !important;\n  bottom: 2px !important;\n  left: 0 !important;\n  width: 100% !important;\n  height: 2px !important;\n  background-color: #059669 !important;\n  border-radius: 2px !important;\n}\n\n\/* FROZEN MEGA MENU INDEPENDENT STYLING (Z-INDEX 999999) *\/\n.zt-dropdown-panel {\n  max-width: 100vw !important;\n  overflow: hidden !important;\n  position: fixed !important;\n  top: 74px !important;\n  left: 0 !important;\n  right: 0 !important;\n  width: 100vw !important;\n  background: #FFFFFF !important;\n  background-color: #FFFFFF !important;\n  box-shadow: 0 20px 40px -8px rgba(15, 23, 42, 0.08) !important;\n  border-bottom: 1px solid #E2E8F0 !important;\n  padding: 2.25rem 0 2.5rem 0 !important;\n  box-sizing: border-box !important;\n  z-index: 999999 !important;\n  display: block !important;\n  opacity: 0 !important;\n  visibility: hidden !important;\n  pointer-events: none !important;\n  transform: translateY(-6px) !important;\n  transition: opacity 220ms ease, transform 260ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 220ms !important;\n  will-change: opacity, transform;\n}\n\n.zt-nav-dropdown-item:hover .zt-dropdown-panel,\n.zt-nav-dropdown-item:focus-within .zt-dropdown-panel,\n.zt-dropdown-panel.is-open {\n  opacity: 1 !important;\n  visibility: visible !important;\n  pointer-events: auto !important;\n  transform: translateY(0) !important;\n  transition: opacity 300ms cubic-bezier(0.16, 1, 0.3, 1), transform 300ms cubic-bezier(0.16, 1, 0.3, 1), visibility 0s linear 0s !important;\n}\n\n.zt-nav-dropdown-item:hover .zt-chevron-icon,\n.zt-nav-dropdown-item.is-open .zt-chevron-icon {\n  transform: rotate(180deg) !important;\n}\n\n.zt-dropdown-panel::before {\n  content: '';\n  position: absolute;\n  top: -20px;\n  left: 0;\n  width: 100%;\n  height: 20px;\n  background: transparent;\n  pointer-events: auto;\n}\n\n.zt-mega-item {\n  color: #1E293B !important;\n}\n.zt-mega-item:hover {\n  color: #059669 !important;\n}\n\n.zt-mega-item-card {\n  min-width: 0 !important;\n  box-sizing: border-box !important;\n  white-space: normal !important;\n}\n\n.zt-products-5cat-grid > * {\n  min-width: 0 !important;\n}\n\n.zt-mega-item-card:hover {\n  border-color: #059669 !important;\n  background-color: #FFFFFF !important;\n  box-shadow: 0 4px 16px rgba(5, 150, 105, 0.08) !important;\n}\n\n\/* SMALL DESKTOP \/ TABLET LANDSCAPE (1024px to 1140px) *\/\n@media (min-width: 1024px) and (max-width: 1140px) {\n  #zt-main-header {\n    padding: 0 1.25rem !important;\n  }\n  .zt-header-logo img {\n    height: 28px !important;\n    max-height: 28px !important;\n    max-width: 250px !important;\n  }\n  .zt-desktop-nav {\n    gap: 1.15rem !important;\n  }\n  .zt-nav-link,\n  .zt-nav-parent-link {\n    font-size: 0.88rem !important;\n  }\n  .zt-header-cta-btn {\n    padding: 0.5rem 1.15rem !important;\n    font-size: 0.82rem !important;\n  }\n}\n\n\/* DESKTOP ( >= 1024px ): DRAWER COMPLETELY INERT & HIDDEN *\/\n@media (min-width: 1024px) {\n  #zt-mobile-drawer,\n  #zt-mobile-overlay {\n    display: none !important;\n    pointer-events: none !important;\n  }\n}\n\n\/* TABLET & MOBILE ( <= 1023px ): FULL-SCREEN NAVIGATION SIDEBAR *\/\n@media (max-width: 1023px) {\n  .zt-desktop-nav {\n    display: none !important;\n  }\n  #zt-mobile-toggle {\n    display: flex !important;\n    width: 42px !important;\n    height: 42px !important;\n    min-width: 42px !important;\n    min-height: 42px !important;\n  }\n  #zt-main-header {\n    padding: 0 1.25rem !important;\n  }\n  #zt-mobile-overlay {\n    display: none;\n    position: fixed !important;\n    inset: 0 !important;\n    width: 100vw !important;\n    height: 100vh !important;\n    background: rgba(15, 23, 42, 0.65) !important;\n    backdrop-filter: blur(8px) !important;\n    -webkit-backdrop-filter: blur(8px) !important;\n    z-index: 10000008 !important;\n    opacity: 0;\n    pointer-events: none;\n    transition: opacity 0.3s cubic-bezier(0.16, 1, 0.3, 1) !important;\n  }\n  #zt-mobile-overlay.is-active {\n    display: block !important;\n    opacity: 1 !important;\n    pointer-events: auto !important;\n  }\n  #zt-mobile-drawer {\n    display: none;\n    position: fixed !important;\n    top: 0 !important;\n    left: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    inset: 0 !important;\n    width: 100vw !important;\n    width: 100% !important;\n    max-width: 100vw !important;\n    height: 100vh !important;\n    height: 100dvh !important;\n    max-height: 100dvh !important;\n    background: #FFFFFF !important;\n    z-index: 10000010 !important;\n    transform: translateX(100%);\n    pointer-events: none;\n    transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1) !important;\n    box-shadow: none !important;\n    border-radius: 0 !important;\n    border: none !important;\n    flex-direction: column !important;\n    justify-content: space-between !important;\n    padding: 1.25rem 1.5rem max(1.25rem, env(safe-area-inset-bottom, 1.25rem)) 1.5rem !important;\n    box-sizing: border-box !important;\n    overflow-y: auto !important;\n    -webkit-overflow-scrolling: touch !important;\n  }\n  #zt-mobile-drawer.is-open {\n    display: flex !important;\n    transform: translateX(0) !important;\n    pointer-events: auto !important;\n  }\n}\n\n\/* MOBILE RESPONSIVE STYLES (<= 767px) *\/\n@media (max-width: 767px) {\n  #zt-main-header .zt-header-desktop-cta {\n    display: none !important;\n  }\n  #zt-main-header {\n    padding: 0 1rem !important;\n    height: 64px !important;\n    min-height: 64px !important;\n  }\n  #zt-header-spacer {\n    height: 64px !important;\n  }\n  .zt-header-logo {\n    max-width: calc(100% - 56px) !important;\n  }\n  .zt-header-logo img {\n    height: 24px !important;\n    max-height: 24px !important;\n    max-width: 220px !important;\n    width: auto !important;\n    object-fit: contain !important;\n  }\n  #zt-mobile-drawer {\n    padding: 1.25rem 1.25rem max(1.25rem, env(safe-area-inset-bottom, 1.25rem)) 1.25rem !important;\n  }\n}\n\n@media (max-width: 360px) {\n  .zt-header-logo img {\n    height: 20px !important;\n    max-height: 20px !important;\n    max-width: 200px !important;\n  }\n  #zt-mobile-drawer {\n    padding: 1rem 1rem max(1rem, env(safe-area-inset-bottom, 1rem)) 1rem !important;\n  }\n}\n\n\/* MOBILE DRAWER ACCORDION STYLES *\/\n.zt-drawer-acc-header {\n  -webkit-tap-highlight-color: transparent;\n}\n.zt-drawer-acc-header:hover,\n.zt-drawer-acc-header:active {\n  background-color: #F8FAFC !important;\n}\n.zt-drawer-acc-item.is-open .zt-drawer-submenu {\n  display: flex !important;\n}\n.zt-mobile-sublink {\n  transition: background-color 0.15s ease, color 0.15s ease;\n}\n.zt-mobile-sublink:hover,\n.zt-mobile-sublink:active {\n  background-color: #F1F5F9 !important;\n  color: #0F172A !important;\n}\n<\/style>\n\n<script>\n(function() {\n  \/\/ Mobile Drawer Accordion Toggle Function\n  window.ztToggleDrawerAccordion = function(targetKey, e) {\n    if (e) {\n      if (e.preventDefault) e.preventDefault();\n      if (e.stopPropagation) e.stopPropagation();\n    }\n    var targetItem = document.getElementById('zt-drawer-item-' + targetKey);\n    var targetSub = document.getElementById('zt-drawer-sub-' + targetKey);\n    var targetIcon = document.getElementById('zt-drawer-icon-' + targetKey);\n    if (!targetItem || !targetSub) return;\n\n    var isAlreadyOpen = targetItem.classList.contains('is-open') || targetSub.style.display === 'flex';\n\n    \/\/ Collapse all accordion submenus in drawer\n    var allItems = document.querySelectorAll('.zt-drawer-acc-item');\n    var allSubs = document.querySelectorAll('.zt-drawer-submenu');\n    var allIcons = document.querySelectorAll('.zt-drawer-acc-icon');\n    allItems.forEach(function(el) { el.classList.remove('is-open'); });\n    allSubs.forEach(function(el) { el.style.display = 'none'; });\n    allIcons.forEach(function(el) { el.textContent = '+'; });\n\n    if (!isAlreadyOpen) {\n      targetItem.classList.add('is-open');\n      targetSub.style.display = 'flex';\n      if (targetIcon) targetIcon.textContent = '\u2212';\n    }\n  };\n\n  function initHeaderSystem() {\n    if (window.__ztHeaderSystemInitDone) return;\n    window.__ztHeaderSystemInitDone = true;\n\n    var dropdownItems = document.querySelectorAll('.zt-nav-dropdown-item');\n    var closeTimer = null;\n    var isScrollLocked = false;\n    var scrollBlockedKeys = ['Space', ' ', 'PageDown', 'PageUp', 'ArrowDown', 'ArrowUp', 'Home', 'End'];\n\n    \/\/ 1. Active Route Highlight\n    var path = window.location.pathname.toLowerCase();\n    var navSolutions = document.getElementById('nav-link-solutions');\n    var navProducts = document.getElementById('nav-link-products');\n    var navAbout = document.getElementById('nav-link-about');\n    var navWork = document.getElementById('nav-link-work');\n    var navInsights = document.getElementById('nav-link-insights');\n\n    if (path.includes('solutions') || path.includes('facial-recognition') || path.includes('access')) {\n      if (navSolutions) navSolutions.classList.add('zt-active-route');\n    } else if (path.includes('products') || path.includes('swing-gate') || path.includes('speed-swing') || path.includes('max-turnstile') || path.includes('wing-flap') || path.includes('tri-tripod') || path.includes('compare') || path.includes('configurator') || path.includes('\/product\/') || path.includes('zoomgate')) {\n      if (navProducts) navProducts.classList.add('zt-active-route');\n    } else if (path.includes('about')) {\n      if (navAbout) navAbout.classList.add('zt-active-route');\n    } else if (path.includes('our-projects') || path.includes('projects')) {\n      if (navWork) navWork.classList.add('zt-active-route');\n    } else if (path.includes('pressroom') || path.includes('insights')) {\n      if (navInsights) navInsights.classList.add('zt-active-route');\n    }\n\n    \/\/ 2. Safe Scroll Lock Engine\n    function preventScrollEvents(e) {\n      var target = e.target;\n      var isInsidePanel = target && target.closest && (target.closest('.zt-dropdown-panel') || target.closest('#zt-mobile-drawer'));\n      \n      if (e.type === 'wheel' || e.type === 'touchmove') {\n        if (!isInsidePanel) {\n          e.preventDefault();\n        }\n      } else if (e.type === 'keydown') {\n        if (scrollBlockedKeys.indexOf(e.code) !== -1 || scrollBlockedKeys.indexOf(e.key) !== -1) {\n          var tag = target && target.tagName ? target.tagName.toLowerCase() : '';\n          if (tag !== 'input' && tag !== 'textarea' && !target.isContentEditable) {\n            e.preventDefault();\n          }\n        }\n      }\n    }\n\n    function lockDocumentScroll() {\n      if (isScrollLocked) return;\n      isScrollLocked = true;\n      document.documentElement.style.overflow = 'hidden';\n      document.body.style.overflow = 'hidden';\n      window.addEventListener('wheel', preventScrollEvents, { passive: false, capture: true });\n      window.addEventListener('touchmove', preventScrollEvents, { passive: false, capture: true });\n      window.addEventListener('keydown', preventScrollEvents, { capture: true });\n    }\n\n    function unlockDocumentScroll(force) {\n      if (!isScrollLocked) return;\n      if (!force) {\n        var anyOpen = false;\n        dropdownItems.forEach(function(item) {\n          var panel = item.querySelector('.zt-dropdown-panel');\n          if (panel && panel.classList.contains('is-open')) {\n            anyOpen = true;\n          }\n        });\n        var mobileDrawer = document.getElementById('zt-mobile-drawer');\n        if (mobileDrawer && mobileDrawer.classList.contains('is-open')) {\n          anyOpen = true;\n        }\n        if (anyOpen) return;\n      }\n      isScrollLocked = false;\n      window.removeEventListener('wheel', preventScrollEvents, { capture: true });\n      window.removeEventListener('touchmove', preventScrollEvents, { capture: true });\n      window.removeEventListener('keydown', preventScrollEvents, { capture: true });\n      document.documentElement.style.overflow = '';\n      document.body.style.overflow = '';\n    }\n\n    \/\/ 3. Dropdown Open \/ Close Handling\n    function openDropdown(item) {\n      if (closeTimer) {\n        clearTimeout(closeTimer);\n        closeTimer = null;\n      }\n\n      dropdownItems.forEach(function(other) {\n        if (other !== item) {\n          var otherPanel = other.querySelector('.zt-dropdown-panel');\n          var otherCaretBtn = other.querySelector('.zt-nav-caret-btn');\n          var otherChev = other.querySelector('.zt-chevron-icon');\n          if (otherPanel) otherPanel.classList.remove('is-open');\n          if (otherCaretBtn) otherCaretBtn.setAttribute('aria-expanded', 'false');\n          if (otherChev) otherChev.style.transform = 'rotate(0deg)';\n        }\n      });\n\n      var targetPanel = item.querySelector('.zt-dropdown-panel');\n      var targetCaretBtn = item.querySelector('.zt-nav-caret-btn');\n      var targetChev = item.querySelector('.zt-chevron-icon');\n      if (targetPanel) {\n        targetPanel.classList.add('is-open');\n        if (targetCaretBtn) targetCaretBtn.setAttribute('aria-expanded', 'true');\n        if (targetChev) targetChev.style.transform = 'rotate(180deg)';\n        lockDocumentScroll();\n      }\n    }\n\n    function scheduleClose(item) {\n      if (closeTimer) clearTimeout(closeTimer);\n      closeTimer = setTimeout(function() {\n        var panel = item.querySelector('.zt-dropdown-panel');\n        var caretBtn = item.querySelector('.zt-nav-caret-btn');\n        var chev = item.querySelector('.zt-chevron-icon');\n        if (panel) panel.classList.remove('is-open');\n        if (caretBtn) caretBtn.setAttribute('aria-expanded', 'false');\n        if (chev) chev.style.transform = 'rotate(0deg)';\n        unlockDocumentScroll(false);\n      }, 240);\n    }\n\n    dropdownItems.forEach(function(item) {\n      item.addEventListener('mouseenter', function() { openDropdown(item); });\n      item.addEventListener('mouseleave', function() { scheduleClose(item); });\n\n      var triggerBtn = item.querySelector('.zt-nav-parent-link') || item.querySelector('.zt-nav-caret-btn');\n      if (triggerBtn) {\n        triggerBtn.addEventListener('click', function(e) {\n          e.preventDefault();\n          e.stopPropagation();\n          var panel = item.querySelector('.zt-dropdown-panel');\n          var isOpen = panel && panel.classList.contains('is-open');\n          if (isOpen) {\n            scheduleClose(item);\n          } else {\n            openDropdown(item);\n          }\n        });\n      }\n\n      var panel = item.querySelector('.zt-dropdown-panel');\n      if (panel) {\n        panel.addEventListener('mouseenter', function() {\n          if (closeTimer) { clearTimeout(closeTimer); closeTimer = null; }\n          lockDocumentScroll();\n        });\n        panel.addEventListener('mouseleave', function() { scheduleClose(item); });\n      }\n    });\n\n    \/\/ Dismissal\n    document.addEventListener('click', function(e) {\n      var isInsideDropdown = e.target.closest('.zt-nav-dropdown-item') || e.target.closest('.zt-dropdown-panel');\n      if (!isInsideDropdown) {\n        if (closeTimer) clearTimeout(closeTimer);\n        dropdownItems.forEach(function(item) {\n          var panel = item.querySelector('.zt-dropdown-panel');\n          var caretBtn = item.querySelector('.zt-nav-caret-btn');\n          var chev = item.querySelector('.zt-chevron-icon');\n          if (panel) panel.classList.remove('is-open');\n          if (caretBtn) caretBtn.setAttribute('aria-expanded', 'false');\n          if (chev) chev.style.transform = 'rotate(0deg)';\n        });\n        unlockDocumentScroll(true);\n      }\n    });\n\n    document.addEventListener('keydown', function(e) {\n      if (e.key === 'Escape') {\n        if (closeTimer) clearTimeout(closeTimer);\n        dropdownItems.forEach(function(item) {\n          var panel = item.querySelector('.zt-dropdown-panel');\n          var caretBtn = item.querySelector('.zt-nav-caret-btn');\n          var chev = item.querySelector('.zt-chevron-icon');\n          if (panel) panel.classList.remove('is-open');\n          if (caretBtn) caretBtn.setAttribute('aria-expanded', 'false');\n          if (chev) chev.style.transform = 'rotate(0deg)';\n        });\n        if (window.closeMobileDrawer) window.closeMobileDrawer();\n        unlockDocumentScroll(true);\n      }\n    });\n\n    var megaLinks = document.querySelectorAll('.zt-dropdown-panel a');\n    megaLinks.forEach(function(link) {\n      link.addEventListener('click', function() {\n        dropdownItems.forEach(function(item) {\n          var panel = item.querySelector('.zt-dropdown-panel');\n          if (panel) panel.classList.remove('is-open');\n        });\n        unlockDocumentScroll(true);\n      });\n    });\n\n    window.addEventListener('beforeunload', function() {\n      unlockDocumentScroll(true);\n    });\n\n    \/\/ Mobile Navigation Controls\n    var mobileToggle = document.getElementById('zt-mobile-toggle');\n    var mobileDrawer = document.getElementById('zt-mobile-drawer');\n    var mobileOverlay = document.getElementById('zt-mobile-overlay');\n    var mobileClose = document.getElementById('zt-mobile-close');\n\n    \/\/ Drawer link auto-close\n    var drawerLinks = document.querySelectorAll('#zt-mobile-drawer a');\n    drawerLinks.forEach(function(link) {\n      link.addEventListener('click', function() {\n        if (window.closeMobileDrawer) window.closeMobileDrawer();\n      });\n    });\n\n    window.openMobileDrawer = function openMobileDrawer() {\n      var mobileDrawer = document.getElementById(\"zt-mobile-drawer\");\n      var mobileOverlay = document.getElementById(\"zt-mobile-overlay\");\n      if (mobileDrawer) {\n        mobileDrawer.style.display = 'flex';\n        mobileDrawer.style.visibility = 'visible';\n        mobileDrawer.style.pointerEvents = 'auto';\n        setTimeout(function() {\n          mobileDrawer.classList.add('is-open');\n          mobileDrawer.style.transform = 'translateX(0)';\n        }, 10);\n      }\n      if (mobileOverlay) {\n        mobileOverlay.style.display = 'block';\n        mobileOverlay.style.visibility = 'visible';\n        mobileOverlay.style.pointerEvents = 'auto';\n        setTimeout(function() {\n          mobileOverlay.classList.add('is-active');\n          mobileOverlay.style.opacity = '1';\n        }, 10);\n      }\n      lockDocumentScroll();\n    };\n\n    window.closeMobileDrawer = function closeMobileDrawer() {\n      var mobileDrawer = document.getElementById(\"zt-mobile-drawer\");\n      var mobileOverlay = document.getElementById(\"zt-mobile-overlay\");\n      if (mobileDrawer) {\n        mobileDrawer.classList.remove('is-open');\n        mobileDrawer.style.transform = 'translateX(100%)';\n        setTimeout(function() {\n          if (!mobileDrawer.classList.contains('is-open')) {\n            mobileDrawer.style.display = 'none';\n            mobileDrawer.style.visibility = 'hidden';\n            mobileDrawer.style.pointerEvents = 'none';\n          }\n        }, 300);\n      }\n      if (mobileOverlay) {\n        mobileOverlay.classList.remove('is-active');\n        mobileOverlay.style.opacity = '0';\n        setTimeout(function() {\n          if (!mobileOverlay.classList.contains('is-active')) {\n            mobileOverlay.style.display = 'none';\n            mobileOverlay.style.visibility = 'hidden';\n            mobileOverlay.style.pointerEvents = 'none';\n          }\n        }, 300);\n      }\n      unlockDocumentScroll(true);\n    };\n\n    if (mobileToggle) mobileToggle.addEventListener('click', window.openMobileDrawer);\n    if (mobileClose) mobileClose.addEventListener('click', window.closeMobileDrawer);\n    if (mobileOverlay) mobileOverlay.addEventListener('click', window.closeMobileDrawer);\n\n    \/\/ Mobile Drawer Interactions (Accordion & Link Handling)\n    if (mobileDrawer) {\n      mobileDrawer.addEventListener('click', function(e) {\n        var header = e.target.closest('.zt-drawer-acc-header');\n        if (header) {\n          e.preventDefault();\n          e.stopPropagation();\n          var targetKey = header.getAttribute('data-target');\n          if (window.ztToggleDrawerAccordion) {\n            window.ztToggleDrawerAccordion(targetKey, e);\n          }\n          return;\n        }\n\n        var link = e.target.closest('a');\n        if (link && window.closeMobileDrawer) {\n          window.closeMobileDrawer();\n        }\n      });\n    }\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initHeaderSystem);\n  } else {\n    initHeaderSystem();\n  }\n  window.addEventListener('load', initHeaderSystem);\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-zt_cmp_body elementor-widget elementor-widget-html\" data-id=\"zt_cmp_body\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- MASTER REAL PRODUCT COMPARISON WORKSPACE (POST 1172) -->\n<div id=\"zt-compare-page\" style=\"width: 100%; background-color: #FFFFFF; font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; box-sizing: border-box; margin: 0; padding: 0;\">\n\n  <!-- 01 \u2014 HERO SECTION (80px Top Padding below fixed header) -->\n  <div id=\"sec-compare-hero\" style=\"width: 100%; padding: 5rem 0 3rem 0; background-color: #FFFFFF; border-bottom: 1px solid #E2E8F0; box-sizing: border-box; text-align: center;\">\n    <div style=\"max-width: 1440px; margin: 0 auto; padding: 0 2.5rem; display: flex; flex-direction: column; align-items: center; gap: 0.85rem; box-sizing: border-box;\">\n      \n      <span style=\"font-size: 0.75rem; font-weight: 800; color: #059669; letter-spacing: 0.14em; text-transform: uppercase;\">\n        PRODUCT COMPARISON WORKSPACE\n      <\/span>\n\n      <h1 style=\"font-size: 3.2rem; font-weight: 800; color: #0F172A; letter-spacing: -0.035em; line-height: 1.1; margin: 0;\">\n        Compare Zoom Tech Products\n      <\/h1>\n\n      <p style=\"font-size: 1.15rem; line-height: 1.6; color: #64748B; margin: 0; max-width: 780px; font-weight: 400;\">\n        Select up to three products from our catalogue to evaluate specifications, flow throughput, physical dimensions, and electrical requirements side by side.\n      <\/p>\n\n    <\/div>\n  <\/div>\n\n  <!-- 02 \u2014 DYNAMIC COMPARISON WORKSPACE CONTAINER -->\n  <div id=\"sec-compare-dynamic-area\" style=\"width: 100%; padding: 4.5rem 0 5.5rem 0; background-color: #F8FAFC; border-bottom: 1px solid #E2E8F0; box-sizing: border-box;\">\n    <div style=\"max-width: 1440px; margin: 0 auto; padding: 0 2.5rem; width: 100%; box-sizing: border-box;\">\n      \n      <div id=\"zt-compare-dynamic-root\">\n        <!-- Rendered by window.ZoomTechCompare.renderWorkspace -->\n      <\/div>\n\n    <\/div>\n  <\/div>\n\n  <!-- 03 \u2014 LOWER CANONICAL CONSULTATION CTA -->\n  <div id=\"sec-compare-cta\" style=\"width: 100%; padding: 5rem 0 5.5rem 0; background-color: #FFFFFF; color: #0F172A; box-sizing: border-box; text-align: center; border-bottom: 1px solid #E2E8F0;\">\n    <div style=\"max-width: 1440px; margin: 0 auto; padding: 0 2.5rem; width: 100%; box-sizing: border-box; display: flex; flex-direction: column; align-items: center;\">\n      <div style=\"max-width: 760px; display: flex; flex-direction: column; align-items: center; gap: 1rem;\">\n        <span style=\"font-size: 0.75rem; font-weight: 800; color: #059669; letter-spacing: 0.12em; text-transform: uppercase;\">CONSULT OUR ENGINEERS<\/span>\n        <h2 style=\"font-size: 2.35rem; font-weight: 800; color: #0F172A; letter-spacing: -0.025em; margin: 0; line-height: 1.15;\">\n          PLAN YOUR ACCESS CONTROL SYSTEM\n        <\/h2>\n        <p style=\"font-size: 1.05rem; line-height: 1.6; color: #475569; margin: 0; max-width: 620px;\">\n          Speak with the Zoom Tech engineering team about your access-control requirements, controller configurations, and custom site entrance layouts.\n        <\/p>\n        <div style=\"margin-top: 0.5rem;\">\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/\" class=\"zt-btn-prod-primary\" style=\"text-decoration: none; font-family: Inter, sans-serif; background-color: #059669; color: #FFFFFF; font-weight: 700; font-size: 0.95rem; padding: 0.85rem 2.25rem; border-radius: 9999px; transition: background-color 0.18s ease; display: inline-flex; align-items: center; gap: 6px;\">\n            <span>Talk to us<\/span> &rarr;\n          <\/a>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n<\/div>\n\n<script>\n(function() {\n  'use strict';\n\n  var STORAGE_KEY = 'zoomtech_compare_products';\n  var LEGACY_KEY = 'zoomtech_compare_items';\n  var MAX_ITEMS = 3;\n  var MIN_ITEMS = 2;\n\n  var PRODUCTS_DB = {\"tp-md-02-a\": {\"id\": 1315, \"slug\": \"tp-md-02-a\", \"title\": \"TP-MD-02-A Tripod Turnstile\", \"model_code\": \"TP-MD-02-A\", \"family\": \"TRI\", \"family_label\": \"TRIPOD TURNSTILE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/tri-tripod-system\/\", \"tagline\": \"Semi-automatic heavy-duty stainless steel tripod turnstile.\", \"description\": \"Compact 3-arm mechanical tripod turnstile delivering reliable crowd management and fare collection. Features precision indexing mechanisms, automatic anti-drop emergency egress, and robust SUS304 construction.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-tp-md-02-a-hero-render.png\", \"stats\": [\"3-Arm Rotor Mechanism\", \"550mm Passage Width\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Reliable 3-Arm Rotor\", \"desc\": \"Precision mechanical indexing mechanism ensuring single-person rotation per validation.\"}, {\"title\": \"Anti-Drop Emergency\", \"desc\": \"Automatic drop-arm function on power cut or fire alarm for rapid egress.\"}, {\"title\": \"High-Volume Durability\", \"desc\": \"Heavy-gauge SUS304 stainless steel housing rated for intensive transit and fitness use.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1200mm * W280mm * H980mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Tripod Arms\", \"SUS304 Stainless Steel Tubes (3 Arms)\"], [\"Walkway Width\", \"550mm\"], [\"Operating Supply\", \"AC 100 ~ 240V, 50\/60Hz\"], [\"Power Consumption\", \"60W\"], [\"Mechanism Drive\", \"Semi-Automatic Solenoid Mechanism\"], [\"Passing Speed\", \"25 \\u2013 30 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact\"], [\"Cabinet Weight\", \"48 kg\"], [\"MTBF Reliability\", \"5 Million Cycles\"], [\"IP Protection Level\", \"IP44 (Indoor \/ Sheltered)\"]], \"has_configuration\": false, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asd-sa-01\": {\"id\": 1314, \"slug\": \"asd-sa-01\", \"title\": \"ASD-SA-01 Drop Arm Barrier\", \"model_code\": \"ASD-SA-01\", \"family\": \"SPEED\", \"family_label\": \"DROP ARM BARRIER\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/speed-swing-gate-system\/\", \"tagline\": \"Motorized drop arm pedestrian barrier for rapid clearance.\", \"description\": \"High-velocity drop arm turnstile engineered for fast, unobstructed passage in transit stations and corporate foyers. Features motorized arm drop and optical sensing.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asd-sa-01-hero-render.png\", \"stats\": [\"0.5 \\u2013 0.8s Actuation\", \"30\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Motorized Drop Arm\", \"desc\": \"Fast-acting drop arm delivering rapid unobstructed pedestrian clearance.\"}, {\"title\": \"Obstacle Detection\", \"desc\": \"Immediate mechanism disengagement when resistance or obstacles are detected.\"}, {\"title\": \"Emergency Drop\", \"desc\": \"Arm automatically drops upon fire alarm signal for immediate egress.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1200mm * W200mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Arm\", \"Motorized Drop Arm (Stainless Steel \/ Rubber)\"], [\"Walkway Width\", \"550mm \\u2013 650mm\"], [\"Operating Supply\", \"AC230V 50Hz\"], [\"Operating Current\", \"Typical 0.5A, Inrush 1.5A\"], [\"Mechanism Drive\", \"Motorized Drop Arm Actuator\"], [\"Passing Speed\", \"30 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Relay Contact\"], [\"Cabinet Weight\", \"42 kg\"], [\"MTBF Reliability\", \"10 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"ASW-AR-09\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-09-hero-render.png\", \"slug\": \"asw-ar-09\"}, {\"code\": \"ASW-AR-13\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-13-hero-render.png\", \"slug\": \"asw-ar-13\"}, {\"code\": \"ASW-AR-21\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-21-hero-render.png\", \"slug\": \"asw-ar-21\"}]}, \"afh-ar-01\": {\"id\": 1313, \"slug\": \"afh-ar-01\", \"title\": \"AFH-AR-01 Flap Barrier\", \"model_code\": \"AFH-AR-01\", \"family\": \"WING\", \"family_label\": \"FLAP BARRIER\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/wing-flap-gate-system\/\", \"tagline\": \"High-speed retractable acrylic flap barrier.\", \"description\": \"Fast-opening retractable flap barrier engineered for intensive public transit, railway stations, and high-volume commercial entrances. Features rapid 0.3s wing actuation and anti-pinch optical sensors.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-afh-ar-01-hero-render.png\", \"stats\": [\"Fast 0.3s Opening\", \"600mm \/ 900mm Lane\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Rapid 0.3s Opening\", \"desc\": \"Fast wing retraction cycle for rapid and intuitive mass pedestrian flow.\"}, {\"title\": \"Anti-Pinch Protection\", \"desc\": \"8 pairs of infrared optical sensors preventing barrier closure on obstacles.\"}, {\"title\": \"Emergency Auto-Open\", \"desc\": \"Immediate automatic flap retraction upon fire alarm trigger or power interruption.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1500mm * W350mm * H1007mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Flap Wing Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm (Standard) \/ 900mm (Handicap)\"], [\"Operating Supply\", \"AC 100 ~ 120V \/ 200 ~ 240V, 50\/60Hz\"], [\"Power Consumption\", \"100W \\u2013 200W\"], [\"Motor Drive Mechanism\", \"High-Speed Servo Motor\"], [\"Passing Speed\", \"25 \\u2013 30 people \/ min\"], [\"Communication Interface\", \"RS485\"], [\"Cabinet Weight\", \"Single: 57 kg \/ Dual: 68 kg\"], [\"MTBF Reliability\", \"10 Million Cycles\"], [\"IP Protection Level\", \"IP42 (Indoor \/ Sheltered Outdoor)\"]], \"has_configuration\": false, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-23\": {\"id\": 1311, \"slug\": \"asw-ar-23\", \"title\": \"ASW-AR-23 Optical Swing Gate\", \"model_code\": \"ASW-AR-23\", \"family\": \"SWING\", \"family_label\": \"OPTICAL SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Precision optical swing gate with brushed stainless steel finish.\", \"description\": \"Engineered for reliable pedestrian flow in corporate and industrial reception areas. Features DC servo motor drive, safety optical sensors, and wide-lane options.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-23-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Durable Housing\", \"desc\": \"1.5mm thick SUS304 stainless steel chassis with brushed hairline finish.\"}, {\"title\": \"Intelligent Drive\", \"desc\": \"Microprocessor-controlled servo motor providing smooth, repeatable motion.\"}, {\"title\": \"Safety Arrays\", \"desc\": \"Optical sensing preventing panel closure during pedestrian passage.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W150mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"100W \\u2013 240W\"], [\"Motor Drive Mechanism\", \"DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Relay\"], [\"Cabinet Weight\", \"58 kg\"], [\"MTBF Reliability\", \"12 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-24\": {\"id\": 1312, \"slug\": \"asw-ar-24\", \"title\": \"ASW-AR-24 Optical Swing Gate\", \"model_code\": \"ASW-AR-24\", \"family\": \"SWING\", \"family_label\": \"OPTICAL SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Versatile optical swing gate engineered for architectural entrances.\", \"description\": \"Commercial-grade pedestrian barrier gate providing secure, automated admission. Equipped with optical anti-tailgating sensors, status LEDs, and emergency fail-safe release.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-24-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Architectural Design\", \"desc\": \"Clean chamfered chassis profile complementing modern commercial architecture.\"}, {\"title\": \"Safety Interlocking\", \"desc\": \"Multi-beam optical grid preventing accidental closure on trailing users.\"}, {\"title\": \"Emergency Mode\", \"desc\": \"Automatic free rotation or open positioning during power outages.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W150mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"100W \\u2013 240W\"], [\"Motor Drive Mechanism\", \"DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Relay\"], [\"Cabinet Weight\", \"58 kg\"], [\"MTBF Reliability\", \"12 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-22\": {\"id\": 1310, \"slug\": \"asw-ar-22\", \"title\": \"ASW-AR-22 Optical Swing Gate\", \"model_code\": \"ASW-AR-22\", \"family\": \"SWING\", \"family_label\": \"OPTICAL SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Standard optical swing barrier for commercial and institutional facilities.\", \"description\": \"Reliable pedestrian access control gate featuring brushed SUS304 chassis, acrylic wings, and comprehensive multi-sensor safety arrays for secure single-person validation.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-22-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Robust Reliability\", \"desc\": \"Tested for over 12 million MTBF cycles with low maintenance requirements.\"}, {\"title\": \"Passage Lighting\", \"desc\": \"Integrated status lighting on top lid and barrier wings for intuitive user flow.\"}, {\"title\": \"Access Integration\", \"desc\": \"Compatible with RFID cards, QR codes, and biometric credentials.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W150mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"100W \\u2013 240W\"], [\"Motor Drive Mechanism\", \"DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Relay\"], [\"Cabinet Weight\", \"60 kg\"], [\"MTBF Reliability\", \"12 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-21\": {\"id\": 1309, \"slug\": \"asw-ar-21\", \"title\": \"ASW-AR-21 Speed Swing Gate\", \"model_code\": \"ASW-AR-21\", \"family\": \"SPEED\", \"family_label\": \"SPEED SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/speed-swing-gate-system\/\", \"tagline\": \"High-speed motorized barrier with aerodynamic wing styling.\", \"description\": \"Engineered for high-volume pedestrian access with throughput up to 50 persons per minute. Features high-velocity brushless servo drive and emergency fail-safe opening.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-21-hero-render.png\", \"stats\": [\"Up to 50 Persons\/Min\", \"600mm \/ 900mm Lane\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Max Throughput\", \"desc\": \"Engineered for up to 50 persons per minute in high-traffic commercial buildings.\"}, {\"title\": \"Anti-Collision Wing\", \"desc\": \"Impact-absorbing acrylic barrier panel with automated obstruction rebound.\"}, {\"title\": \"Fire Alarm Linkage\", \"desc\": \"Immediate automatic wing opening upon dry contact fire alarm trigger.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W160mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Barrier Panel Material\", \"High-Speed Barrier Wing (Acrylic)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC230V 50Hz\"], [\"Power Consumption\", \"120W \\u2013 260W\"], [\"Motor Drive Mechanism\", \"High-Speed Brushless Servo\"], [\"Passing Speed\", \"40 \\u2013 50 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Relay\"], [\"Cabinet Weight\", \"62 kg\"], [\"MTBF Reliability\", \"15 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"ASW-AR-09\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-09-hero-render.png\", \"slug\": \"asw-ar-09\"}, {\"code\": \"ASW-AR-13\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-13-hero-render.png\", \"slug\": \"asw-ar-13\"}, {\"code\": \"ASD-SA-01\", \"category\": \"DROP ARM BARRIER\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asd-sa-01-hero-render.png\", \"slug\": \"asd-sa-01\"}]}, \"asw-ar-17\": {\"id\": 1308, \"slug\": \"asw-ar-17\", \"title\": \"ASW-AR-17 Optical Swing Gate\", \"model_code\": \"ASW-AR-17\", \"family\": \"SWING\", \"family_label\": \"OPTICAL SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Compact 120mm ultra-slim optical swing gate system.\", \"description\": \"Ultra-compact 120mm width chassis engineered for tight lobby spaces without sacrificing passage clearance. Equipped with DC servo motor and multi-point safety beams.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-17-hero-render.png\", \"stats\": [\"120mm Ultra-Slim\", \"35\\u201345 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Ultra-Slim 120mm\", \"desc\": \"Our narrowest swing gate chassis, ideal for space-critical entrances.\"}, {\"title\": \"DDA Accessibility\", \"desc\": \"Supports 900mm wide lane configuration for wheelchair and luggage passage.\"}, {\"title\": \"Precision Sensors\", \"desc\": \"High-density infrared sensing grid detecting unauthorized intrusion.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W120mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"90W \\u2013 220W\"], [\"Motor Drive Mechanism\", \"Precision DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 45 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Level Pulse\"], [\"Cabinet Weight\", \"52 kg\"], [\"MTBF Reliability\", \"15 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-15\": {\"id\": 1307, \"slug\": \"asw-ar-15\", \"title\": \"ASW-AR-15 Swing Gate\", \"model_code\": \"ASW-AR-15\", \"family\": \"SWING\", \"family_label\": \"SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Architectural swing gate combining slender lines with robust access control.\", \"description\": \"Slender 150mm chassis profile optical swing gate crafted from brushed stainless steel. Engineered for corporate entrances requiring refined aesthetics and strict access policies.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-15-hero-render.png\", \"stats\": [\"150mm Slim Chassis\", \"35\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Slender Footprint\", \"desc\": \"150mm narrow chassis maximising lane count in space-constrained lobby foyers.\"}, {\"title\": \"Smooth Acceleration\", \"desc\": \"Programmable servo curve providing soft-start and soft-stop wing motion.\"}, {\"title\": \"Biometric Compatibility\", \"desc\": \"Seamless mounting column for ZoomFace facial recognition terminals.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W150mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Panel Material\", \"Acrylic \/ Tempered Glass\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"100W \\u2013 200W\"], [\"Motor Drive Mechanism\", \"DC Brushless Motor\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ IO\"], [\"Cabinet Weight\", \"58 kg\"], [\"MTBF Reliability\", \"12 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-11\": {\"id\": 1305, \"slug\": \"asw-ar-11\", \"title\": \"ASW-AR-11 Swing Gate\", \"model_code\": \"ASW-AR-11\", \"family\": \"SWING\", \"family_label\": \"SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Sleek optical swing gate with intuitive LED status lighting.\", \"description\": \"Modern optical barrier gate engineered for corporate lobbies and commercial office buildings. Features smooth servo motor drive, acrylic wings, and bi-directional passage.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-11-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"LED Guidance\", \"desc\": \"Integrated directional LED indicators providing clear visual status to pedestrians.\"}, {\"title\": \"Quiet Servo Drive\", \"desc\": \"Precision DC brushless motor for whisper-quiet continuous operation.\"}, {\"title\": \"Modular Integration\", \"desc\": \"Pre-configured reader mounting channels for RFID and facial recognition.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1200mm * W180mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"100W \\u2013 220W\"], [\"Motor Drive Mechanism\", \"Brushless DC Servo\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact\"], [\"Cabinet Weight\", \"55 kg\"], [\"MTBF Reliability\", \"12 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"asw-ar-13\": {\"id\": 1306, \"slug\": \"asw-ar-13\", \"title\": \"ASW-AR-13 Speed Swing Gate\", \"model_code\": \"ASW-AR-13\", \"family\": \"SPEED\", \"family_label\": \"SPEED SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/speed-swing-gate-system\/\", \"tagline\": \"Speed swing barrier engineered for rapid multi-lane configurations.\", \"description\": \"High-flow motorized barrier system designed for large commercial headquarters and transit access points. Delivers high throughput with integrated anti-tailgating sensing.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-13-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"40\\u201345 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Multi-Lane Modularity\", \"desc\": \"Modular intermediate chassis design allowing infinite side-by-side lane arrays.\"}, {\"title\": \"High Velocity\", \"desc\": \"Fast opening and closing response times to prevent corridor bottlenecking.\"}, {\"title\": \"Tailgating Defense\", \"desc\": \"Sophisticated optical beam array detecting unauthorized trailing entries.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W180mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Barrier Panel Material\", \"Speed Wing Barrier (Acrylic)\"], [\"Walkway Width\", \"600mm \\u2013 900mm\"], [\"Operating Supply\", \"AC220V 50Hz\"], [\"Power Consumption\", \"120W \\u2013 250W\"], [\"Motor Drive Mechanism\", \"High-Speed Servo Motor\"], [\"Passing Speed\", \"40 \\u2013 45 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact\"], [\"Cabinet Weight\", \"65 kg\"], [\"MTBF Reliability\", \"15 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"ASW-AR-09\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-09-hero-render.png\", \"slug\": \"asw-ar-09\"}, {\"code\": \"ASW-AR-21\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-21-hero-render.png\", \"slug\": \"asw-ar-21\"}, {\"code\": \"ASD-SA-01\", \"category\": \"DROP ARM BARRIER\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asd-sa-01-hero-render.png\", \"slug\": \"asd-sa-01\"}]}, \"asw-ar-09\": {\"id\": 1304, \"slug\": \"asw-ar-09\", \"title\": \"ASW-AR-09 Speed Swing Gate\", \"model_code\": \"ASW-AR-09\", \"family\": \"SPEED\", \"family_label\": \"SPEED SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/speed-swing-gate-system\/\", \"tagline\": \"High-velocity motorized speed swing gate for intense traffic.\", \"description\": \"Engineered for rapid pedestrian flow with 0.5s actuation cycle time. Features cylindrical column chassis, optical safety grid, and motorized fail-safe emergency disengagement.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-09-hero-render.png\", \"stats\": [\"0.5 \\u2013 0.8s Cycle\", \"35\\u201345 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Fast Actuation\", \"desc\": \"Rapid 0.5s cycle time delivering maximum pedestrian throughput during peak hours.\"}, {\"title\": \"Obstruction Disengagement\", \"desc\": \"Automatic mechanism release upon contact resistance for primary user safety.\"}, {\"title\": \"Emergency Auto-Open\", \"desc\": \"Fail-safe motorized release ensuring unobstructed egress during alarms.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1200mm * W200mm * H1000mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Barrier Panel Material\", \"Speed Swing Arm (Acrylic \/ Glass)\"], [\"Walkway Width\", \"550mm \\u2013 650mm\"], [\"Operating Supply\", \"AC230V 50Hz\"], [\"Operating Current (Rated)\", \"Typical 0.5A, Inrush 1.5A\"], [\"Motor Drive Mechanism\", \"High-Velocity Brushless Servo\"], [\"Passing Speed\", \"35 \\u2013 45 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact Relay\"], [\"Cabinet Weight\", \"45 kg\"], [\"MTBF Reliability\", \"10 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"ASW-AR-13\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-13-hero-render.png\", \"slug\": \"asw-ar-13\"}, {\"code\": \"ASW-AR-21\", \"category\": \"SPEED SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-21-hero-render.png\", \"slug\": \"asw-ar-21\"}, {\"code\": \"ASD-SA-01\", \"category\": \"DROP ARM BARRIER\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asd-sa-01-hero-render.png\", \"slug\": \"asd-sa-01\"}]}, \"sg-ah-01\": {\"id\": 1303, \"slug\": \"sg-ah-01\", \"title\": \"SG-AH-01 Full Height Swing Gate\", \"model_code\": \"SG-AH-01\", \"family\": \"SWING\", \"family_label\": \"FULL HEIGHT SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Full-height glass barrier swing gate for secure architectural perimeters.\", \"description\": \"High-security swing barrier featuring 1500mm full-height tempered glass panels to prevent vaulting. Engineered with heavy-duty servo actuation and multi-zone optical safety sensing.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ah-01-hero-render.png\", \"stats\": [\"1500mm Glass Panel\", \"30\\u201335 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Anti-Climb Barrier\", \"desc\": \"1500mm full-height glass panels preventing vaulting and physical boundary breaches.\"}, {\"title\": \"Heavy-Duty Drive\", \"desc\": \"Reinforced brushless servo motor drive built for high-mass glass panels.\"}, {\"title\": \"Optical Safety\", \"desc\": \"Multi-zone infrared sensing arrays ensuring safe passage clearance.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W180mm * H1500mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Barrier Panel Material\", \"Full Height Tempered Glass (12mm)\"], [\"Walkway Width\", \"600mm \/ 900mm (Wide passage)\"], [\"Operating Supply\", \"AC220V\\u00b110% 50Hz\"], [\"Power Consumption\", \"150W \\u2013 350W\"], [\"Motor Drive Mechanism\", \"Heavy-Duty Brushless Servo\"], [\"Passing Speed\", \"30 \\u2013 35 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact\"], [\"Cabinet Weight\", \"Single: 85 kg \/ Dual: 105 kg\"], [\"MTBF Reliability\", \"15 Million Cycles\"], [\"IP Protection Level\", \"IP54\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}]}, \"ft-fm-90\": {\"id\": 1302, \"slug\": \"ft-fm-90\", \"title\": \"FT-FM-90 Full Height Turnstile\", \"model_code\": \"FT-FM-90\", \"family\": \"MAX\", \"family_label\": \"FULL HEIGHT TURNSTILE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/max-turnstile-gate-system\/\", \"tagline\": \"4-arm 90\\u00b0 full-height perimeter security turnstile.\", \"description\": \"Maximum-security full-height turnstile with 90\\u00b0 4-arm rotor mechanism for tighter compartment indexing. Engineered for prison perimeters, military bases, and high-security infrastructure.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-90-hero-render.png\", \"stats\": [\"90\\u00b0 4-Arm Rotor\", \"Full Height 2350mm\", \"278 kg Heavy-Duty\"], \"features\": [{\"title\": \"90\\u00b0 Tighter Indexing\", \"desc\": \"4-arm 90\\u00b0 quadrant design maximizing single-person separation security.\"}, {\"title\": \"Heavy-Duty 278kg\", \"desc\": \"Reinforced structural chassis providing maximum resistance to forced entry.\"}, {\"title\": \"Outdoor Waterproof\", \"desc\": \"IP65-rated sealed mechanism and enclosure for demanding outdoor locations.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1530mm * W1310mm * H2350mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (2.0mm)\"], [\"Rotor Structure\", \"Full Height 4-Arm Rotor (90\\u00b0 Indexing)\"], [\"Walkway Width\", \"670mm\"], [\"Operating Supply\", \"AC 230V AC, 50\/60Hz\"], [\"Power Consumption\", \"70VA\"], [\"Mechanism Drive\", \"Heavy-Duty 90\\u00b0 Indexing Mechanism\"], [\"Passing Speed\", \"20 \\u2013 25 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact\"], [\"Cabinet Weight\", \"278 kg\"], [\"MTBF Reliability\", \"10 Million Cycles\"], [\"IP Protection Level\", \"IP65 (Outdoor Waterproof)\"]], \"has_configuration\": false, \"related_products\": [{\"code\": \"FT-FM-02\", \"category\": \"FULL HEIGHT TURNSTILE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-02-hero-render.png\", \"slug\": \"ft-fm-02\"}, {\"code\": \"FT-FM-02-B\", \"category\": \"FULL HEIGHT TURNSTILE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-02-b-hero-render.png\", \"slug\": \"ft-fm-02-b\"}, {\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}]}, \"ft-fm-02-b\": {\"id\": 1301, \"slug\": \"ft-fm-02-b\", \"title\": \"FT-FM-02-B Full Height Turnstile\", \"model_code\": \"FT-FM-02-B\", \"family\": \"MAX\", \"family_label\": \"FULL HEIGHT TURNSTILE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/max-turnstile-gate-system\/\", \"tagline\": \"Full-height turnstile with integrated weather protection canopy.\", \"description\": \"Outdoor perimeter security turnstile featuring a built-in protective canopy and 120\\u00b0 3-arm rotor. Engineered for all-weather outdoor checkpoints and industrial gates.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-02-b-hero-render.png\", \"stats\": [\"Integrated Canopy\", \"120\\u00b0 3-Arm Rotor\", \"SUS304 Waterproof IP65\"], \"features\": [{\"title\": \"All-Weather Canopy\", \"desc\": \"Integrated overhead rain canopy protecting electronics and users.\"}, {\"title\": \"Anti-Tailgating 120\\u00b0\", \"desc\": \"Precision mechanical indexing allowing exactly one person per rotation.\"}, {\"title\": \"Corrosion Resistant\", \"desc\": \"Marine-grade SUS304 stainless steel construction for harsh environments.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1630mm * W1500mm * H2310mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (2.0mm)\"], [\"Rotor Structure\", \"Full Height 3-Arm Rotor (120\\u00b0) with Canopy\"], [\"Walkway Width\", \"650mm\"], [\"Operating Supply\", \"AC 100 ~ 240V, 50\/60Hz\"], [\"Power Consumption\", \"60W\"], [\"Mechanism Drive\", \"Semi-Automatic Solenoid \/ Motor\"], [\"Passing Speed\", \"25 \\u2013 30 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact Relay\"], [\"Cabinet Weight\", \"195 kg\"], [\"MTBF Reliability\", \"10 Million Cycles\"], [\"IP Protection Level\", \"IP65 (Outdoor Waterproof)\"]], \"has_configuration\": false, \"related_products\": [{\"code\": \"FT-FM-02\", \"category\": \"FULL HEIGHT TURNSTILE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-02-hero-render.png\", \"slug\": \"ft-fm-02\"}, {\"code\": \"FT-FM-90\", \"category\": \"FULL HEIGHT TURNSTILE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-90-hero-render.png\", \"slug\": \"ft-fm-90\"}, {\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}]}, \"ft-fm-02\": {\"id\": 1300, \"slug\": \"ft-fm-02\", \"title\": \"FT-FM-02 Full Height Turnstile\", \"model_code\": \"FT-FM-02\", \"family\": \"MAX\", \"family_label\": \"FULL HEIGHT TURNSTILE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/max-turnstile-gate-system\/\", \"tagline\": \"Full-height perimeter turnstile engineered for maximum boundary defense.\", \"description\": \"Heavy-duty 120\\u00b0 3-arm full-height security turnstile engineered for industrial perimeters, construction sites, and data centres. Provides strict single-person anti-tailgating control.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-02-hero-render.png\", \"stats\": [\"Full Height 2310mm\", \"120\\u00b0 3-Arm Rotor\", \"SUS304 Waterproof IP65\"], \"features\": [{\"title\": \"Perimeter Protection\", \"desc\": \"Full-height physical rotor barrier preventing climbing and unauthorized entry.\"}, {\"title\": \"Heavy-Duty Durability\", \"desc\": \"2.0mm SUS304 stainless steel housing engineered for outdoor environments.\"}, {\"title\": \"10M MTBF Reliability\", \"desc\": \"Heavy-duty mechanism tested to 10 million cycles for non-stop operation.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1630mm * W1500mm * H2310mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (2.0mm)\"], [\"Rotor Structure\", \"Full Height 3-Arm Rotor (120\\u00b0)\"], [\"Walkway Width\", \"650mm\"], [\"Operating Supply\", \"AC 100 ~ 240V, 50\/60Hz\"], [\"Power Consumption\", \"60W\"], [\"Mechanism Drive\", \"Semi-Automatic Solenoid \/ Motor\"], [\"Passing Speed\", \"25 \\u2013 30 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Dry Contact Relay\"], [\"Cabinet Weight\", \"180 kg\"], [\"MTBF Reliability\", \"10 Million Cycles\"], [\"IP Protection Level\", \"IP65 (Outdoor Waterproof)\"]], \"has_configuration\": false, \"related_products\": [{\"code\": \"FT-FM-02-B\", \"category\": \"FULL HEIGHT TURNSTILE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-02-b-hero-render.png\", \"slug\": \"ft-fm-02-b\"}, {\"code\": \"FT-FM-90\", \"category\": \"FULL HEIGHT TURNSTILE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-ft-fm-90-hero-render.png\", \"slug\": \"ft-fm-90\"}, {\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}]}, \"asw-ar-18\": {\"id\": 1258, \"slug\": \"asw-ar-18\", \"title\": \"ASW-AR-18 Optical Swing Gate\", \"model_code\": \"ASW-AR-18\", \"family\": \"SWING\", \"family_label\": \"OPTICAL SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Seamless movement powered by advanced security technology.\", \"description\": \"Ultra-slim cast aluminium alloy optical swing gate delivering high-velocity motorized passage. Features fast opening response, integrated status guidance, and multi-protocol biometric connectivity.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201345 Persons \/ Min\", \"Cast Aluminium Alloy\"], \"features\": [{\"title\": \"Ultra-Slim Form\", \"desc\": \"Minimalist cast aluminium alloy chassis with space-efficient footprint.\"}, {\"title\": \"Rapid Actuation\", \"desc\": \"High-speed servo drive supporting up to 45 persons per minute throughput.\"}, {\"title\": \"Anti-Tailgating\", \"desc\": \"Precision multi-point optical beams detecting and preventing unauthorized tailgating.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1500mm * W110mm * H990mm\"], [\"Cabinet Material\", \"Cast Aluminium Alloy & SUS304\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm (Standard) \/ 900mm (Wide)\"], [\"Operating Supply\", \"AC220V\\u00b110% 50Hz\"], [\"Power Consumption\", \"70W \\u2013 300W\"], [\"Motor Drive Mechanism\", \"Brushless DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 45 people \/ min\"], [\"Communication Interface\", \"RS485 \/ RS232 \/ IO\"], [\"Cabinet Weight\", \"Single: 65 kg \/ Dual: 72 kg\"], [\"MTBF Reliability\", \"15 Million Cycles\"], [\"IP Protection Level\", \"IP54 (Indoor)\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"SG-AH-01\", \"category\": \"FULL HEIGHT SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ah-01-hero-render.png\", \"slug\": \"sg-ah-01\"}]}, \"sg-ar-02\": {\"id\": 1257, \"slug\": \"sg-ar-02\", \"title\": \"SG-AR-02 Swing Gate\", \"model_code\": \"SG-AR-02\", \"family\": \"SWING\", \"family_label\": \"SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Architectural swing barrier with streamlined chassis profile.\", \"description\": \"High-durability optical swing barrier crafted from SUS304 stainless steel with hairline finish. Features bi-directional servo motor drive, integrated LED guidance strips, and anti-tailgating optical sensors.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201340 Persons \/ Min\", \"SUS304 Stainless Steel\"], \"features\": [{\"title\": \"Architectural Elegance\", \"desc\": \"Streamlined brushed stainless steel housing designed for premium corporate lobbies.\"}, {\"title\": \"Bi-Directional Passage\", \"desc\": \"Fast, smooth wing actuation supporting high-density traffic flow.\"}, {\"title\": \"Safety Sensing\", \"desc\": \"Multi-beam optical safety arrays preventing panel closure on pedestrians.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L1400mm * W150mm * H1045mm\"], [\"Cabinet Material\", \"SUS304 Stainless Steel (1.5mm)\"], [\"Barrier Panel Material\", \"Tempered Glass \/ Acrylic (10mm)\"], [\"Walkway Width\", \"600mm (Standard) \/ 900mm (Wide)\"], [\"Operating Supply\", \"AC220V\\u00b110% 50Hz\"], [\"Power Consumption\", \"100W \\u2013 200W\"], [\"Motor Drive Mechanism\", \"Brushless DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"RS485 \/ Relay Contact\"], [\"Cabinet Weight\", \"Single: 60 kg \/ Dual: 75 kg\"], [\"MTBF Reliability\", \"15 Million Cycles\"], [\"IP Protection Level\", \"IP54 (Indoor \/ Sheltered)\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-01\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"slug\": \"sg-ar-01\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}, {\"code\": \"SG-AH-01\", \"category\": \"FULL HEIGHT SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ah-01-hero-render.png\", \"slug\": \"sg-ah-01\"}]}, \"sg-ar-01\": {\"id\": 1250, \"slug\": \"sg-ar-01\", \"title\": \"SG-AR-01 Swing Gate\", \"model_code\": \"SG-AR-01\", \"family\": \"SWING\", \"family_label\": \"SWING GATE\", \"family_url\": \"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\", \"tagline\": \"Where intelligent control meets elegant design.\", \"description\": \"Compact by design, powerful in performance. Engineered for high-throughput pedestrian access control with precision brushless servo motor drive, 6-pair optical sensor array, and dual passage width options for standard and accessibility clearance.\", \"hero_image\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-01-hero-render.png\", \"stats\": [\"600mm \/ 900mm Lane\", \"35\\u201340 Persons \/ Min\", \"SUS304 \/ Roll Steel\"], \"features\": [{\"title\": \"Sleek & Compact\", \"desc\": \"Fits seamlessly into any architectural entrance with compact chassis footprint.\"}, {\"title\": \"Silent Operation\", \"desc\": \"Smooth, noise-free DC servo motor drive engineered for continuous duty.\"}, {\"title\": \"Reliable Performance\", \"desc\": \"Tested to 20 million MTBF cycles with multi-signal interface compatibility.\"}], \"specs\": [[\"Cabinet Dimensions\", \"L260mm * W168mm * H1200mm\"], [\"Cabinet Material\", \"Roll steel powder coated \/ SUS304 optional\"], [\"Barrier Panel Material\", \"Acrylic (10mm)\"], [\"Walkway Width\", \"600mm (Standard) \/ 900mm (Handicap)\"], [\"Operating Supply\", \"AC220\\u00b110%V 50\\u00b110%Hz\"], [\"Power Consumption\", \"110W \\u2013 240W\"], [\"Motor Drive Mechanism\", \"DC Servo Motor\"], [\"Passing Speed\", \"35 \\u2013 40 people \/ min\"], [\"Communication Interface\", \"Level\/pulse, RS485, RS232\"], [\"Cabinet Weight\", \"Single: 35 kg \/ Dual: 42 kg\"], [\"MTBF Reliability\", \"20 Million Cycles\"], [\"IP Protection Level\", \"IP42 (Indoor)\"]], \"has_configuration\": true, \"related_products\": [{\"code\": \"SG-AR-02\", \"category\": \"SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ar-02-hero-render.png\", \"slug\": \"sg-ar-02\"}, {\"code\": \"ASW-AR-18\", \"category\": \"OPTICAL SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-asw-ar-18-hero-render.png\", \"slug\": \"asw-ar-18\"}, {\"code\": \"SG-AH-01\", \"category\": \"FULL HEIGHT SWING GATE\", \"img\": \"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-sg-ah-01-hero-render.png\", \"slug\": \"sg-ah-01\"}]}};\n\n  window.ZoomTechCompare = {\n    db: PRODUCTS_DB,\n    get: function() {\n      try {\n        var data = localStorage.getItem(STORAGE_KEY) || localStorage.getItem(LEGACY_KEY);\n        if (!data) return [];\n        var parsed = JSON.parse(data);\n        if (Array.isArray(parsed) && parsed.length > 0) {\n          var valid = [];\n          var activeCategory = null;\n\n          for (var i = 0; i < parsed.length; i++) {\n            var slug = (parsed[i] || '').toLowerCase().trim();\n            if (slug && valid.indexOf(slug) === -1 && PRODUCTS_DB[slug]) {\n              var prodCat = PRODUCTS_DB[slug].family;\n              \/\/ Enforce SAME-CATEGORY comparison at the storage retrieval level\n              if (!activeCategory) {\n                activeCategory = prodCat;\n                valid.push(slug);\n              } else if (prodCat === activeCategory) {\n                valid.push(slug);\n              }\n            }\n          }\n\n          var trimmed = valid.slice(0, MAX_ITEMS);\n          localStorage.setItem(STORAGE_KEY, JSON.stringify(trimmed));\n          localStorage.setItem(LEGACY_KEY, JSON.stringify(trimmed));\n          return trimmed;\n        }\n        return [];\n      } catch (e) {\n        return [];\n      }\n    },\n    getActiveCategory: function() {\n      var selected = this.get();\n      if (selected.length > 0 && PRODUCTS_DB[selected[0]]) {\n        return PRODUCTS_DB[selected[0]].family;\n      }\n      return null;\n    },\n    has: function(slug) {\n      if (!slug) return false;\n      return this.get().indexOf(slug.toLowerCase().trim()) !== -1;\n    },\n    toggle: function(slug) {\n      if (!slug) return;\n      if (this.has(slug)) {\n        this.remove(slug);\n      } else {\n        this.add(slug);\n      }\n    },\n    add: function(slug) {\n      if (!slug) return false;\n      slug = slug.toLowerCase().trim();\n      if (!PRODUCTS_DB[slug]) return false;\n\n      var list = this.get();\n      if (list.indexOf(slug) !== -1) return true;\n\n      \/\/ 1. Enforce Category Compatibility Check\n      if (list.length > 0) {\n        var activeCat = PRODUCTS_DB[list[0]].family;\n        var newCat = PRODUCTS_DB[slug].family;\n        if (activeCat !== newCat) {\n          this.showToast(\"Cannot mix categories. Active comparison is for \" + activeCat + \" family only. Clear comparison to compare \" + newCat + \".\");\n          return false;\n        }\n      }\n\n      \/\/ 2. Enforce Max Item Limit\n      if (list.length >= MAX_ITEMS) {\n        this.showToast(\"Compare limit reached (Max 3 products). Remove a model to add another.\");\n        return false;\n      }\n\n      list.push(slug);\n      try {\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(list));\n        localStorage.setItem(LEGACY_KEY, JSON.stringify(list));\n      } catch (e) {}\n      this.sync();\n      return true;\n    },\n    remove: function(slug) {\n      if (!slug) return;\n      slug = slug.toLowerCase().trim();\n      var list = this.get();\n      var next = list.filter(function(s) { return s !== slug; });\n      try {\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(next));\n        localStorage.setItem(LEGACY_KEY, JSON.stringify(next));\n      } catch (e) {}\n      this.sync();\n    },\n    clear: function() {\n      try {\n        localStorage.removeItem(STORAGE_KEY);\n        localStorage.removeItem(LEGACY_KEY);\n      } catch (e) {}\n      this.sync();\n    },\n    showToast: function(msg) {\n      var toast = document.getElementById('zt-compare-toast');\n      if (!toast) {\n        toast = document.createElement('div');\n        toast.id = 'zt-compare-toast';\n        toast.style.cssText = 'position: fixed; bottom: 96px; left: 50%; transform: translateX(-50%); background: #0F172A; color: #FFFFFF; padding: 12px 24px; border-radius: 9999px; font-size: 0.88rem; font-weight: 700; font-family: Inter, sans-serif; box-shadow: 0 10px 30px rgba(0,0,0,0.25); z-index: 999999; border: 1px solid rgba(255,255,255,0.15); display: flex; align-items: center; gap: 8px; transition: opacity 0.25s ease, transform 0.25s ease; opacity: 0; pointer-events: none;';\n        document.body.appendChild(toast);\n      }\n      toast.innerHTML = '<span style=\"color:#10B981;\">\u26a0<\/span> ' + msg;\n      toast.style.opacity = '1';\n      toast.style.transform = 'translateX(-50%) translateY(0)';\n      clearTimeout(window._ztToastTimer);\n      window._ztToastTimer = setTimeout(function() {\n        if (toast) {\n          toast.style.opacity = '0';\n          toast.style.transform = 'translateX(-50%) translateY(8px)';\n        }\n      }, 3400);\n    },\n    sync: function() {\n      var selected = this.get();\n      var isFull = selected.length >= MAX_ITEMS;\n      var activeCat = this.getActiveCategory();\n\n      \/\/ 1. Sync compare buttons across pages\n      var btns = document.querySelectorAll('.zt-compare-btn, [data-compare-slug]');\n      btns.forEach(function(btn) {\n        var slug = (btn.getAttribute('data-compare-slug') || '').toLowerCase().trim();\n        if (!slug || !PRODUCTS_DB[slug]) return;\n        var isAdded = selected.indexOf(slug) !== -1;\n        var prodCat = PRODUCTS_DB[slug].family;\n        var textSpan = btn.querySelector('.zt-compare-btn-text') || btn;\n        \n        if (isAdded) {\n          btn.classList.add('is-selected');\n          btn.classList.remove('is-disabled');\n          btn.setAttribute('aria-pressed', 'true');\n          btn.setAttribute('aria-label', 'Remove ' + slug.toUpperCase() + ' from comparison');\n          if (textSpan === btn) {\n            btn.innerHTML = '<span class=\"zt-compare-btn-icon\">\u2713<\/span> <span class=\"zt-compare-btn-text\">Added to Compare<\/span>';\n          } else {\n            textSpan.textContent = 'Added to Compare';\n            var icon = btn.querySelector('.zt-compare-btn-icon');\n            if (icon) icon.textContent = '\u2713';\n          }\n          btn.style.backgroundColor = '#ECFDF5';\n          btn.style.color = '#059669';\n          btn.style.borderColor = '#059669';\n          btn.style.opacity = '1';\n          btn.style.cursor = 'pointer';\n        } else {\n          btn.classList.remove('is-selected');\n          btn.setAttribute('aria-pressed', 'false');\n\n          \/\/ Check category incompatibility\n          if (activeCat && prodCat !== activeCat) {\n            btn.classList.add('is-disabled');\n            if (textSpan === btn) {\n              btn.innerHTML = '<span class=\"zt-compare-btn-icon\">+<\/span> <span class=\"zt-compare-btn-text\">Different Category<\/span>';\n            } else {\n              textSpan.textContent = 'Different Category';\n              var icon = btn.querySelector('.zt-compare-btn-icon');\n              if (icon) icon.textContent = '+';\n            }\n            btn.style.backgroundColor = '#F8FAFC';\n            btn.style.color = '#94A3B8';\n            btn.style.borderColor = '#E2E8F0';\n            btn.style.opacity = '0.55';\n            btn.style.cursor = 'not-allowed';\n          } else if (isFull) {\n            btn.classList.add('is-disabled');\n            if (textSpan === btn) {\n              btn.innerHTML = '<span class=\"zt-compare-btn-icon\">+<\/span> <span class=\"zt-compare-btn-text\">Limit Reached<\/span>';\n            } else {\n              textSpan.textContent = 'Limit Reached';\n              var icon = btn.querySelector('.zt-compare-btn-icon');\n              if (icon) icon.textContent = '+';\n            }\n            btn.style.backgroundColor = '#F8FAFC';\n            btn.style.color = '#94A3B8';\n            btn.style.borderColor = '#E2E8F0';\n            btn.style.opacity = '0.7';\n            btn.style.cursor = 'not-allowed';\n          } else {\n            btn.classList.remove('is-disabled');\n            if (textSpan === btn) {\n              btn.innerHTML = '<span class=\"zt-compare-btn-icon\">+<\/span> <span class=\"zt-compare-btn-text\">Add to Compare<\/span>';\n            } else {\n              textSpan.textContent = 'Add to Compare';\n              var icon = btn.querySelector('.zt-compare-btn-icon');\n              if (icon) icon.textContent = '+';\n            }\n            btn.style.backgroundColor = '#FFFFFF';\n            btn.style.color = '#475569';\n            btn.style.borderColor = '#CBD5E1';\n            btn.style.opacity = '1';\n            btn.style.cursor = 'pointer';\n          }\n        }\n      });\n\n      \/\/ 2. Render floating comparison tray (only on non-compare pages)\n      var isComparePage = window.location.pathname.indexOf('compare-new') !== -1;\n      if (!isComparePage) {\n        this.renderTray(selected);\n      } else {\n        var tray = document.getElementById('zt-compare-floating-tray');\n        if (tray) tray.style.display = 'none';\n      }\n\n      \/\/ 3. Render Compare New workspace if present on page\n      this.renderWorkspace(selected);\n    },\n    renderTray: function(selected) {\n      var tray = document.getElementById('zt-compare-floating-tray');\n      if (!selected || selected.length === 0) {\n        if (tray) tray.style.display = 'none';\n        return;\n      }\n\n      if (!tray) {\n        tray = document.createElement('div');\n        tray.id = 'zt-compare-floating-tray';\n        tray.style.cssText = 'position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); width: calc(100% - 40px); max-width: 880px; background: #FFFFFF; border: 1px solid #E2E8F0; border-radius: 16px; box-shadow: 0 16px 40px rgba(15,23,42,0.14); z-index: 999980; padding: 14px 22px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 16px; font-family: Inter, -apple-system, sans-serif; transition: all 0.25s cubic-bezier(0.16,1,0.3,1);';\n        document.body.appendChild(tray);\n      }\n\n      tray.style.display = 'flex';\n\n      var activeCat = this.getActiveCategory() || 'ZOOMGATE';\n\n      var pillsHtml = '';\n      for (var i = 0; i < selected.length; i++) {\n        var s = selected[i];\n        var code = PRODUCTS_DB[s] ? PRODUCTS_DB[s].model_code : s.toUpperCase();\n        pillsHtml += '<div style=\"display: inline-flex; align-items: center; gap: 6px; background: #F1F5F9; border: 1px solid #E2E8F0; padding: 6px 12px; border-radius: 9999px; font-size: 0.85rem; font-weight: 700; color: #0F172A;\">' +\n          '<span>' + code + '<\/span>' +\n          '<button type=\"button\" onclick=\"event.stopPropagation(); window.ZoomTechCompare.remove(\\'' + s + '\\')\" aria-label=\"Remove ' + code + '\" style=\"background: none; border: none; padding: 0 2px; color: #64748B; font-size: 1.1rem; line-height: 1; cursor: pointer; font-weight: 700;\">&times;<\/button>' +\n        '<\/div>';\n      }\n\n      var isCompareReady = selected.length >= MIN_ITEMS;\n      var statusNote = '';\n      if (selected.length === 1) {\n        statusNote = '<span style=\"font-size: 0.82rem; color: #64748B; font-weight: 600;\">(Add 1 more ' + activeCat + ' product)<\/span>';\n      }\n\n      var compareBtnStyle = isCompareReady\n        ? 'background-color: #059669; color: #FFFFFF; cursor: pointer; pointer-events: auto;'\n        : 'background-color: #E2E8F0; color: #94A3B8; cursor: not-allowed; pointer-events: none; opacity: 0.6;';\n\n      var countLabel = selected.length === 1 ? '1 Product' : selected.length + ' Products';\n\n      tray.innerHTML = \n        '<div style=\"display: flex; align-items: center; gap: 14px; flex-wrap: wrap;\">' +\n          '<div style=\"display: flex; flex-direction: column; gap: 2px;\">' +\n            '<span style=\"font-size: 0.72rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">' + activeCat + ' COMPARISON<\/span>' +\n            '<span style=\"font-size: 0.85rem; font-weight: 700; color: #0F172A;\">' + countLabel + ' ' + statusNote + '<\/span>' +\n          '<\/div>' +\n          '<div style=\"display: flex; align-items: center; gap: 8px; flex-wrap: wrap;\">' +\n            pillsHtml +\n          '<\/div>' +\n        '<\/div>' +\n        '<div style=\"display: flex; align-items: center; gap: 10px; flex-shrink: 0;\">' +\n          '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/compare-new\/\" style=\"text-decoration: none; font-family: Inter, sans-serif; font-weight: 700; font-size: 0.9rem; padding: 0.7rem 1.6rem; border-radius: 9999px; transition: background-color 0.18s ease; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; ' + compareBtnStyle + '\">' +\n            '<span>Compare Now<\/span> &rarr;' +\n          '<\/a>' +\n          '<button type=\"button\" onclick=\"window.ZoomTechCompare.clear()\" aria-label=\"Clear all comparisons\" style=\"background: none; border: none; color: #94A3B8; font-size: 0.8rem; font-weight: 600; cursor: pointer; text-decoration: underline; padding: 4px;\">Clear<\/button>' +\n        '<\/div>';\n    },\n    renderWorkspace: function(selected) {\n      var root = document.getElementById('zt-compare-dynamic-root');\n      if (!root) return;\n\n      var db = this.db || {};\n      var activeCat = this.getActiveCategory();\n\n      function getSpecVal(p, keySub) {\n        if (!p || !p.specs) return '\u2014';\n        for (var i = 0; i < p.specs.length; i++) {\n          var k = p.specs[i][0];\n          var v = p.specs[i][1];\n          if (k.toLowerCase().indexOf(keySub.toLowerCase()) !== -1) {\n            return v;\n          }\n        }\n        return '\u2014';\n      }\n\n      \/\/ Helper to get available compatible models from active family\n      function getAvailableCompatibleModels() {\n        if (!activeCat) return [];\n        var res = [];\n        for (var slug in db) {\n          if (db[slug].family === activeCat && selected.indexOf(slug) === -1) {\n            res.push(db[slug]);\n          }\n        }\n        return res;\n      }\n\n      \/\/ 0 PRODUCTS SELECTED -> Clean Empty State with Category Hub Choices\n      if (!selected || selected.length === 0) {\n        root.innerHTML = \n          '<div style=\"background: #FFFFFF; border: 1px solid #E2E8F0; border-radius: 16px; padding: 64px 32px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 1.75rem; max-width: 820px; margin: 0 auto; box-shadow: 0 4px 20px rgba(15,23,42,0.03);\">' +\n            '<div style=\"width: 64px; height: 64px; border-radius: 50%; background: #F8FAFC; border: 1px solid #E2E8F0; display: flex; align-items: center; justify-content: center; font-size: 1.75rem;\">' +\n              '\u2696\ufe0f' +\n            '<\/div>' +\n            '<div style=\"display: flex; flex-direction: column; gap: 8px;\">' +\n              '<h2 style=\"font-size: 2rem; font-weight: 800; color: #0F172A; margin: 0;\">No Products Selected Yet<\/h2>' +\n              '<p style=\"font-size: 1.05rem; line-height: 1.6; color: #64748B; margin: 0; max-width: 620px;\">' +\n                'Select 2 or 3 products within the same entrance family (SWING, SPEED, MAX, WING, TRI) to evaluate technical parameters side by side.' +\n              '<\/p>' +\n            '<\/div>' +\n            '<div style=\"display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; margin-top: 0.5rem;\">' +\n              '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/swing-gate-system\/\" style=\"text-decoration: none; font-size: 0.88rem; font-weight: 700; color: #0F172A; background: #F8FAFC; border: 1px solid #CBD5E1; padding: 8px 18px; border-radius: 9999px; transition: all 0.18s ease;\">SWING Gate<\/a>' +\n              '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/speed-swing-gate-system\/\" style=\"text-decoration: none; font-size: 0.88rem; font-weight: 700; color: #0F172A; background: #F8FAFC; border: 1px solid #CBD5E1; padding: 8px 18px; border-radius: 9999px; transition: all 0.18s ease;\">SPEED Gate<\/a>' +\n              '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/max-turnstile-gate-system\/\" style=\"text-decoration: none; font-size: 0.88rem; font-weight: 700; color: #0F172A; background: #F8FAFC; border: 1px solid #CBD5E1; padding: 8px 18px; border-radius: 9999px; transition: all 0.18s ease;\">MAX Turnstiles<\/a>' +\n              '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/products-new\/\" style=\"text-decoration: none; font-family: Inter, sans-serif; background-color: #059669; color: #FFFFFF; font-weight: 700; font-size: 0.88rem; padding: 8px 22px; border-radius: 9999px; display: inline-flex; align-items: center; gap: 6px;\">' +\n                '<span>All Products<\/span> &rarr;' +\n              '<\/a>' +\n            '<\/div>' +\n          '<\/div>';\n        return;\n      }\n\n      var availableCompatible = getAvailableCompatibleModels();\n\n      \/\/ 1 PRODUCT SELECTED -> Clean State with direct same-family addition picker\n      if (selected.length === 1) {\n        var s0 = selected[0];\n        var p1 = db[s0] || { model_code: s0.toUpperCase(), family: activeCat, tagline: 'Engineered entrance control system.', hero_image: 'https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-' + s0 + '-hero-render.png' };\n\n        var addOptionsHtml = '';\n        if (availableCompatible.length > 0) {\n          addOptionsHtml = '<div style=\"display: flex; flex-direction: column; gap: 10px; margin-top: 1.25rem;\">' +\n            '<span style=\"font-size: 0.78rem; font-weight: 800; color: #64748B; letter-spacing: 0.08em; text-transform: uppercase;\">Select another ' + activeCat + ' model to compare:<\/span>' +\n            '<div style=\"display: flex; flex-wrap: wrap; gap: 10px;\">';\n          for (var k = 0; k < availableCompatible.length; k++) {\n            var cm = availableCompatible[k];\n            addOptionsHtml += '<button type=\"button\" onclick=\"window.ZoomTechCompare.add(\\'' + cm.slug + '\\')\" style=\"background: #FFFFFF; border: 1px solid #059669; color: #059669; font-weight: 700; font-size: 0.84rem; padding: 6px 14px; border-radius: 9999px; cursor: pointer; transition: all 0.15s ease;\" onmouseover=\"this.style.backgroundColor=\\'#059669\\'; this.style.color=\\'#FFFFFF\\';\" onmouseout=\"this.style.backgroundColor=\\'#FFFFFF\\'; this.style.color=\\'#059669\\';\">+ ' + cm.model_code + '<\/button>';\n          }\n          addOptionsHtml += '<\/div><\/div>';\n        } else {\n          addOptionsHtml = '<div style=\"font-size: 0.88rem; color: #64748B; margin-top: 1rem;\">No other models currently in the ' + activeCat + ' category.<\/div>';\n        }\n\n        root.innerHTML = \n          '<div style=\"display: flex; flex-direction: column; gap: 1.5rem; max-width: 880px; margin: 0 auto;\">' +\n            '<div style=\"background: #ECFDF5; border: 1px solid #A7F3D0; border-radius: 12px; padding: 18px 24px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem;\">' +\n              '<div style=\"display: flex; align-items: center; gap: 10px;\">' +\n                '<span style=\"font-size: 1.25rem;\">\u2139\ufe0f<\/span>' +\n                '<span style=\"font-size: 0.95rem; font-weight: 700; color: #065F46;\">1 ' + activeCat + ' model selected. Add another ' + activeCat + ' model to compare side by side.<\/span>' +\n              '<\/div>' +\n              '<button type=\"button\" onclick=\"window.ZoomTechCompare.clear()\" style=\"background: none; border: 1px solid #CBD5E1; color: #64748B; font-weight: 700; font-size: 0.82rem; padding: 4px 12px; border-radius: 9999px; cursor: pointer;\">Clear<\/button>' +\n            '<\/div>' +\n            '<div style=\"background: #FFFFFF; border: 1px solid #E2E8F0; border-radius: 16px; padding: 32px; display: flex; flex-direction: column; gap: 1.5rem; box-shadow: 0 4px 20px rgba(15,23,42,0.03);\">' +\n              '<div style=\"display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap;\">' +\n                '<div style=\"display: flex; align-items: center; gap: 24px;\">' +\n                  '<div style=\"width: 140px; height: 140px; background: #F8FAFC; border-radius: 8px; display: flex; align-items: center; justify-content: center; padding: 10px; box-sizing: border-box;\">' +\n                    '<img decoding=\"async\" src=\"' + p1.hero_image + '\" alt=\"' + p1.model_code + '\" style=\"max-height: 100%; max-width: 100%; object-fit: contain;\" \/>' +\n                  '<\/div>' +\n                  '<div style=\"display: flex; flex-direction: column; gap: 4px;\">' +\n                    '<span style=\"font-size: 0.75rem; font-weight: 800; color: #059669; text-transform: uppercase;\">' + p1.family + ' SERIES<\/span>' +\n                    '<h3 style=\"font-size: 1.6rem; font-weight: 800; color: #0F172A; margin: 0;\">' + p1.model_code + '<\/h3>' +\n                    '<p style=\"font-size: 0.95rem; color: #64748B; margin: 0;\">' + p1.tagline + '<\/p>' +\n                  '<\/div>' +\n                '<\/div>' +\n                '<div style=\"display: flex; align-items: center; gap: 12px;\">' +\n                  '<button type=\"button\" onclick=\"window.ZoomTechCompare.remove(\\'' + s0 + '\\')\" style=\"background: none; border: 1px solid #CBD5E1; color: #64748B; font-weight: 700; font-size: 0.85rem; padding: 0.65rem 1.25rem; border-radius: 9999px; cursor: pointer;\">Remove &times;<\/button>' +\n                  '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/product\/' + s0 + '\/\" style=\"text-decoration: none; font-family: Inter, sans-serif; background-color: #0F172A; color: #FFFFFF; font-weight: 700; font-size: 0.85rem; padding: 0.65rem 1.35rem; border-radius: 9999px; display: inline-flex; align-items: center; gap: 4px;\"><span>View Detail<\/span> &rarr;<\/a>' +\n                '<\/div>' +\n              '<\/div>' +\n              addOptionsHtml +\n            '<\/div>' +\n          '<\/div>';\n        return;\n      }\n\n      \/\/ EXACTLY 2 OR 3 MODELS SELECTED (SAME CATEGORY)\n      var prods = selected.map(function(s) {\n        return db[s] || { slug: s, model_code: s.toUpperCase(), family: activeCat, family_label: 'ENTRANCE SYSTEM', tagline: 'Engineered entrance control system.', hero_image: 'https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/09\/zoomtech-' + s + '-hero-render.png', specs: [] };\n      });\n      var modelCount = prods.length;\n      var colWidthPercent = modelCount === 2 ? 37.5 : 25;\n\n      \/\/ Header Product Columns\n      var headerThHtml = '';\n      for (var i = 0; i < prods.length; i++) {\n        var p = prods[i];\n        var isLast = i === prods.length - 1;\n        headerThHtml += \n          '<th style=\"padding: 24px; width: ' + colWidthPercent + '%; vertical-align: top; ' + (isLast ? '' : 'border-right: 1px solid #E2E8F0;') + ' box-sizing: border-box; background-color: #FFFFFF;\">' +\n            '<div style=\"display: flex; flex-direction: column; gap: 12px;\">' +\n              '<div style=\"width: 100%; height: 160px; background: #F8FAFC; border-radius: 8px; display: flex; align-items: center; justify-content: center; padding: 12px; box-sizing: border-box; position: relative;\">' +\n                '<img decoding=\"async\" src=\"' + p.hero_image + '\" alt=\"' + p.model_code + '\" style=\"max-height: 100%; max-width: 100%; object-fit: contain;\" \/>' +\n                '<button type=\"button\" onclick=\"event.stopPropagation(); window.ZoomTechCompare.remove(\\'' + p.slug + '\\')\" aria-label=\"Remove ' + p.model_code + '\" style=\"position: absolute; top: 8px; right: 8px; background: #FFFFFF; border: 1px solid #CBD5E1; color: #64748B; width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1rem; cursor: pointer; font-weight: 700;\">&times;<\/button>' +\n              '<\/div>' +\n              '<div style=\"display: flex; flex-direction: column; gap: 2px;\">' +\n                '<span style=\"font-size: 0.72rem; font-weight: 800; color: #059669; text-transform: uppercase;\">' + p.family + ' FAMILY<\/span>' +\n                '<div style=\"font-size: 1.35rem; font-weight: 800; color: #0F172A;\">' + p.model_code + '<\/div>' +\n                '<div style=\"font-size: 0.85rem; color: #64748B; line-height: 1.35;\">' + p.tagline + '<\/div>' +\n              '<\/div>' +\n              '<div style=\"margin-top: 4px;\">' +\n                '<a href=\"https:\/\/www.zoomtech.com.sg\/staging\/product\/' + p.slug + '\/\" style=\"text-decoration: none; font-family: Inter, sans-serif; background-color: #0F172A; color: #FFFFFF; font-weight: 700; font-size: 0.82rem; padding: 0.65rem 1rem; border-radius: 9999px; text-align: center; display: inline-flex; align-items: center; justify-content: center; width: 100%; box-sizing: border-box;\">' +\n                  '<span>View Product<\/span> &rarr;' +\n                '<\/a>' +\n              '<\/div>' +\n            '<\/div>' +\n          '<\/th>';\n      }\n\n      \/\/ Category Matrix Row Generator\n      function makeMatrixRow(paramLabel, specKeySub, isHeaderGroup) {\n        if (isHeaderGroup) {\n          return '<tr style=\"background: #F1F5F9; border-top: 2px solid #CBD5E1; border-bottom: 1px solid #CBD5E1;\"><th colspan=\"' + (modelCount + 1) + '\" style=\"padding: 12px 24px; font-size: 0.8rem; font-weight: 800; color: #0F172A; text-transform: uppercase; letter-spacing: 0.08em;\">' + paramLabel + '<\/th><\/tr>';\n        }\n\n        var tds = '';\n        for (var j = 0; j < prods.length; j++) {\n          var val = getSpecVal(prods[j], specKeySub);\n          var isLastCell = j === prods.length - 1;\n          tds += '<td style=\"padding: 14px 24px; color: #0F172A; font-weight: 600; font-size: 0.92rem; ' + (isLastCell ? '' : 'border-right: 1px solid #E2E8F0;') + '\">' + val + '<\/td>';\n        }\n\n        return '<tr style=\"border-bottom: 1px solid #E2E8F0; background-color: #FFFFFF;\"><td style=\"padding: 14px 24px; font-weight: 700; color: #475569; font-size: 0.88rem; border-right: 1px solid #E2E8F0; background-color: #F8FAFC; width: 25%;\">' + paramLabel + '<\/td>' + tds + '<\/tr>';\n      }\n\n      var rowsHtml = \n        makeMatrixRow(\"1. General Overview\", \"\", true) +\n        makeMatrixRow(\"Product Type\", \"type\") +\n        makeMatrixRow(\"Chassis Dimensions\", \"dimension\") +\n        makeMatrixRow(\"Enclosure Metallurgy\", \"material\") +\n        \n        makeMatrixRow(\"2. Passage & Performance\", \"\", true) +\n        makeMatrixRow(\"Walkway Width\", \"walkway\") +\n        makeMatrixRow(\"Passing Throughput\", \"speed\") +\n        makeMatrixRow(\"Motor \/ Mechanism\", \"motor\") +\n        makeMatrixRow(\"MTBF Reliability\", \"mtbf\") +\n\n        makeMatrixRow(\"3. Electrical & Environment\", \"\", true) +\n        makeMatrixRow(\"Operating Supply\", \"supply\") +\n        makeMatrixRow(\"Power Consumption\", \"power\") +\n        makeMatrixRow(\"IP Protection Level\", \"ip\") +\n        makeMatrixRow(\"Communication Interface\", \"interface\");\n\n      \/\/ Header Controls Bar: \"Product Comparison\" + [ + Add Product Dropdown\/Popover ] + [ Clear Comparison ]\n      var addBtnHtml = '';\n      if (modelCount < MAX_ITEMS && availableCompatible.length > 0) {\n        var popoverItemsHtml = '';\n        for (var m = 0; m < availableCompatible.length; m++) {\n          var compMod = availableCompatible[m];\n          popoverItemsHtml += '<button type=\"button\" onclick=\"window.ZoomTechCompare.add(\\'' + compMod.slug + '\\'); document.getElementById(\\'zt-add-popover\\').style.display=\\'none\\';\" style=\"background: none; border: none; padding: 10px 16px; text-align: left; width: 100%; font-size: 0.88rem; font-weight: 700; color: #0F172A; cursor: pointer; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #F1F5F9;\" onmouseover=\"this.style.backgroundColor=\\'#F8FAFC\\'; this.style.color=\\'#059669\\';\" onmouseout=\"this.style.backgroundColor=\\'transparent\\'; this.style.color=\\'#0F172A\\';\"><span>' + compMod.model_code + '<\/span> <span style=\"font-size: 0.75rem; color: #64748B;\">+' + compMod.family + '<\/span><\/button>';\n        }\n\n        addBtnHtml = \n          '<div style=\"position: relative; display: inline-block;\">' +\n            '<button type=\"button\" onclick=\"var p=document.getElementById(\\'zt-add-popover\\'); p.style.display = (p.style.display===\\'none\\'?\\'block\\':\\'none\\');\" style=\"background-color: #FFFFFF; border: 1px solid #059669; color: #059669; font-weight: 700; font-size: 0.85rem; padding: 6px 16px; border-radius: 9999px; transition: all 0.18s ease; display: inline-flex; align-items: center; gap: 6px; cursor: pointer;\">' +\n              '<span>+ Add ' + activeCat + ' Product<\/span> &#9662;' +\n            '<\/button>' +\n            '<div id=\"zt-add-popover\" style=\"display: none; position: absolute; top: calc(100% + 8px); left: 0; background: #FFFFFF; border: 1px solid #E2E8F0; border-radius: 10px; box-shadow: 0 10px 30px rgba(15,23,42,0.12); width: 260px; z-index: 100; overflow: hidden;\">' +\n              '<div style=\"padding: 10px 16px; background: #F8FAFC; border-bottom: 1px solid #E2E8F0; font-size: 0.74rem; font-weight: 800; color: #64748B; text-transform: uppercase;\">Compatible ' + activeCat + ' Models:<\/div>' +\n              popoverItemsHtml +\n            '<\/div>' +\n          '<\/div>';\n      }\n\n      var topControlBar = \n        '<div style=\"display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; margin-bottom: 1.5rem;\">' +\n          '<div style=\"display: flex; align-items: center; gap: 14px; flex-wrap: wrap;\">' +\n            '<span style=\"font-size: 1.35rem; font-weight: 800; color: #0F172A; letter-spacing: -0.01em;\">Product Comparison (' + activeCat + ' Series)<\/span>' +\n            addBtnHtml +\n          '<\/div>' +\n          '<div>' +\n            '<button type=\"button\" onclick=\"window.ZoomTechCompare.clear()\" style=\"background: none; border: 1px solid #CBD5E1; color: #64748B; font-size: 0.82rem; font-weight: 600; padding: 6px 14px; border-radius: 9999px; cursor: pointer; transition: all 0.15s ease;\">Clear Comparison<\/button>' +\n          '<\/div>' +\n        '<\/div>';\n\n      root.innerHTML = \n        topControlBar +\n        '<div style=\"background: #FFFFFF; border: 1px solid #E2E8F0; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(15,23,42,0.04); width: 100%; box-sizing: border-box;\">' +\n          '<div style=\"overflow-x: auto; width: 100%;\">' +\n            '<table style=\"width: 100%; border-collapse: collapse; text-align: left; min-width: 760px;\">' +\n              '<thead>' +\n                '<tr style=\"border-bottom: 2px solid #E2E8F0;\">' +\n                  '<th style=\"padding: 24px; width: 25%; vertical-align: bottom; border-right: 1px solid #E2E8F0; background-color: #F8FAFC;\">' +\n                    '<span style=\"font-size: 0.72rem; font-weight: 800; color: #059669; letter-spacing: 0.1em; text-transform: uppercase;\">SPECIFICATION<\/span>' +\n                    '<div style=\"font-size: 1.15rem; font-weight: 800; color: #0F172A; margin-top: 4px;\">Technical Matrix<\/div>' +\n                  '<\/th>' +\n                  headerThHtml +\n                '<\/tr>' +\n              '<\/thead>' +\n              '<tbody>' +\n                rowsHtml +\n              '<\/tbody>' +\n            '<\/table>' +\n          '<\/div>' +\n        '<\/div>';\n    },\n    init: function() {\n      document.addEventListener('click', function(e) {\n        var btn = e.target.closest('.zt-compare-btn, [data-compare-slug]');\n        if (!btn) return;\n        e.preventDefault();\n        e.stopPropagation();\n        var slug = btn.getAttribute('data-compare-slug');\n        if (!slug) return;\n        slug = slug.toLowerCase().trim();\n\n        if (window.ZoomTechCompare.has(slug)) {\n          window.ZoomTechCompare.remove(slug);\n        } else {\n          window.ZoomTechCompare.add(slug);\n        }\n      });\n\n      \/\/ Close popover when clicking outside\n      document.addEventListener('click', function(e) {\n        var pop = document.getElementById('zt-add-popover');\n        if (pop && pop.style.display !== 'none') {\n          var isInside = e.target.closest('#zt-add-popover') || e.target.closest('button[onclick*=\"zt-add-popover\"]');\n          if (!isInside) {\n            pop.style.display = 'none';\n          }\n        }\n      });\n\n      this.sync();\n    }\n  };\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function() { window.ZoomTechCompare.init(); });\n  } else {\n    window.ZoomTechCompare.init();\n  }\n  window.addEventListener('load', function() { window.ZoomTechCompare.sync(); });\n  window.addEventListener('pageshow', function() { window.ZoomTechCompare.sync(); });\n  window.addEventListener('storage', function() { window.ZoomTechCompare.sync(); });\n})();\n\n<\/script>\n\n<style>\n.zt-btn-prod-primary:hover {\n  background-color: #047857 !important;\n}\n<\/style>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-zt_cmp_footer elementor-widget elementor-widget-html\" data-id=\"zt_cmp_footer\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ZOOM TECH PREMIUM ARCHITECTURAL GLOBAL FOOTER (100VW FULL-BLEED) -->\n<div id=\"zt-footer-breakout-wrapper\" style=\"width: 100vw; max-width: 100vw; position: relative; left: 50%; right: 50%; margin-left: -50vw; margin-right: -50vw; background-color: #0F172A; box-sizing: border-box; overflow: hidden;\">\n  <footer id=\"sec-global-footer\" style=\"width: 100%; padding: 4.25rem 0 2.5rem 0; background-color: #0F172A; color: #FFFFFF; box-sizing: border-box; font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, sans-serif;\">\n    <div style=\"max-width: 1440px; margin: 0 auto; padding: 0 2.5rem; width: 100%; box-sizing: border-box; display: flex; flex-direction: column; gap: 3rem;\">\n      \n      <!-- Controlled Master Grid -->\n      <div class=\"zt-footer-master-grid\" style=\"display: grid; width: 100%; box-sizing: border-box; align-items: start;\">\n        \n        <!-- Column 1: Brand -->\n        <div class=\"zt-footer-col zt-ftr-brand-col\" style=\"display: flex; flex-direction: column; gap: 1.15rem;\">\n          <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/home-new\/\" style=\"text-decoration: none; display: inline-block;\">\n            <img decoding=\"async\" src=\"https:\/\/www.zoomtech.com.sg\/staging\/wp-content\/uploads\/2026\/10\/zoomtech-logo-color-white-wordmark.png\" alt=\"Zoom Tech Pte Ltd\" style=\"height: 34px; width: auto; object-fit: contain; display: block;\" \/>\n          <\/a>\n          <p style=\"font-size: 0.88rem; color: #94A3B8; line-height: 1.65; margin: 0; max-width: 290px;\">\n            Smart access and security solutions, engineered in Singapore.\n          <\/p>\n          <div style=\"font-size: 0.78rem; font-weight: 700; color: #10B981; letter-spacing: 0.04em;\">\n            Headquarters &amp; Manufacturing: Singapore\n          <\/div>\n        <\/div>\n\n        <!-- Column 2: Solutions (Accordion on Mobile) -->\n        <div class=\"zt-footer-col zt-footer-acc-col\" id=\"zt-ftr-col-solutions\">\n          <button type=\"button\" class=\"zt-ftr-acc-toggle\" id=\"zt-ftr-toggle-solutions\" aria-expanded=\"false\" aria-controls=\"zt-ftr-sub-solutions\">\n            <span class=\"zt-ftr-heading\">SOLUTIONS<\/span>\n            <svg class=\"zt-ftr-chevron\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n            <\/svg>\n          <\/button>\n          <div class=\"zt-ftr-acc-content\" id=\"zt-ftr-sub-solutions\">\n            <div class=\"zt-ftr-acc-inner\">\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/facial-recognition\/\" class=\"zt-footer-link\">Facial Recognition<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/access\/\" class=\"zt-footer-link\">Access Control<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/solutions-new\/\" class=\"zt-footer-link\">View All Solutions &rarr;<\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Column 3: Products (Accordion on Mobile) -->\n        <div class=\"zt-footer-col zt-footer-acc-col\" id=\"zt-ftr-col-products\">\n          <button type=\"button\" class=\"zt-ftr-acc-toggle\" id=\"zt-ftr-toggle-products\" aria-expanded=\"false\" aria-controls=\"zt-ftr-sub-products\">\n            <span class=\"zt-ftr-heading\">PRODUCTS<\/span>\n            <svg class=\"zt-ftr-chevron\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n            <\/svg>\n          <\/button>\n          <div class=\"zt-ftr-acc-content\" id=\"zt-ftr-sub-products\">\n            <div class=\"zt-ftr-acc-inner\">\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/zoomgate\/\" class=\"zt-footer-link\">ZoomGate<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/facial-recognition\/\" class=\"zt-footer-link\">ZoomFace<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/access\/\" class=\"zt-footer-link\">ZoomAccess<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/surveillance\/\" class=\"zt-footer-link\">ZoomSurveillance<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/solutions-new\/\" class=\"zt-footer-link\">ZoomIOT<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/products-new\/\" class=\"zt-footer-link\">View All Products &rarr;<\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Column 4: Company (Accordion on Mobile) -->\n        <div class=\"zt-footer-col zt-footer-acc-col\" id=\"zt-ftr-col-company\">\n          <button type=\"button\" class=\"zt-ftr-acc-toggle\" id=\"zt-ftr-toggle-company\" aria-expanded=\"false\" aria-controls=\"zt-ftr-sub-company\">\n            <span class=\"zt-ftr-heading\">COMPANY<\/span>\n            <svg class=\"zt-ftr-chevron\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\">\n              <polyline points=\"6 9 12 15 18 9\"><\/polyline>\n            <\/svg>\n          <\/button>\n          <div class=\"zt-ftr-acc-content\" id=\"zt-ftr-sub-company\">\n            <div class=\"zt-ftr-acc-inner\">\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/about-new\/\" class=\"zt-footer-link\">About Us<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/our-projects\/\" class=\"zt-footer-link\">Our Work<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/pressroom\/\" class=\"zt-footer-link\">Insights &amp; Pressroom<\/a>\n              <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/\" class=\"zt-footer-link\">Contact<\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <!-- Column 5: Connect -->\n        <div class=\"zt-footer-col zt-ftr-connect-col\">\n          <div class=\"zt-ftr-connect-group zt-ftr-connect-addr\">\n            <div class=\"zt-ftr-heading\">CONNECT<\/div>\n            <div style=\"font-size: 0.88rem; color: #94A3B8; line-height: 1.5;\">68 Senoko Road<br\/>Singapore 758128<\/div>\n            <div style=\"font-size: 0.86rem; color: #94A3B8; line-height: 1.5;\">\n              <a href=\"tel:+6569041285\" class=\"zt-footer-link\" style=\"color: #94A3B8; text-decoration: none;\">+65 6904 1285<\/a>\n            <\/div>\n          <\/div>\n          <div class=\"zt-ftr-connect-group zt-ftr-connect-emails\">\n            <div style=\"display: flex; flex-direction: column; gap: 3px;\">\n              <span style=\"font-size: 0.72rem; font-weight: 800; color: #10B981; letter-spacing: 0.08em; text-transform: uppercase;\">SALES<\/span>\n              <a href=\"mailto:salesteam@zoomtech.com.sg\" class=\"zt-footer-link\" style=\"white-space: nowrap;\">salesteam@zoomtech.com.sg<\/a>\n            <\/div>\n            <div style=\"display: flex; flex-direction: column; gap: 3px;\">\n              <span style=\"font-size: 0.72rem; font-weight: 800; color: #10B981; letter-spacing: 0.08em; text-transform: uppercase;\">SERVICE<\/span>\n              <a href=\"mailto:serviceteam@zoomtech.com.sg\" class=\"zt-footer-link\" style=\"white-space: nowrap;\">serviceteam@zoomtech.com.sg<\/a>\n            <\/div>\n          <\/div>\n          <div class=\"zt-ftr-connect-group zt-ftr-connect-cta\">\n            <a href=\"https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/\" class=\"zt-ftr-pill-btn\">\n              <span>Talk to us<\/span> &rarr;\n            <\/a>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n      <!-- Clean Horizontal Divider -->\n      <div style=\"width: 100%; border-top: 1px solid #1E293B;\"><\/div>\n\n      <!-- Bottom Utility Bar (Single Horizontal Row) -->\n      <div class=\"zt-footer-bottom-bar\" style=\"display: flex; flex-direction: row; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; width: 100%;\">\n        <div style=\"font-size: 0.82rem; color: #64748B; margin: 0;\">\n          &copy; 2026 Zoom Tech Pte Ltd. All rights reserved.\n        <\/div>\n        <div class=\"zt-footer-legal-links\" style=\"display: flex; flex-direction: row; gap: 1.75rem; align-items: center;\">\n          <a href=\"#privacy\" class=\"zt-footer-legal-link\">Privacy Policy<\/a>\n          <a href=\"#terms\" class=\"zt-footer-legal-link\">Terms of Service<\/a>\n        <\/div>\n      <\/div>\n\n    <\/div>\n  <\/footer>\n<\/div>\n\n<style>\n\/* GLOBAL FOOTER BASE STYLES *\/\n.zt-footer-link {\n  font-size: 0.88rem;\n  color: #94A3B8 !important;\n  text-decoration: none !important;\n  line-height: 1.4;\n  transition: color 0.18s ease;\n  display: inline-block;\n  background: transparent !important;\n  background-color: transparent !important;\n}\n\n.zt-footer-link:hover, .zt-footer-link:focus {\n  color: #34D399 !important;\n  background: transparent !important;\n  background-color: transparent !important;\n}\n\n.zt-footer-legal-link {\n  font-size: 0.82rem;\n  color: #64748B !important;\n  text-decoration: none !important;\n  transition: color 0.18s ease;\n}\n\n.zt-footer-legal-link:hover, .zt-footer-legal-link:focus {\n  color: #94A3B8 !important;\n}\n\n\/* Premium Rounded Talk to Us Pill Button *\/\n.zt-ftr-pill-btn {\n  text-decoration: none;\n  font-size: 0.84rem;\n  font-weight: 700;\n  color: #FFFFFF;\n  background-color: #059669;\n  height: 42px;\n  padding: 0 1.35rem;\n  border-radius: 9999px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 6px;\n  transition: background-color 0.18s ease, box-shadow 0.18s ease;\n  box-sizing: border-box;\n}\n\n.zt-ftr-pill-btn:hover {\n  background-color: #047857;\n  color: #FFFFFF;\n}\n\n#zt-footer-breakout-wrapper, #sec-global-footer {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n  background-color: #0F172A !important;\n}\n\n\/* DESKTOP (>= 1141px): APPROVED 5-COLUMN GRID *\/\n@media (min-width: 1141px) {\n  .zt-footer-master-grid {\n    grid-template-columns: 2.2fr 1.15fr 1.25fr 1.15fr 1.85fr !important;\n    gap: 40px !important;\n  }\n  .zt-ftr-brand-col {\n    padding-right: 1.5rem;\n  }\n  .zt-ftr-connect-col {\n    display: flex;\n    flex-direction: column;\n    gap: 0.85rem;\n  }\n  .zt-ftr-connect-addr {\n    display: flex;\n    flex-direction: column;\n    gap: 0.85rem;\n  }\n  .zt-ftr-connect-emails {\n    display: flex;\n    flex-direction: column;\n    gap: 0.85rem;\n  }\n}\n\n\/* SMALL DESKTOP \/ WIDE TABLET (835px - 1140px, e.g. 1024px): 4-COLUMN TOP + BALANCED CONNECT BAR *\/\n@media (min-width: 835px) and (max-width: 1140px) {\n  .zt-footer-master-grid {\n    grid-template-columns: 1.8fr 1fr 1.15fr 1fr !important;\n    gap: 32px 24px !important;\n  }\n  .zt-ftr-brand-col {\n    grid-column: span 1 !important;\n  }\n  .zt-ftr-connect-col {\n    grid-column: 1 \/ -1 !important;\n    border-top: 1px solid #1E293B !important;\n    padding-top: 1.75rem !important;\n    margin-top: 0.25rem !important;\n    display: flex !important;\n    flex-direction: row !important;\n    justify-content: space-between !important;\n    align-items: center !important;\n    flex-wrap: wrap !important;\n    gap: 1.5rem !important;\n  }\n  .zt-ftr-connect-addr {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 4px !important;\n  }\n  .zt-ftr-connect-emails {\n    display: flex !important;\n    flex-direction: row !important;\n    gap: 32px !important;\n    align-items: flex-start !important;\n  }\n  .zt-ftr-connect-cta {\n    display: flex !important;\n    align-items: center !important;\n  }\n}\n\n\/* TABLET (768px - 834px): BALANCED 2-COLUMN DELIBERATE GRID *\/\n@media (min-width: 768px) and (max-width: 834px) {\n  .zt-footer-master-grid {\n    grid-template-columns: 1fr 1fr !important;\n    gap: 28px 32px !important;\n  }\n  .zt-ftr-brand-col {\n    grid-column: 1 \/ -1 !important;\n    padding-right: 0 !important;\n    max-width: 520px !important;\n    padding-bottom: 0.5rem !important;\n    border-bottom: 1px solid #1E293B !important;\n  }\n  .zt-ftr-connect-col {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.85rem !important;\n  }\n  .zt-ftr-connect-addr {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.85rem !important;\n  }\n  .zt-ftr-connect-emails {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.85rem !important;\n  }\n}\n\n\/* ACCORDION STRUCTURE ON DESKTOP & TABLET (LOCKED OPEN WITH ZERO TAP HIGHLIGHT) *\/\n.zt-ftr-acc-toggle {\n  background: transparent !important;\n  background-color: transparent !important;\n  border: none !important;\n  padding: 0;\n  margin: 0;\n  color: inherit;\n  font: inherit;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  width: 100%;\n  cursor: default;\n  text-align: left;\n  outline: none !important;\n  box-shadow: none !important;\n  -webkit-tap-highlight-color: transparent !important;\n}\n\n.zt-ftr-acc-toggle:hover,\n.zt-ftr-acc-toggle:focus,\n.zt-ftr-acc-toggle:active {\n  background: transparent !important;\n  background-color: transparent !important;\n  outline: none !important;\n  box-shadow: none !important;\n}\n\n.zt-ftr-acc-toggle:focus-visible {\n  outline: 2px solid #10B981 !important;\n  outline-offset: 2px !important;\n}\n\n.zt-footer-acc-col,\n.zt-footer-acc-col.is-open,\n.zt-ftr-acc-content,\n.zt-ftr-acc-inner {\n  background: transparent !important;\n  background-color: transparent !important;\n  box-shadow: none !important;\n}\n\n.zt-ftr-heading {\n  font-size: 0.74rem;\n  font-weight: 800;\n  color: #FFFFFF;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n}\n\n.zt-ftr-chevron {\n  display: none;\n  color: #94A3B8;\n  transition: transform 0.26s cubic-bezier(0.16, 1, 0.3, 1), color 0.18s ease;\n}\n\n.zt-ftr-acc-content {\n  display: block;\n}\n\n.zt-ftr-acc-inner {\n  display: flex;\n  flex-direction: column;\n  gap: 0.85rem;\n  margin-top: 0.85rem;\n}\n\n\/* MOBILE RESPONSIVE (<= 767px): MOBILE ACCORDIONS *\/\n@media (max-width: 767px) {\n  #sec-global-footer {\n    padding: 3.5rem 0 2rem 0 !important;\n    background-color: #0F172A !important;\n  }\n  #sec-global-footer > div {\n    padding: 0 1.25rem !important;\n    gap: 2rem !important;\n  }\n  .zt-footer-master-grid {\n    grid-template-columns: 1fr !important;\n    gap: 0 !important;\n  }\n  .zt-ftr-brand-col {\n    grid-column: span 1 !important;\n    padding-right: 0 !important;\n    padding-bottom: 1.25rem !important;\n    border-bottom: 1px solid #1E293B !important;\n    margin-bottom: 0.25rem !important;\n  }\n  .zt-ftr-brand-col img {\n    height: 26px !important;\n    max-height: 26px !important;\n    max-width: 190px !important;\n    width: auto !important;\n    object-fit: contain !important;\n  }\n  .zt-footer-acc-col {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  .zt-ftr-acc-toggle {\n    cursor: pointer !important;\n    padding: 0.65rem 0 !important;\n    border-bottom: 1px solid #1E293B !important;\n    -webkit-tap-highlight-color: transparent !important;\n    background: transparent !important;\n    background-color: transparent !important;\n  }\n  .zt-ftr-chevron {\n    display: inline-block !important;\n  }\n  .zt-ftr-acc-content {\n    display: grid !important;\n    grid-template-rows: 0fr;\n    transition: grid-template-rows 260ms cubic-bezier(0.16, 1, 0.3, 1), opacity 260ms ease !important;\n    opacity: 0;\n    overflow: hidden;\n    background: transparent !important;\n    background-color: transparent !important;\n  }\n  .zt-ftr-acc-inner {\n    min-height: 0;\n    overflow: hidden;\n    margin-top: 0 !important;\n    padding-top: 0.75rem;\n    padding-bottom: 0.75rem;\n    background: transparent !important;\n    background-color: transparent !important;\n  }\n  .zt-footer-acc-col.is-open {\n    background: transparent !important;\n    background-color: transparent !important;\n  }\n  .zt-footer-acc-col.is-open .zt-ftr-acc-content {\n    grid-template-rows: 1fr !important;\n    opacity: 1 !important;\n    background: transparent !important;\n    background-color: transparent !important;\n  }\n  .zt-footer-acc-col.is-open .zt-ftr-chevron {\n    transform: rotate(180deg) !important;\n    color: #10B981 !important;\n  }\n  .zt-ftr-connect-col {\n    padding-top: 1.5rem !important;\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.85rem !important;\n  }\n  .zt-ftr-connect-addr {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.85rem !important;\n  }\n  .zt-ftr-connect-emails {\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0.85rem !important;\n  }\n  .zt-footer-bottom-bar {\n    flex-direction: column !important;\n    align-items: flex-start !important;\n    gap: 0.75rem !important;\n  }\n}\n\n\/* NARROW MOBILE (<= 360px) *\/\n@media (max-width: 360px) {\n  #sec-global-footer > div {\n    padding: 0 1rem !important;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  .zt-ftr-acc-content,\n  .zt-ftr-chevron {\n    transition: none !important;\n  }\n}\n<\/style>\n\n<script>\n(function() {\n  function initFooterAccordion() {\n    var footerWrap = document.getElementById('sec-global-footer');\n    if (!footerWrap) return;\n\n    var toggles = footerWrap.querySelectorAll('.zt-ftr-acc-toggle');\n    toggles.forEach(function(toggle) {\n      toggle.onclick = function(e) {\n        \/\/ Only active on mobile viewports (<= 767px)\n        if (window.innerWidth > 767) return;\n\n        e.preventDefault();\n        e.stopPropagation();\n\n        var parentCol = toggle.closest('.zt-footer-acc-col');\n        if (!parentCol) return;\n\n        var isOpen = parentCol.classList.contains('is-open');\n        if (isOpen) {\n          parentCol.classList.remove('is-open');\n          toggle.setAttribute('aria-expanded', 'false');\n        } else {\n          parentCol.classList.add('is-open');\n          toggle.setAttribute('aria-expanded', 'true');\n        }\n      };\n    });\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initFooterAccordion);\n  } else {\n    initFooterAccordion();\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-zt_cmp_whatsapp elementor-widget elementor-widget-html\" data-id=\"zt_cmp_whatsapp\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ZOOM TECH PROPRIETARY ENTERPRISE ASSISTANT CONCIERGE -->\n<div id=\"zt-chatbot-root\">\n\n  <!-- ENTERPRISE FLOATING LAUNCHER (Branded Zoom Tech Assistant Character) -->\n  <button id=\"zt-chatbot-trigger\" type=\"button\" aria-label=\"Open Zoom Tech Assistant\" style=\"position: fixed; bottom: 24px; right: 24px; z-index: 999998; width: 58px; height: 58px; background-color: #0F172A; color: #FFFFFF; border: 2px solid #10B981; border-radius: 50%; box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.85), 0 8px 24px rgba(15, 23, 42, 0.45), 0 0 20px rgba(16, 185, 129, 0.35); display: flex; align-items: center; justify-content: center; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease, bottom 0.25s ease; outline: none; padding: 0; box-sizing: border-box;\">\n    <!-- Precision Zoom Tech Assistant Robot Chat-Bubble Icon (from Brand Reference) -->\n    <div id=\"zt-chat-icon-open\" style=\"display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;\">\n      <svg width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"display: block;\">\n        <!-- Antenna (Emerald) -->\n        <line x1=\"27\" y1=\"20\" x2=\"27\" y2=\"13.5\" stroke=\"#10B981\" stroke-width=\"3.5\" stroke-linecap=\"round\" \/>\n        <circle cx=\"27\" cy=\"11\" r=\"3.5\" fill=\"#10B981\" \/>\n        \n        <!-- Radiating Alert Rays (Emerald) -->\n        <line x1=\"36\" y1=\"12\" x2=\"38.5\" y2=\"7.5\" stroke=\"#10B981\" stroke-width=\"3.2\" stroke-linecap=\"round\" \/>\n        <line x1=\"41\" y1=\"16.5\" x2=\"46\" y2=\"14\" stroke=\"#10B981\" stroke-width=\"3.2\" stroke-linecap=\"round\" \/>\n        <line x1=\"43\" y1=\"23\" x2=\"48\" y2=\"23\" stroke=\"#10B981\" stroke-width=\"3.2\" stroke-linecap=\"round\" \/>\n\n        <!-- Speech Bubble Head (Crisp White High-DPI Outline) -->\n        <path d=\"M19 20H35C40.5228 20 45 24.4772 45 30C45 35.5228 40.5228 40 35 40H25.5L18 46.5V40C13.0294 40 9 35.9706 9 31V29C9 24.0294 13.0294 20 18 20H19Z\" fill=\"#0F172A\" stroke=\"#FFFFFF\" stroke-width=\"4.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" \/>\n\n        <!-- Assistant Eyes (Emerald Rounded Vertical Capsules) -->\n        <rect x=\"19\" y=\"27\" width=\"4.2\" height=\"8.5\" rx=\"2.1\" fill=\"#10B981\" \/>\n        <rect x=\"31\" y=\"27\" width=\"4.2\" height=\"8.5\" rx=\"2.1\" fill=\"#10B981\" \/>\n      <\/svg>\n    <\/div>\n  <\/button>\n\n  <!-- REFINED CONCIERGE CHAT PANEL -->\n  <div id=\"zt-chatbot-panel\" class=\"zt-chat-window-panel\" style=\"display: none; position: fixed; bottom: 92px; right: 24px; z-index: 2000000; width: 384px; max-width: calc(100vw - 28px); height: 580px; max-height: calc(100vh - 110px); background: #FFFFFF; border: 1px solid #E2E8F0; border-radius: 16px; box-shadow: 0 20px 50px rgba(15, 23, 42, 0.16); overflow: hidden; box-sizing: border-box; flex-direction: column; font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\">\n    \n    <!-- Clean Integrated Window Header -->\n    <div id=\"zt-chat-header\" style=\"background: #FFFFFF; color: #0F172A; padding: 14px 18px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid #E2E8F0; box-sizing: border-box; flex-shrink: 0; position: relative; z-index: 10;\">\n      \n      <!-- Left: Mobile Back Button + Brand Badge + Title -->\n      <div style=\"display: flex; align-items: center; gap: 8px; min-width: 0;\">\n        \n        <!-- Mobile Back Control (Visible on mobile <= 767px, 44x44px touch target) -->\n        <button id=\"zt-chat-btn-mobile-back\" type=\"button\" aria-label=\"Back to website\" class=\"zt-chat-back-btn\" style=\"display: none; background: transparent; border: none; color: #0F172A; cursor: pointer; min-width: 44px; min-height: 44px; width: 44px; height: 44px; border-radius: 8px; align-items: center; justify-content: center; padding: 0; margin-left: -6px; transition: all 0.15s ease;\">\n          <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <line x1=\"19\" y1=\"12\" x2=\"5\" y2=\"12\"><\/line>\n            <polyline points=\"12 19 5 12 12 5\"><\/polyline>\n          <\/svg>\n        <\/button>\n\n        <!-- Brand Icon Badge -->\n        <div id=\"zt-chat-header-badge\" style=\"width: 32px; height: 32px; border-radius: 8px; background: #ECFDF5; border: 1px solid #A7F3D0; display: flex; align-items: center; justify-content: center; box-sizing: border-box; flex-shrink: 0;\">\n          <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#059669\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n            <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"><\/path>\n          <\/svg>\n        <\/div>\n\n        <!-- Title & Status -->\n        <div style=\"display: flex; flex-direction: column; min-width: 0;\">\n          <div style=\"font-size: 0.90rem; font-weight: 800; color: #0F172A; letter-spacing: 0.01em; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\">Zoom Tech Assistant<\/div>\n          <div style=\"font-size: 0.72rem; color: #64748B; display: flex; align-items: center; gap: 5px; line-height: 1.2; margin-top: 2px;\">\n            <span style=\"width: 6px; height: 6px; border-radius: 50%; background: #10B981; display: inline-block; flex-shrink: 0;\"><\/span>\n            <span style=\"white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\">Verified Solutions Desk<\/span>\n          <\/div>\n        <\/div>\n      <\/div>\n      \n      <!-- Right: Action Controls (Reset & Close inside top-right corner) -->\n      <div style=\"display: flex; align-items: center; gap: 4px; flex-shrink: 0;\">\n        <button id=\"zt-chat-btn-reset\" type=\"button\" title=\"Reset Conversation\" aria-label=\"Reset Conversation\" style=\"background: transparent; border: none; color: #64748B; cursor: pointer; min-width: 36px; min-height: 36px; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 6px; transition: all 0.15s ease;\">\n          <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\"\/><path d=\"M3 3v5h5\"\/><\/svg>\n        <\/button>\n        <button id=\"zt-chat-btn-close\" type=\"button\" title=\"Close Panel\" aria-label=\"Close Assistant Panel\" style=\"background: transparent; border: none; color: #64748B; cursor: pointer; min-width: 36px; min-height: 36px; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 6px; transition: all 0.15s ease;\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"><\/line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"><\/line><\/svg>\n        <\/button>\n      <\/div>\n    <\/div>\n\n    <!-- Scrollable Messages Container -->\n    <div id=\"zt-chat-messages\" style=\"flex: 1; min-height: 0; padding: 18px 16px; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; background: #F8FAFC; box-sizing: border-box;\">\n      <!-- Dynamic Messages Injected Here -->\n    <\/div>\n\n    <!-- Compact Horizontally-Scrollable Quick Action Chips -->\n    <div id=\"zt-chat-suggestions\" style=\"padding: 8px 14px; background: #FFFFFF; border-top: 1px solid #E2E8F0; display: flex; gap: 6px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; box-sizing: border-box; flex-shrink: 0;\">\n      <button type=\"button\" class=\"zt-chat-sug-chip\" onclick=\"handleSuggestionClick('Explore Products')\">Explore Products &rarr;<\/button>\n      <button type=\"button\" class=\"zt-chat-sug-chip\" onclick=\"handleSuggestionClick('Compare Products')\">Compare Products &rarr;<\/button>\n      <button type=\"button\" class=\"zt-chat-sug-chip\" onclick=\"handleSuggestionClick('Explore ZoomAccess')\">ZoomAccess &rarr;<\/button>\n      <button type=\"button\" class=\"zt-chat-sug-chip\" onclick=\"handleSuggestionClick('Contact Zoom Tech')\">Contact Sales &rarr;<\/button>\n    <\/div>\n\n    <!-- Prominent Integrated Message Composer -->\n    <form id=\"zt-chat-form\" onsubmit=\"handleUserChatSubmit(event)\" style=\"padding: 12px 14px; background: #FFFFFF; border-top: 1px solid #E2E8F0; display: flex; gap: 8px; align-items: center; box-sizing: border-box; margin: 0; flex-shrink: 0;\">\n      <input type=\"text\" id=\"zt-chat-input\" placeholder=\"Ask Zoom Tech Assistant...\" autocomplete=\"off\" style=\"flex: 1; height: 42px; padding: 0 14px; border: 1px solid #CBD5E1; border-radius: 8px; font-family: 'Plus Jakarta Sans', sans-serif; font-size: 0.88rem; color: #0F172A; background: #F8FAFC; outline: none; transition: border-color 0.15s ease, background 0.15s ease;\" onfocus=\"this.style.borderColor='#059669'; this.style.background='#FFFFFF';\" onblur=\"this.style.borderColor='#CBD5E1'; this.style.background='#F8FAFC';\" \/>\n      <button type=\"submit\" id=\"zt-chat-send\" aria-label=\"Send message\" style=\"width: 42px; height: 42px; border-radius: 8px; background: #059669; color: #FFFFFF; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background-color 0.15s ease, transform 0.15s ease; flex-shrink: 0;\">\n        <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><line x1=\"22\" y1=\"2\" x2=\"11\" y2=\"13\"><\/line><polygon points=\"22 2 15 22 11 13 2 9 22 2\"><\/polygon><\/svg>\n      <\/button>\n    <\/form>\n\n  <\/div>\n\n<\/div>\n\n<style>\n\/* ZOOM TECH ASSISTANT ENTERPRISE STYLES *\/\n#zt-chatbot-trigger:hover {\n  transform: translateY(-2px) scale(1.04);\n  box-shadow: 0 0 0 2.5px rgba(255, 255, 255, 0.95), 0 12px 30px rgba(15, 23, 42, 0.5), 0 0 25px rgba(16, 185, 129, 0.5);\n  border-color: #10B981;\n}\n\n#zt-chatbot-trigger:focus-visible {\n  outline: 2px solid #10B981;\n  outline-offset: 3px;\n}\n\n#zt-chat-btn-reset:hover, #zt-chat-btn-close:hover, #zt-chat-btn-mobile-back:hover {\n  color: #0F172A !important;\n  background: #F1F5F9 !important;\n}\n\n#zt-chat-btn-reset:focus-visible, #zt-chat-btn-close:focus-visible, #zt-chat-btn-mobile-back:focus-visible {\n  outline: 2px solid #059669 !important;\n  outline-offset: 2px !important;\n}\n\n#zt-chat-send:hover {\n  background-color: #047857 !important;\n}\n\n#zt-chat-send:active {\n  transform: scale(0.97) !important;\n}\n\n#zt-chat-send:focus-visible {\n  outline: 2px solid #10B981 !important;\n  outline-offset: 2px !important;\n}\n\n#zt-chat-suggestions::-webkit-scrollbar {\n  display: none;\n}\n\n.zt-chat-sug-chip {\n  background: #FFFFFF;\n  border: 1px solid #E2E8F0;\n  border-radius: 9999px;\n  padding: 6px 12px;\n  font-family: 'Plus Jakarta Sans', sans-serif;\n  font-size: 0.74rem;\n  font-weight: 700;\n  color: #334155;\n  cursor: pointer;\n  transition: all 0.15s ease;\n  white-space: nowrap;\n  flex-shrink: 0;\n  box-sizing: border-box;\n  display: inline-flex;\n  align-items: center;\n}\n.zt-chat-sug-chip:hover {\n  background: #F8FAFC;\n  border-color: #059669;\n  color: #059669;\n}\n\n\/* Assistant Message Bubble *\/\n.zt-chat-bubble-bot {\n  background: #FFFFFF;\n  border: 1px solid #E2E8F0;\n  border-radius: 12px;\n  padding: 14px 16px;\n  font-size: 0.88rem;\n  line-height: 1.6;\n  color: #1E293B;\n  width: 100%;\n  box-sizing: border-box;\n  box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);\n  word-break: break-word;\n}\n\n\/* User Message Bubble *\/\n.zt-chat-bubble-user {\n  background: #059669;\n  color: #FFFFFF;\n  border-radius: 14px 14px 2px 14px;\n  padding: 10px 14px;\n  font-size: 0.88rem;\n  line-height: 1.45;\n  font-weight: 600;\n  align-self: flex-end;\n  max-width: 82%;\n  box-shadow: 0 2px 6px rgba(5, 150, 105, 0.2);\n  word-break: break-word;\n}\n\n.zt-chat-bubble-bot a {\n  color: #059669;\n  font-weight: 700;\n  text-decoration: underline;\n}\n\n.zt-chat-card-link {\n  display: inline-flex;\n  align-items: center;\n  gap: 4px;\n  margin-top: 8px;\n  background: #FFFFFF;\n  border: 1px solid #CBD5E1;\n  padding: 7px 14px;\n  border-radius: 6px;\n  font-size: 0.80rem;\n  font-weight: 700;\n  color: #0F172A !important;\n  text-decoration: none !important;\n  transition: all 0.15s ease;\n}\n.zt-chat-card-link:hover {\n  background: #059669;\n  color: #FFFFFF !important;\n  border-color: #059669;\n}\n\n\/* DESKTOP (>= 1024px) *\/\n@media (min-width: 1024px) {\n  #zt-chatbot-panel {\n    bottom: 92px !important;\n    right: 24px !important;\n    width: 384px !important;\n    height: 580px !important;\n    max-height: calc(100vh - 110px) !important;\n    border-radius: 16px !important;\n    border: 1px solid #E2E8F0 !important;\n    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.16) !important;\n    z-index: 2000000 !important;\n  }\n  #zt-chat-btn-mobile-back {\n    display: none !important;\n  }\n}\n\n\/* TABLET (768px - 1023px) *\/\n@media (min-width: 768px) and (max-width: 1023px) {\n  #zt-chatbot-panel {\n    bottom: 88px !important;\n    right: 20px !important;\n    width: 360px !important;\n    height: 520px !important;\n    max-height: calc(100vh - 100px) !important;\n    border-radius: 14px !important;\n    z-index: 2000000 !important;\n  }\n  #zt-chat-btn-mobile-back {\n    display: none !important;\n  }\n}\n\n\/* MOBILE FULL SCREEN (<= 767px) *\/\n@media (max-width: 767px) {\n  #zt-chatbot-trigger {\n    bottom: 18px !important;\n    right: 18px !important;\n    width: 54px !important;\n    height: 54px !important;\n  }\n  \n  #zt-chatbot-panel {\n    position: fixed !important;\n    top: 0 !important;\n    left: 0 !important;\n    right: 0 !important;\n    bottom: 0 !important;\n    width: 100vw !important;\n    max-width: 100vw !important;\n    height: 100vh !important;\n    height: 100dvh !important;\n    max-height: 100dvh !important;\n    border-radius: 0 !important;\n    border: none !important;\n    box-shadow: none !important;\n    z-index: 2000000 !important;\n  }\n\n  #zt-chat-btn-mobile-back {\n    display: inline-flex !important;\n  }\n\n  #zt-chat-header {\n    padding: 10px 14px !important;\n    height: 58px !important;\n    box-sizing: border-box !important;\n  }\n\n  #zt-chat-form {\n    padding: 10px 12px max(10px, env(safe-area-inset-bottom, 10px)) 12px !important;\n    gap: 8px !important;\n  }\n\n  #zt-chat-input {\n    height: 48px !important;\n    font-size: 0.90rem !important;\n    padding: 0 14px !important;\n    border-radius: 10px !important;\n  }\n\n  #zt-chat-send {\n    width: 48px !important;\n    height: 48px !important;\n    min-width: 48px !important;\n    min-height: 48px !important;\n    border-radius: 10px !important;\n  }\n\n  #zt-chat-send svg {\n    width: 22px !important;\n    height: 22px !important;\n  }\n}\n\n\/* COMPARISON TRAY COLLISION AVOIDANCE ON MOBILE *\/\n@media (max-width: 768px) {\n  body.zt-compare-tray-visible button#zt-chatbot-trigger {\n    bottom: 155px !important;\n  }\n}\n\nbody.zt-chat-active-mobile {\n  overflow: hidden !important;\n}\n<\/style>\n\n<script>\n(function() {\n  var chatOpen = false;\n  var messagesContainer = null;\n  var chatInput = null;\n  var savedScrollY = 0;\n\n  function initChatbot() {\n    var triggerBtn = document.getElementById('zt-chatbot-trigger');\n    var closeBtn = document.getElementById('zt-chat-btn-close');\n    var backBtn = document.getElementById('zt-chat-btn-mobile-back');\n    var resetBtn = document.getElementById('zt-chat-btn-reset');\n    var panel = document.getElementById('zt-chatbot-panel');\n    messagesContainer = document.getElementById('zt-chat-messages');\n    chatInput = document.getElementById('zt-chat-input');\n\n    if (!triggerBtn || !panel) return;\n\n    triggerBtn.onclick = function() {\n      toggleChatPanel();\n    };\n\n    if (closeBtn) {\n      closeBtn.onclick = function() {\n        toggleChatPanel(false);\n      };\n    }\n\n    if (backBtn) {\n      backBtn.onclick = function() {\n        toggleChatPanel(false);\n      };\n    }\n\n    if (resetBtn) {\n      resetBtn.onclick = function() {\n        if (messagesContainer) {\n          messagesContainer.innerHTML = '';\n          sendWelcomeMessage();\n        }\n      };\n    }\n\n    \/\/ Escape key closes chat\n    document.addEventListener('keydown', function(e) {\n      if (e.key === 'Escape' && chatOpen) {\n        toggleChatPanel(false);\n      }\n    });\n\n    sendWelcomeMessage();\n  }\n\n  function toggleChatPanel(forceState) {\n    var panel = document.getElementById('zt-chatbot-panel');\n    var triggerBtn = document.getElementById('zt-chatbot-trigger');\n    if (!panel) return;\n\n    chatOpen = (forceState !== undefined) ? forceState : !chatOpen;\n\n    if (chatOpen) {\n      savedScrollY = window.scrollY || window.pageYOffset || 0;\n      panel.style.display = 'flex';\n      if (triggerBtn && window.innerWidth <= 767) {\n        triggerBtn.style.display = 'none';\n        document.body.classList.add('zt-chat-active-mobile');\n      }\n      if (chatInput) setTimeout(function() { chatInput.focus(); }, 150);\n    } else {\n      panel.style.display = 'none';\n      if (triggerBtn) triggerBtn.style.display = 'flex';\n      document.body.classList.remove('zt-chat-active-mobile');\n      if (window.innerWidth <= 767) {\n        window.scrollTo(0, savedScrollY);\n      }\n    }\n  }\n\n  function appendBotMessage(htmlContent) {\n    if (!messagesContainer) return;\n    var div = document.createElement('div');\n    div.className = 'zt-chat-bubble-bot';\n    div.innerHTML = htmlContent;\n    messagesContainer.appendChild(div);\n    messagesContainer.scrollTop = messagesContainer.scrollHeight;\n  }\n\n  function appendUserMessage(text) {\n    if (!messagesContainer) return;\n    var div = document.createElement('div');\n    div.className = 'zt-chat-bubble-user';\n    div.textContent = text;\n    messagesContainer.appendChild(div);\n    messagesContainer.scrollTop = messagesContainer.scrollHeight;\n  }\n\n  function sendWelcomeMessage() {\n    appendBotMessage(\n      \"Hi! I'm the <strong>Zoom Tech Assistant<\/strong>. I can help you explore our access-control and security solutions, compare products, or assist with your project enquiry.<br\/><br\/>How can I help you today?\"\n    );\n  }\n\n  window.handleSuggestionClick = function(type) {\n    if (type === 'Explore Products') {\n      appendUserMessage(\"Explore Products\");\n      setTimeout(function() {\n        appendBotMessage(\n          \"We offer 5 core pedestrian entrance hardware families engineered for commercial lobbies, transit, and high-security checkpoints:<br\/>\" +\n          \"\u2022 <strong>SWING:<\/strong> Architectural swing barriers<br\/>\" +\n          \"\u2022 <strong>SPEED:<\/strong> Optical speed swing gates<br\/>\" +\n          \"\u2022 <strong>MAX:<\/strong> Full height security turnstiles<br\/>\" +\n          \"\u2022 <strong>WING:<\/strong> Retractable flap barriers<br\/>\" +\n          \"\u2022 <strong>TRI:<\/strong> Robust 3-arm tripod turnstiles<br\/><br\/>\" +\n          \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/products-new\/' class='zt-chat-card-link'>View Products Catalogue &rarr;<\/a>\"\n        );\n      }, 300);\n    } else if (type === 'Compare Products') {\n      appendUserMessage(\"Compare Products\");\n      setTimeout(function() {\n        appendBotMessage(\n          \"Zoom Tech supports side-by-side product comparison. Please note our engineering rule: <strong>Comparisons are strictly within the same category<\/strong> (e.g., SWING with SWING, SPEED with SPEED).<br\/><br\/>\" +\n          \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/compare-new\/' class='zt-chat-card-link'>Open Comparison Tool &rarr;<\/a>\"\n        );\n      }, 300);\n    } else if (type === 'Explore ZoomAccess') {\n      appendUserMessage(\"Tell me about ZoomAccess\");\n      setTimeout(function() {\n        appendBotMessage(\n          \"<strong>ZoomAccess<\/strong> is Zoom Tech's access-control management platform for turnstiles and connected systems. Core capabilities include:<br\/>\" +\n          \"\u2022 Turnstile Management Platform &amp; Remote Lane Configuration<br\/>\" +\n          \"\u2022 Access Control Management &amp; Scheduling Policies<br\/>\" +\n          \"\u2022 Lift Control System Integration (Elevator Relay Dispatch)<br\/>\" +\n          \"\u2022 VMS and Destination Control System Sync<br\/>\" +\n          \"\u2022 Access Role Management &amp; Audit Reporting Portal<br\/><br\/>\" +\n          \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/access\/' class='zt-chat-card-link'>Explore ZoomAccess &rarr;<\/a>\"\n        );\n      }, 300);\n    } else if (type === 'Contact Zoom Tech') {\n      appendUserMessage(\"How can I contact Zoom Tech?\");\n      setTimeout(function() {\n        appendBotMessage(\n          \"You can reach Zoom Tech at our Singapore headquarters:<br\/>\" +\n          \"\u2022 <strong>Address:<\/strong> 68 Senoko Road, Singapore 758128<br\/>\" +\n          \"\u2022 <strong>Phone \/ WhatsApp:<\/strong> +65 6904 1285<br\/>\" +\n          \"\u2022 <strong>Sales Desk:<\/strong> salesteam@zoomtech.com.sg<br\/>\" +\n          \"\u2022 <strong>Service Desk:<\/strong> serviceteam@zoomtech.com.sg<br\/><br\/>\" +\n          \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/' class='zt-chat-card-link'>Open Contact Page &rarr;<\/a>\"\n        );\n      }, 300);\n    }\n  };\n\n  window.handleUserChatSubmit = function(e) {\n    if (e) e.preventDefault();\n    if (!chatInput) return;\n    var query = chatInput.value.trim();\n    if (!query) return;\n\n    appendUserMessage(query);\n    chatInput.value = '';\n\n    \/\/ Process Knowledge Response\n    setTimeout(function() {\n      processBotResponse(query);\n    }, 350);\n  };\n\n  function processBotResponse(q) {\n    var raw = q.toLowerCase();\n    var query = raw.replace(\/[?.,!\/]\/g, ' ');\n\n    \/\/ 1. Company Overview\n    var isCompanyQuery = (\n      (query.includes('zoom tech') || query.includes('zoomtech') || query.includes('this company') || query.includes('the company') || query.includes('your company') || query.includes('about you') || query.includes('who are you')) &&\n      (query.includes('about') || query.includes('what is') || query.includes('what does') || query.includes('do') || query.includes('provide') || query.includes('offer') || query.includes('kind of') || query.includes('tell me') || query.includes('who is') || query.includes('overview') || query.includes('background') || query.includes('profile'))\n    ) || (\n      query.trim() === 'zoom tech' || query.trim() === 'about zoom tech' || query.trim() === 'what is zoom tech' || query.trim() === 'what does zoom tech do'\n    );\n\n    if (isCompanyQuery && !query.includes('access') && !query.includes('face') && !query.includes('surveillance') && !query.includes('iot') && !query.includes('gate') && !query.includes('price')) {\n      appendBotMessage(\n        \"<strong>Zoom Tech Pte Ltd<\/strong> is a Singapore-based B2B access-control and security technology company specializing in pedestrian entrance control and connected security infrastructure. Our solutions include:<br\/>\" +\n        \"\u2022 <strong>ZoomGate:<\/strong> Pedestrian turnstiles and optical speed gates (SWING, SPEED, MAX, WING, TRI).<br\/>\" +\n        \"\u2022 <strong>ZoomAccess:<\/strong> Web-based turnstile management, lift control dispatch, and VMS integration.<br\/>\" +\n        \"\u2022 <strong>ZoomFace:<\/strong> AI biometric facial recognition admission terminals.<br\/>\" +\n        \"\u2022 <strong>ZoomSurveillance:<\/strong> i-LIDS\u00ae certified video analytics and Central Monitoring Station (CMS) platforms.<br\/>\" +\n        \"\u2022 <strong>ZoomIOT:<\/strong> Facility telemetry and site gateways.<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/about-new\/' class='zt-chat-card-link'>About Zoom Tech &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ 2. ZoomAccess Inquiries\n    if (query.includes('zoomaccess') || query.includes('zoom access') || (query.includes('access') && (query.includes('what is') || query.includes('tell me') || query.includes('platform') || query.includes('management') || query.includes('explain') || query.includes('about')))) {\n      appendBotMessage(\n        \"<strong>ZoomAccess<\/strong> is Zoom Tech's access-control management platform engineered for turnstiles and connected facility ecosystems. Verified capabilities include:<br\/>\" +\n        \"\u2022 <strong>Turnstile Management Platform:<\/strong> Centralized multi-lane oversight and status monitoring.<br\/>\" +\n        \"\u2022 <strong>Remote Control &amp; Configuration:<\/strong> Over-the-network lane tuning, speed adjustment, and operational mode control.<br\/>\" +\n        \"\u2022 <strong>Access Control Management:<\/strong> Live credential admission logic across smartcards, QR codes, and biometrics.<br\/>\" +\n        \"\u2022 <strong>Scheduling Management:<\/strong> Flexible time-zones, holiday access calendars, and free-passage hours.<br\/>\" +\n        \"\u2022 <strong>VMS &amp; Destination Control Integration:<\/strong> Direct event linking with video surveillance and intelligent elevator destination dispatch.<br\/>\" +\n        \"\u2022 <strong>Lift Control System Integration:<\/strong> Relay and protocol-level integration with elevator floor accessibility controls.<br\/>\" +\n        \"\u2022 <strong>Access Role Management:<\/strong> Granular permission assignments for employees, contractors, and visitors.<br\/>\" +\n        \"\u2022 <strong>Reporting Portal:<\/strong> Comprehensive audit logs, entrance throughput analytics, and incident reports.<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/access\/' class='zt-chat-card-link'>Explore ZoomAccess &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ 3. Comparison Rules & Cross-Category Handling\n    if (query.includes('compare') || query.includes('comparison')) {\n      if ((query.includes('swing') && query.includes('max')) || \n          (query.includes('facial') && query.includes('swing')) || \n          (query.includes('speed') && query.includes('tri')) ||\n          (query.includes('wing') && query.includes('max'))) {\n        appendBotMessage(\n          \"Under Zoom Tech engineering rules, <strong>products can only be compared within the same category<\/strong> (for example, comparing a Swing model with another Swing model). Mixed-category comparisons (such as Swing vs MAX) are not supported because their chassis form factors and passage mechanics differ.<br\/><br\/>\" +\n          \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/compare-new\/' class='zt-chat-card-link'>Go to Product Comparison &rarr;<\/a>\"\n        );\n        return;\n      }\n      appendBotMessage(\n        \"You can compare specifications for up to 3 models simultaneously within the same product family (e.g. SWING with SWING, or SPEED with SPEED).<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/compare-new\/' class='zt-chat-card-link'>Launch Compare Workspace &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ 4. Specific Model Configuration Request\n    var modelMatch = query.match(\/(asw-ar-\\d+|sg-ar-\\d+|sg-ah-\\d+|ft-fm-\\d+|afh-ar-\\d+|tp-md-\\d+[\\w-]*|asd-sa-\\d+)\/i);\n    if (query.includes('config') || (modelMatch && query.includes('configure'))) {\n      var mCode = modelMatch ? modelMatch[0].toUpperCase() : \"ASW-AR-24\";\n      appendBotMessage(\n        \"You can configure chassis metallurgy (SUS304\/SUS316\/Aluminium), architectural finish, barrier wings, and biometric integrations for <strong>\" + mCode + \"<\/strong> in our Interactive Configurator Studio.<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/configurator-new\/?model=\" + encodeURIComponent(mCode) + \"' class='zt-chat-card-link'>Configure \" + mCode + \" &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ 5. Quotation \/ Pricing \/ Cost \/ Enquire\n    if (query.includes('quote') || query.includes('quotation') || query.includes('price') || query.includes('pricing') || query.includes('cost') || query.includes('tender') || query.includes('how much') || query.includes('enquire') || query.includes('enquiry')) {\n      appendBotMessage(\n        \"Because Zoom Tech entrance security systems are engineered to custom site dimensions, metallurgy, and access integrations, pricing is tailored per project requirements. Our Singapore engineering team will prepare an official quotation for your specification.<br\/><br\/>\" +\n        \"\u2022 <strong>Sales Desk:<\/strong> salesteam@zoomtech.com.sg<br\/>\" +\n        \"\u2022 <strong>Telephone \/ WhatsApp:<\/strong> +65 6904 1285<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/' class='zt-chat-card-link'>Request Official Quote &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ 6. ZoomFace \/ Biometrics Inquiries\n    if (query.includes('zoomface') || query.includes('zoom face') || query.includes('biometric') || query.includes('facial recognition') || query.includes('face recognition') || (query.includes('facial') && !query.includes('compare'))) {\n      appendBotMessage(\n        \"<strong>ZoomFace<\/strong> provides AI-powered biometric admission control terminals integrated directly into turnstiles and speed gates. It supports local instant facial matching in under 0.2s for contactless pedestrian admission.<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/facial-recognition\/' class='zt-chat-card-link'>Explore ZoomFace Biometrics &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ 7. ZoomSurveillance Inquiries\n    if (query.includes('zoomsurveillance') || query.includes('zoom surveillance') || query.includes('surveillance') || query.includes('cctv') || query.includes('camera') || query.includes('i-lids') || query.includes('hosdb') || query.includes('video analytics')) {\n      appendBotMessage(\n        \"<strong>ZoomSurveillance<\/strong> delivers intelligent video analytics and Central Monitoring Station (CMS) solutions certified as a primary detection system by the UK Home Office (HoSDB \/ i-LIDS\u00ae) for sterile zone perimeter monitoring, featuring ClickThru\u2122 3-click alarm management.<br\/><br\/>\" +\n        \"<a href='https:\/\/www.zoomtech.com.sg\/staging\/surveillance\/' class='zt-chat-card-link'>Explore ZoomSurveillance &rarr;<\/a>\"\n      );\n      return;\n    }\n\n    \/\/ Default intelligent fall-through\n    appendBotMessage(\n      \"Thank you for your question. You can explore our entrance hardware catalogue or connect directly with our engineering team for specifications, drawings, and quotations:<br\/><br\/>\" +\n      \"\u2022 <strong>Products Catalogue:<\/strong> <a href='https:\/\/www.zoomtech.com.sg\/staging\/products-new\/' class='zt-chat-card-link'>View Products &rarr;<\/a><br\/>\" +\n      \"\u2022 <strong>Engineering Consultation:<\/strong> <a href='https:\/\/www.zoomtech.com.sg\/staging\/contact-new\/' class='zt-chat-card-link'>Contact Sales Desk &rarr;<\/a>\"\n    );\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', initChatbot);\n  } else {\n    initChatbot();\n  }\n})();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>PRODUCT COMPARISON &amp; DATASHEETS Compare ZoomGate Systems Side-by-side technical evaluation across Zoom Tech&#8217;s five flagship pedestrian gate architectures. Sourced directly from verified manufacturer datasheets. SWING DOOR BARRIER SWING Gate System ZoomGate sets the standards when it comes to developing access gates that optimise flowing design with outstanding performance to provide compelling value. VERIFIED FEATURES \u2022 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-1172","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/pages\/1172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/comments?post=1172"}],"version-history":[{"count":4,"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/pages\/1172\/revisions"}],"predecessor-version":[{"id":1375,"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/pages\/1172\/revisions\/1375"}],"wp:attachment":[{"href":"https:\/\/www.zoomtech.com.sg\/staging\/wp-json\/wp\/v2\/media?parent=1172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}