1/* nav build 2026-06-13-35-link-explore */ 2/* Shared header & footer for all pages. 3 Use: include <script src="/assets/js/layout.js" data-base="/"></script> on each page 4 (set data-base to "" for same-folder, "../" for one-deep, etc.) 5 then place <div id="site-nav"></div> and <div id="site-footer"></div>. 6*/ 7(function () { 8 const script = document.currentScript; 9 const base = (script && script.dataset.base) || ''; 10 11 // Reusable inline SVG icons (16x16 stroke style) 12 const I = { 13 target: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><circle cx="12" cy="12" r="5"/><circle cx="12" cy="12" r="1.5" fill="currentColor"/></svg>', 14 grid: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="7" height="7" rx="1"/><rect x="14" y="3" width="7" height="7" rx="1"/><rect x="3" y="14" width="7" height="7" rx="1"/><rect x="14" y="14" width="7" height="7" rx="1"/></svg>', 15 brain: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 4a3 3 0 0 0-3 3 3 3 0 0 0-3 3 3 3 0 0 0 1 2.2A3 3 0 0 0 4 15a3 3 0 0 0 3 3 3 3 0 0 0 3 2"/><path d="M15 4a3 3 0 0 1 3 3 3 3 0 0 1 3 3 3 3 0 0 1-1 2.2A3 3 0 0 1 20 15a3 3 0 0 1-3 3 3 3 0 0 1-3 2"/><path d="M12 4v16"/></svg>', 16 memory: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><ellipse cx="12" cy="6" rx="8" ry="3"/><path d="M4 6v6c0 1.7 3.6 3 8 3s8-1.3 8-3V6"/><path d="M4 12v6c0 1.7 3.6 3 8 3s8-1.3 8-3v-6"/></svg>', 17 plug: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9 2v6"/><path d="M15 2v6"/><path d="M6 8h12v3a6 6 0 0 1-6 6 6 6 0 0 1-6-6V8z"/><path d="M12 17v5"/></svg>', 18 shield: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2 4 5v6c0 5 3.5 9 8 11 4.5-2 8-6 8-11V5z"/><path d="m9 12 2 2 4-4"/></svg>', 19 cloud: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 18a4 4 0 0 0 0-8 6 6 0 0 0-11.5-2A4 4 0 0 0 6 18z"/></svg>', 20 chart: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3v18h18"/><rect x="7" y="13" width="3" height="5"/><rect x="12" y="9" width="3" height="9"/><rect x="17" y="5" width="3" height="13"/></svg>', 21 cycle: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 12a9 9 0 0 1 15-6.7L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-15 6.7L3 16"/><path d="M3 21v-5h5"/></svg>', 22 model: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="6" cy="6" r="2.5"/><circle cx="18" cy="6" r="2.5"/><circle cx="12" cy="18" r="2.5"/><path d="M7.7 7.5 11 16M16.3 7.5 13 16M8 6h8"/></svg>', 23 coin: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="9"/><path d="M12 7v10M9 9.5c0-1.4 1.3-2.5 3-2.5s3 1.1 3 2.5-1.3 2.5-3 2.5-3 1.1-3 2.5 1.3 2.5 3 2.5 3-1.1 3-2.5"/></svg>', 24 shop: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3h18l-1.5 7h-15z"/><path d="M5 10v10h14V10"/><path d="M9 14h6"/></svg>', 25 users: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="9" cy="8" r="3"/><path d="M3 20c0-3.3 2.7-6 6-6s6 2.7 6 6"/><circle cx="17" cy="7" r="2.5"/><path d="M14.5 13.5c1-.9 2.3-1.5 2.5-1.5 2.5 0 4.5 2 4.5 4.5"/></svg>', 26 server: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="6" rx="1.5"/><rect x="3" y="14" width="18" height="6" rx="1.5"/><circle cx="7" cy="7" r="1" fill="currentColor"/><circle cx="7" cy="17" r="1" fill="currentColor"/></svg>', 27 chat: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12c0 4-4 7-9 7-1.4 0-2.7-.2-3.9-.7L3 20l1.5-4.2C3.5 14.5 3 13.3 3 12
27c0-4 4-7 9-7s9 3 9 7z"/></svg>', 28 handshake:'<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M11 12 8 9l-3 3 5 5 3-3"/><path d="m13 12 3-3 3 3-5 5-3-3"/><path d="M3 14V8h6M21 10v6h-6"/></svg>', 29 rocket: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M13 3c4 0 8 4 8 8l-7 7-7-7c0-4 4-8 6-8z"/><circle cx="14" cy="11" r="2"/><path d="m5 19 2-2M3 21l4-4M9 21l-2-2"/></svg>', 30 book: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4h12a3 3 0 0 1 3 3v14H7a3 3 0 0 1-3-3z"/><path d="M19 18H7"/></svg>', 31 news: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="14" height="16" rx="1.5"/><path d="M17 8h4v10a2 2 0 0 1-2 2h-2"/><path d="M7 8h6M7 12h6M7 16h4"/></svg>', 32 mic: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="9" y="3" width="6" height="11" rx="3"/><path d="M5 11a7 7 0 0 0 14 0M12 18v3"/></svg>', 33 calendar: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 10h18M8 3v4M16 3v4"/></svg>', 34 code: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="8 7 3 12 8 17"/><polyline points="16 7 21 12 16 17"/><line x1="14" y1="5" x2="10" y2="19"/></svg>', 35 bank: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 10 12 4l9 6"/><path d="M5 10v8M9 10v8M15 10v8M19 10v8M3 21h18"/></svg>', 36 heart: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 21s-7-4.5-9-9.5C1.5 8 4 4 8 4c2 0 3.3 1 4 2 .7-1 2-2 4-2 4 0 6.5 4 5 7.5C19 16.5 12 21 12 21z"/></svg>', 37 flag: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 22V4M4 4h12l-2 4 2 4H4"/></svg>', 38 gear: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3h.1A1.7 1.7 0 0 0 10 4V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5h.1a1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8v.1A1.7 1.7 0 0 0 20.9 10H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z"/></svg>', 39 truck: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 6h11v10H3z"/><path d="M14 9h4l3 3v4h-7"/><circle cx="7" cy="18" r="2"/><circle cx="17" cy="18" r="2"/></svg>', 40 bolt: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 4 14 11 14 9 22 20 10 13 10 13 2"/></svg>', 41 bag: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 7h12l-1 14H7z"/><path d="M9 7V5a3 3 0 0 1 6 0v2"/></svg>', 42 radio: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="2"/><path d="M16.2 7.8a6 6 0 0 1 0 8.5M7.8 16.3a6 6 0 0 1 0-8.5M19 5a10 10 0 0 1 0 14M5 19a10 10 0 0 1 0-14"/></svg>', 43 }; 44 45 const menuItem = (icon, title, desc, href) => ` 46 <a class="menu-item" href="${href}">
47 <span class="menu-icon">${icon}</span> 48 <span> 49 <span class="menu-title">${title}</span> 50 <span class="menu-desc">${desc}</span> 51 </span> 52 </a>`; 53 54 const navHTML = ` 55 <nav class="nav"> 56 <div class="nav-inner"> 57 <a class="brand" href="/"><img src="/assets/img/xyner7-clean.png" alt="xyner.ai" fetchpriority="high" decoding="async" style="height:32px;width:auto;display:block"/></a> 58 59 <ul class="nav-links" id="navLinks"> 60 <li class="nav-item"> 61 <a class="nav-link" href="javascript:void(0)" onclick="(function(a){if(window.matchMedia('(max-width:1100px)').matches){var li=a.parentElement;var ul=li.parentElement;var willOpen=!li.classList.contains('is-open');ul.querySelectorAll('.nav-item.is-open').forEach(function(n){if(n!==li)n.classList.remove('is-open');});li.classList.toggle('is-open',willOpen);if(willOpen){requestAnimationFrame(function(){ul.scrollTop=Math.max(0,ul.scrollTop+li.getBoundingClientRect().top-ul.getBoundingClientRect().top-4);});}}return false;})(this);return false;">AI Platform <span class="chev"></span></a> 62 <div class="mega"> 63 <ul> 64 <h5>The platform</h5> 65 ${menuItem(I.grid, 'Platform Overview', 'End-to-end agentic AI platform', `/platform/overview.html`)} 66 ${menuItem(I.server, 'Reference Architecture', 'Control plane, data plane', `/platform/architecture.html`)} 67 ${menuItem(I.brain, 'Reasoning & Planning', 'Chain-of-thought, decision trees', `/platform/reasoning-engine.html`)} 68 ${menuItem(I.users, 'Multi-Agent Orchestration', 'Specialist agents collaborate', `/platform/multi-agent.html`)} 69 </ul> 70 <ul> 71 <h5>Engineering</h5> 72 ${menuItem(I.plug, 'Enterprise Integrations', '1000+ first-party connectors', `/platform/integrations.html`)} 73 ${menuItem(I.shield, 'Security & Trust', 'Guardrails, RBAC, audit', `/platform/security.html`)} 74 ${menuItem(I.cloud, 'Deployment Models', 'Cloud, hybrid, on-prem, sovereign', `/platform/deployment.html`)} 75 ${menuItem(I.chart, 'Observability', 'Audit trails, traces, dashboards', `/platform/observability.html`)} 76 </ul> 77 <ul> 78 <h5>Operate & extend</h5> 79 ${menuItem(I.cycle, 'Agent Lifecycle', 'Build, version, test, rollout',`/platform/lifecycle.html`)} 80 ${menuItem(I.model, 'Multi-LLM Routing', 'OpenAI, Claude, Gemini, Llama', `/platform/multi-llm.html`)} 81 ${menuItem(I.memory, 'Memory & Context', 'Persistent enterprise memory', `/platform/memory-context.html`)} 82 ${menuItem(I.shop, 'Agent Marketplace', 'Pre-built agents & starter packs', `/platform/agent-marketplace.html`)} 83 </ul> 84 <div class="menu-footer"> 85 <span>Explore the agent operating system for the enterprise.</span> 86 <a href="/platform/overview.html">View all platform pages â</a> 87 </div> 88 </div> 89 </li> 90 91 <li class="nav-item"> 92 <a class="nav-link" href="javascript:void(0)" onclick="(function(a){if(window.matchMedia('(max-width:1100px)').matches){var li=a.parentElement;var ul=li.parentElement;var willOpen=!li.classList.contains('is-open');ul.querySelectorAll('.nav-item.is-open').forEach(function(n){if(n!==li)n.classList.remove('is-open');});li.classList.toggle('is-open',willOpen);if(willOpen){requestAnimationFrame(function(){ul.scrollTop=Math.max(0,ul.scrollTop+li.getBoundingClientRect().top-ul.getBoundingClientRect().top-4);});}}return false;})(this);return false;">Capabilities <span class="chev"></span></a> 93 <div class="mega"> 94 <ul> 95 <h5>Autonomy & reasoning</h5> 96 ${menuItem(I.target,'Autonomous Goal Execution', 'Goals in, outcomes out', `/capabilities/autonomous-goal-execution.html`)} 97 ${menuItem(I.users, 'Multi-Agent Orchestration', 'Specialist agents collaborate', `/capabilities/multi-agent-orchestration.html`)} 98 ${menuItem(I.brain, 'Reasoning & Planning', 'Decompose, plan, adapt', `/capabilities/reasoning-planning.html`)} 99 ${menuItem(I.memory,'Memory & Context', 'Long-running enterprise workflows', `/capabilities/memory-context.html`)} 100 </ul> 101 <ul> 102 <h5>Tools & intelligence</h5>
103 ${menuItem(I.model, 'Multi-LLM Support', 'Model-agnostic by architecture', `/capabilities/multi-llm.html`)} 104 ${menuItem(I.book, 'RAG & Grounding', 'Policy-aware retrieval', `/capabilities/rag.html`)} 105 ${menuItem(I.plug, 'Enterprise Integrations', '1000+ first-party connectors', `/capabilities/integrations.html`)} 106 ${menuItem(I.bolt, 'Tool & API Invocation', 'APIs, SQL, RPA, tickets', `/capabilities/tool-api-invocation.html`)} 107 </ul> 108 <ul> 109 <h5>Governance & ops</h5> 110 ${menuItem(I.gear, 'Workflow Automation', 'Low-code process design', `/capabilities/workflow-automation.html`)} 111 ${menuItem(I.shield, 'RBAC & Access', 'Fine-grained, role-inherited', `/capabilities/rbac.html`)} 112 ${menuItem(I.handshake,'Human Approval Gates', 'Checkpoints & escalation', `/capabilities/human-approval.html`)} 113 ${menuItem(I.chart, 'Audit & Observability', 'Replay, traces, dashboards', `/capabilities/audit-observability.html`)} 114 </ul> 115 <div class="menu-footer"> 116 <span>22 first-class capabilities for the agentic enterprise.</span> 117 <a href="/capabilities/index.html">View all 22 capabilities â</a> 118 </div> 119 </div> 120 </li> 121 122 <li class="nav-item"> 123 <a class="nav-link" href="javascript:void(0)" onclick="(function(a){if(window.matchMedia('(max-width:1100px)').matches){var li=a.parentElement;var ul=li.parentElement;var willOpen=!li.classList.contains('is-open');ul.querySelectorAll('.nav-item.is-open').forEach(function(n){if(n!==li)n.classList.remove('is-open');});li.classList.toggle('is-open',willOpen);if(willOpen){requestAnimationFrame(function(){ul.scrollTop=Math.max(0,ul.scrollTop+li.getBoundingClientRect().top-ul.getBoundingClientRect().top-4);});}}return false;})(this);return false;">Solutions <span class="chev"></span></a> 124 <div class="mega"> 125 <ul> 126 <h5>Front office</h5> 127 ${menuItem(I.chat, 'Customer Support', 'End-to-end resolution', `/solutions/customer-support.html`)} 128 ${menuItem(I.rocket,'Sales Operations', 'Pipeline, RFP, deal desk', `/solutions/sales-ops.html`)} 129 ${menuItem(I.chart, 'Analytics & Insights', 'NL-to-SQL, scorecards', `/solutions/analytics.html`)} 130 ${menuItem(I.radio, 'Event-Driven Automation', 'React in milliseconds', `/solutions/event-driven.html`)} 131 </ul> 132 <ul> 133 <h5>Back office</h5> 134 ${menuItem(I.coin, 'Finance & Accounting', 'Close, AP, FP&A, treasury', `/solutions/finance.html`)} 135 ${menuItem(I.bag, 'Procurement', 'Source-to-settle on autopilot', `/solutions/procurement.html`)} 136 ${menuItem(I.users, 'Human Resources', 'Onboarding, helpdesk, talent', `/solutions/hr.html`)} 137 ${menuItem(I.server,'IT Service Management', 'Triage, remediate, change', `/solutions/itsm.html`)} 138 </ul> 139 <ul> 140 <h5>Cross-functional</h5> 141 ${menuItem(I.shield,'Compliance Operations', 'Continuous controls & audit', `/solutions/compliance-ops.html`)} 142 ${menuItem(I.cycle, 'Agentic Process Mining', 'Discover, score, automate', `/solutions/process-mining.html`)} 143 ${menuItem(I.heart, 'Self-Healing Workflows', 'Adapt, recover, learn', `/solutions/self-healing.html`)} 144 ${menuItem(I.book, 'Legal Operations', 'Contracts, NDA, matter intake', `/solutions/legal-ops.html`)} 145 </ul> 146 <div class="menu-footer"> 147 <span>Pre-built, customizable agentic solutions for every function.</span> 148 <a href="/solutions/index.html">All solutions â</a> 149 </div> 150 </div> 151 </li> 152 153 <li class="nav-item"> 154 <a class="nav-link" href="javascript:void(0)" onclick="(function(a){if
154(window.matchMedia('(max-width:1100px)').matches){var li=a.parentElement;var ul=li.parentElement;var willOpen=!li.classList.contains('is-open');ul.querySelectorAll('.nav-item.is-open').forEach(function(n){if(n!==li)n.classList.remove('is-open');});li.classList.toggle('is-open',willOpen);if(willOpen){requestAnimationFrame(function(){ul.scrollTop=Math.max(0,ul.scrollTop+li.getBoundingClientRect().top-ul.getBoundingClientRect().top-4);});}}return false;})(this);return false;">Industries <span class="chev"></span></a> 155 <div class="mega"> 156 <ul> 157 <h5>Financial services</h5> 158 ${menuItem(I.bank, 'Banking', 'Fraud, KYC, complaints, lending', `/industries/banking.html`)} 159 ${menuItem(I.shield, 'Insurance', 'Underwriting, claims, servicing', `/industries/insurance.html`)} 160 ${menuItem(I.chart, 'Capital Markets', 'Trade ops, settlement, research', `/industries/capital-markets.html`)} 161 ${menuItem(I.users, 'Professional Services', 'Engagements, knowledge, drafts', `/industries/professional-services.html`)} 162 </ul> 163 <ul> 164 <h5>Consumer & healthcare</h5> 165 ${menuItem(I.shop, 'Retail & CPG', 'Merchandising, store ops, support', `/industries/retail.html`)} 166 ${menuItem(I.radio, 'Telecommunications', '
166Network ops, B2C/B2B', `/industries/telecom.html`)} 167 ${menuItem(I.heart, 'Healthcare & Life Sciences','Prior auth, clinical workflows', `/industries/healthcare.html`)} 168 ${menuItem(I.calendar,'Hospitality & Travel', 'Guest services, revenue, ops', `/industries/hospitality-travel.html`)} 169 </ul> 170 <ul> 171 <h5>Public & industrial</h5> 172 ${menuItem(I.flag, 'Public Sector', 'Sovereign cloud, citizen services', `/industries/public-sector.html`)} 173 ${menuItem(I.bolt, 'Energy & Utilities', 'Outage response, field ops', `/industries/energy.html`)} 174 ${menuItem(I.gear, 'Manufacturing', 'Supply, quality, shopfloor', `/industries/manufacturing.html`)} 175 ${menuItem(I.truck, 'Logistics & Supply', 'Track, trace, exceptions', `/industries/logistics.html`)} 176 </ul> 177 <div class="menu-footer"> 178 <span>Trusted across the world's most regulated industries.</span> 179 <a href="/industries/index.html">All industries â</a> 180 </div> 181 </div> 182 </li> 183 184 <li class="nav-item" data-nav="resources"> 185 <a class="nav-link" href="javascript:void(0)" onclick="(function(a){if(window.matchMedia('(max-width:1100px)').matches){var li=a.parentElement;var ul=li.parentElement;var willOpen=!li.classList.contains('is-open');ul.querySelectorAll('.nav-item.is-open').forEach(function(n){if(n!==li)n.classList.remove('is-open');});li.classList.toggle('is-open',willOpen);if(willOpen){requestAnimationFrame(function(){ul.scrollTop=Math.max(0,ul.scrollTop+li.getBoundingClientRect().top-ul.getBoundingClientRect().top-4);});}}return false;})(this);return false;">Resources <span class="chev"></span></a> 186 <div class="mega"> 187 <ul> 188 <h5>Learn</h5> 189 ${menuItem(I.news, 'Blog & Insights', 'Perspectives on agentic AI', `/resources/blog.html`)} 190 ${menuItem(I.book, 'Whitepapers', 'In-depth reports', `/resources/whitepapers.html`)} 191 ${menuItem(I.target, 'Case Studies', 'Real customer outcomes', `/resources/case-studies.html`)} 192 ${menuItem(I.book, 'Agentic AI Glossary', 'Key terms, demystified', `/resources/glossary.html`)} 193 </ul> 194 <ul> 195 <h5>Engage</h5> 196 ${menuItem(I.mic, 'Webinars', 'Live and on-demand', `/resources/webinars.html`)} 197 ${menuItem(I.calendar,'Events', 'Conferences & meetups', `/resources/events.html`)} 198 ${menuItem(I.shop, 'Agent Marketplace', 'Verified agents', `/resources/agent-marketplace.html`)} 199 ${menuItem(I.handshake,'Partner Program', 'SI, ISV, cloud, reseller', `/resources/partners.html`)} 200 </ul> 201 <ul> 202 <h5>Build & operate</h5> 203 ${menuItem(I.code, 'Documentation', 'Build, deploy, operate', `/resources/documentation.html`)} 204 ${menuItem(I.bolt, 'API Reference', 'REST & GraphQL APIs', `/resources/api-reference.html`)} 205 ${menuItem(I.shield, 'Trust Center', 'Security, privacy, compliance', `/resources/trust-center.html`)} 206 ${menuItem(I.chat, 'Support', 'Premium support & community', `/resources/support.html`)} 207 </ul> 208 <div class="menu-footer"> 209 <span>Everything you need to design, build and operate agents.</span> 210 <a href="/resources/index.html">Browse all resources â</a> 211 </div> 212 </div> 213 </li> 214 215 <li class="nav-item"> 216 <a class="nav-link" href="javascript:void(0)" onclick="(function(a){if(window.matchMedia('(max-width:1100px)').matches){var li=a.parentElement;var ul=li.parentElement;var willOpen=!li.classList.contains('is-open');ul.querySelectorAll('.nav-item.is-open').forEach(function(n){if(n!==li)n.classList.remove('is-open');});li.classList.toggle('is-open',willOpen);if(willOpen){requestAnimationFrame(function(){ul.scrollTop=Math.max(0,ul.scrollTop+li.getBoundingClientRect().top-ul.getBoundingClientRect().top-4);});}}return false;})(this);return false;">Company <span class="chev"></span></a> 217 <div class="mega"> 218 <ul> 219 <h5>Who we are</h5> 220 ${menuItem(I.flag, 'About xyner', 'Mission, principles, team', `/company/about.html`)} 221 ${menuItem(I.calendar,'Request a Demo', 'See it in your environment', `/company/demo.html`)} 222 ${menuItem(I.heart, 'Sustainability', 'ESG, inclusion, responsibility', `/company/sustainability.html`)} 223 </ul> 224 <ul> 225 <h5>Engage</h5> 226 ${menuItem(I.target, 'Customers', 'Who builds with xyner', `/company/customers.html`)} 227 ${menuItem(I.rocket, 'Careers', 'Open roles across the world', `/company/careers.html`)} 228 ${menuItem(I.handshake,'Partners', 'Cloud, SI, ISV, reseller', `/company/partners.html`)} 229 </ul> 230 <ul> 231 <h5>Trust & security</h5> 232 ${menuItem(I.chat, 'Contact', 'Sales, partners, support', `/company/contact.html`)} 233 ${menuItem(I.shield, 'Trust & Security', 'How we earn your trust', `/company/trust.html`)} 234 </ul> 235 <div class="menu-footer">
236 <span>An operating team built for enterprise AI.</span> 237 <a href="/company/about.html">About xyner â</a> 238 </div> 239 </div> 240 </li> 241 </ul> 242 243 <div class="nav-cta"> 244 <a class="btn btn-ghost" href="/company/contact.html">Contact us</a> 245 <a class="btn btn-primary" href="/company/demo.html">Request demo</a> 246 <button type="button" class="nav-toggle" aria-label="Toggle menu" aria-expanded="false" onclick="(function(b){var l=document.getElementById('navLinks');if(!l)return;var o=!l.classList.contains('open');var nv=document.querySelector('#site-nav nav.nav');if(nv){document.documentElement.style.setProperty('--drawer-top',Math.max(0,Math.round(nv.getBoundingClientRect().bottom))+'px');}l.classList.toggle('open',o);b.setAttribute('aria-expanded',o?'true':'false');document.body.classList.toggle('nav-open',o);document.documentElement.classList.toggle('nav-open',o);})(this);return false;"> 247 <span class="burger-bars" aria-hidden="true"><span></span><span></span><span></span></span> 248 </button> 249 </div> 250 </div> 251 </nav>`; 252 253 const footerHTML = ` 254 <footer class="footer"> 255 <div class="container"> 256 <div class="footer-grid"> 257 <div class="footer-brand"> 258 <a class="brand" href="/"><img src="/assets/img/xyner7-clean.png" alt="xyner.ai" fetchpriority="high" decoding="async" style="height:32px;width:auto;display:block"/></a> 259 <p>The autonomous agentic AI platform for the modern enterprise. Plan. Reason. Act. At scale.</p> 260 </div> 261 <div> 262 <h5>Platform</h5> 263 <ul> 264 <li><a href="/platform/overview.html">Overview</a></li> 265 <li><a href="/platform/architecture.html">Architecture</a></li> 266 <li><a href="/platform/multi-agent.html">Multi-Agent</a></li> 267 <li><a href="/platform/reasoning-engine.html">Reasoning</a></li> 268 <li><a href="/platform/security.html">Security</a></li> 269 <li><a href="/platform/deployment.html">Deployment</a></li> 270 </ul> 271 </div> 272 <div> 273 <h5>Solutions</h5> 274 <ul> 275 <li><a href="/solutions/finance.html">Finance</a></li> 276 <li><a href="/solutions/procurement.html">Procurement</a></li> 277 <li><a href="/solutions/hr.html">HR</a></li> 278 <li><a href="/solutions/itsm.html">ITSM</a></li> 279 <li><a href="/solutions/customer-support.html">Customer Support</a></li> 280 <li><a href="/solutions/analytics.html">Analytics</a></li> 281 </ul> 282 </div> 283 <div> 284 <h5>Industries</h5> 285 <ul> 286 <li><a href="/industries/banking.html">Banking</a></li> 287 <li><a href="/industries/insurance.html">Insurance</a></li> 288 <li><a href="/industries/healthcare.html">Healthcare</a></li> 289 <li><a href="/industries/public-sector.html">Public Sector</a></li> 290 <li><a href="/industries/manufacturing.html">Manufacturing</a></li> 291 <li><a href="/industries/retail.html">Retail</a></li> 292 </ul> 293 </div> 294 <div> 295 <h5>Resources</h5> 296 <ul> 297 <li><a href="/resources/blog.html">Blog</a></li> 298 <li><a href="/resources/case-studies.html">Case Studies</a></li> 299 <li><a href="/resources/documentation.html">Documentation</a></li> 300 <li><a href="/resources/whitepapers.html">Whitepapers</a></li> 301 <li><a href="/resources/glossary.html">Glossary</a></li> 302 <li><a href="/resources/trust-center.html">Trust Center</a></li> 303 </ul> 304 </div> 305 <div> 306 <h5>Company</h5> 307 <ul> 308 <li><a href="/company/about.html">About</a></li> 309 <li><a href="/company/careers.html">Careers</a></li> 310 <li><a href="/company/contact.html">Contact</a></li> 311 <li><a href="/company/demo.html">Request Demo</a></li> 312 </ul> 313 </div> 314 </div> 315 <div class="seo-topics" style="border-top:1px solid var(--border);padding:18px 0 14px;margin-top:10px"> 316 <div style="font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--text-mute);opacity:0.7;margin-bottom:10px;font-weight:600">Explore</div> 317 <ul style="list-style:none;margin:0;padding:0"> 318 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Platform</a></li> 319 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/enterprise-agentic-ai.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Enterprise Agentic AI</a></li> 320 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-agent-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Agent Platform</a></li> 321 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/autonomous-ai-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Autonomous AI Platform</a></li> 322 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/enterprise-ai-agents.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Enterprise AI Agents</a></li> 323 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/multi-agent-ai-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Multi-Agent AI Platform</a></li> 324 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-workforce-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Workforce Platform</a></li> 325 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-agent-automation.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Agent Automation</a></li> 326 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/autonomous-ai-agents.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Autonomous AI Agents</a></li> 327 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-software.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Software</a></li> 328 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-framework.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Framework</a></li> 329 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-architecture.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Architecture</a></li> 330 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-agent-orchestration-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Agent Orchestration</a></li> 331 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-agent-development-platform.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Agent Development Platform</a></li> 332 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/enterprise-ai-workforce.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Enterprise AI Workforce</a></li> 333 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-services.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Services</a></li> 334 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-implementation-services.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Implementation Services</a></li> 335 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-consulting-services.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Consulting Services</a></li> 336 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-development-services.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Development Services</a></li> 337 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/ai-transformation-services.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">AI Transformation Services</a></li> 338 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-consulting.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Consulting</a></li> 339 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-banking.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Banking</a></li> 340 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-healthcare.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Healthcare</a></li> 341 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-government.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Government</a></li> 342 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-telecom.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Telecom</a></li> 343 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-retail.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Retail</a></li> 344 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-manufacturing.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Manufacturing</a></li> 345 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-insurance.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI Insurance</a></li> 346 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/agentic-ai-bfsi.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI for BFSI</a></li> 347 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/hr-ai-agent.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">HR AI Agent</a></li> 348 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/finance-ai-agent.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Finance AI Agent</a></li> 349 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/customer-service-ai-agent.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Customer Service AI Agent</a></li> 350 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/sales-ai-agent.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Sales AI Agent</a></li> 351 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/procurement-ai-agent.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Procurement AI Agent</a></li> 352 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/topics/legal-ai-agent.html" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Legal AI Agent</a></li> 353 </ul> 354 </div> 355 <div class="seo-locations" style="border-top:1px solid var(--border);padding:18px 0 14px;margin-top:10px"> 356 <div style="font-size:10px;letter-spacing:0.14em;text-transform:uppercase;color:var(--text-mute);opacity:0.7;margin-bottom:10px;font-weight:600">Locations</div> 357 <ul style="list-style:none;margin:0;padding:0"> 358 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/uae/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in UAE</a></li> 359 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/saudi-arabia/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in Saudi Arabia</a></li> 360 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/usa/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in USA</a></li> 361 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/uk/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in UK</a></li> 362 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/singapore/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in Singapore</a></li> 363 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/india/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in India</a></li> 364 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/germany/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in Germany</a></li> 365 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/netherlands/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in Netherlands</a></li> 366 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/australia/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-tra
366nsform:uppercase;text-decoration:none;font-weight:500">Agentic AI in Australia</a></li> 367 <li style="display:inline-block;margin:0 14px 6px 0"><a href="/qatar/agentic-ai-platform/" style="color:var(--text-mute);font-size:11px;letter-spacing:0.08em;text-transform:uppercase;text-decoration:none;font-weight:500">Agentic AI in Qatar</a></li> 368 </ul> 369 </div> 370 <div class="footer-bottom"> 371 <div>© <span data-year>2026</span> xyner.ai · All rights reserved.</div> 372 <div class="badges"> 373 <span class="badge">SOC 2</span> 374 <span class="badge">ISO 27001</span> 375 <span class="badge">GDPR</span> 376 <span class="badge">HIPAA</span> 377 </div> 378 </div> 379 </div> 380 </footer>`; 381 382 function inject() { 383 const navHost = document.getElementById('site-nav'); 384 const footHost = document.getElementById('site-footer'); 385 // Only inject if empty (the static HTML may already include nav/footer) 386 if (navHost && !navHost.querySelector('nav.nav')) navHost.innerHTML = navHTML; 387 if (footHost && !footHost.querySelector('footer.footer')) footHost.innerHTML = footerHTML; 388 389 // Bulletproof hamburger visibility: JS-force based on viewport width. 390 // Inline styles beat any stylesheet rule so this cannot be overridden. 391 function syncHamburger() { 392 const btn = document.querySelector('.nav-toggle'); 393 const links = document.querySelector('.nav-links'); 394 if (!btn) return; 395 const w = window.innerWidth; 396 if (w >= 1101) { 397 // Above 1100px: nav-links are visible, so hide hamburger completely 398 btn.style.setProperty('display', 'none', 'important'); 399 btn.style.setProperty('visibility', 'hidden', 'important'); 400 btn.style.setProperty('opacity', '0', 'important'); 401 btn.style.setProperty('pointer-events', 'none', 'important'); 402 if (links) { 403 links.style.setProperty('display', 'flex', 'important'); 404 links.classList.remove('open'); 405 } 406 // Drawer force-closed: release the scroll lock and reset toggle state 407 document.body.classList.remove('nav-open'); 408 document.documentElement.classList.remove('nav-open'); 409 btn.setAttribute('aria-expanded', 'false'); 410 } else { 411 // 1100 or below: show hamburger, let stylesheet control the rest 412 btn.style.removeProperty('display'); 413 btn.style.removeProperty('visibility'); 414 btn.style.removeProperty('opacity'); 415 btn.style.removeProperty('pointer-events'); 416 if (links) { 417 links.style.removeProperty('display'); 418 } 419 } 420 } 421 syncHamburger(); 422 window.addEventListener('resize', syncHamburger, { passive: true }); 423 424 // Mobile toggle is wired via inline onclick on the button itself 425 // (most foolproof against any event-listener interference). 426 // Year stamp 427 document.querySelectorAll('[data-year]').forEach(el => { el.textContent = new Date().getFullYear(); }); 428 429 // Hover-intent: keep mega menu open with a small grace period when the 430 // cursor leaves the trigger so users can travel to the dropdown without 431 // it closing on them. 432 // Hover-intent: keep menus open while moving cursor between trigger and panel. 433 // Uses a generous 400ms grace period and tracks both the trigger and the mega. 434 document.querySelectorAll('.nav-item').forEach(item => { 435 let closeT; 436 // Hover only drives the menu on desktop; in drawer mode (â¤1100px) taps do. 437 const desktop = () => window.matchMedia('(min-width:1101px)').matches; 438 const open = () => { if (!desktop()) return; clearTimeout(closeT); document.querySelectorAll('.nav-item.is-open').forEach(n => { if (n !== item) n.classList.remove('is-open'); }); item.classList.add('is-open'); }; 439 const close = () => { if (!desktop()) return; clearTimeout(closeT); closeT = setTimeout(() => item.classList.remove('is-open'), 400); }; 440 item.addEventListener('mouseenter', open); 441 item.addEventListener('mouseleave', close); 442 const mega = item.querySelector('.mega'); 443 if (mega) { 444 mega.addEventListener('mouseenter', open); 445 mega.addEventListener('mouseleave', close); 446 } 447 }); 448 } 449 450 if (document.readyState === 'loading') { 451 document.addEventListener('DOMContentLoaded', inject); 452 } else { inject(); } 453})(); 454 455 456/* ========================================================= 457 Google Analytics 4 458 Measurement ID: G-8YEHYHH3H5 459 Loads gtag.js asynchronously, initialises, and exposes 460 window.gtag for custom event tracking. 461 Runs once even if layout.js is loaded multiple times. 462 ========================================================= */ 463(function () {
464 if (window.__xynerGA4Loaded) return; 465 window.__xynerGA4Loaded = true; 466 var GA_ID = 'G-8YEHYHH3H5'; 467 468 function loadGA4() { 469 if (window.__xynerGA4Booted) return; 470 window.__xynerGA4Booted = true; 471 var s = document.createElement('script'); 472 s.async = true; 473 s.src = 'https://www.googletagmanager.com/gtag/js?id=' + GA_ID; 474 document.head.appendChild(s); 475 window.dataLayer = window.dataLayer || []; 476 function gtag(){ window.dataLayer.push(arguments); } 477 window.gtag = gtag; 478 gtag('js', new Date()); 479 gtag('config', GA_ID, { anonymize_ip: true, send_page_view: true }); 480 } 481 482 // Defer GA4: load only on first user interaction OR 5s after page load 483 function bootOnInteraction(){ 484 loadGA4(); 485 ['scroll','mousemove','touchstart','keydown','click'].forEach(function(ev){ 486 window.removeEventListener(ev, bootOnInteraction, {passive:true, capture:true}); 487 }); 488 } 489 function scheduleLoad(){ 490 ['scroll','mousemove','touchstart','keydown','click'].forEach(function(ev){ 491 window.addEventListener(ev, bootOnInteraction, {passive:true, capture:true, once:true}); 492 }); 493 setTimeout(loadGA4, 5000); 494 } 495 if (document.readyState === 'complete') { 496 scheduleLoad(); 497 } else { 498 window.addEventListener('load', scheduleLoad); 499 } 500})(); 501 502/* WhatsApp widget loads from whatsapp-widget.js */
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.