1(() => { 2 "use strict"; 3 4 const XPERF_ORIGIN = "https://xperf.ai"; 5 const MIN_FONT_SIZE = 24; 6 // Navigation chrome and the compact release metadata keep their declared 7 // type scales instead of being pushed up to the body-copy minimum. 8 const FONT_FLOOR_EXEMPT_SELECTOR = 9 "#xperf-site-nav, .xpa-release-details"; 10 const XPERF_FAVICON = 11 "/xperf-favicon-black-v3.svg?v=xperf-white-20260730-v3"; 12 const BRAND_TRANSITION_STORAGE_KEY = "xperf-brand-transition-v1"; 13 const BRAND_TRANSITION_ROUTE_SWAP_MS = 1000; 14 const BRAND_TRANSITION_TOTAL_MS = 2060; 15 const BRAND_TRANSITION_ROUTES = new Set([ 16 "/", 17 "/clusterready", 18 "/clusterbeacon", 19 "/about", 20 "/news", 21 "/contact", 22 "/newsletter", 23 "/demo", 24 ]); 25 const HOW_IT_WORKS_VISUALS = [ 26 { 27 signature: "0aee2043d9a7c9abad31a966d234af119df56047", 28 stage: "clusterready", 29 src: "/images/xperf-clusterready-dashboard.png?v=20260803", 30 alt: "XPerf ClusterReady product UI", 31 }, 32 { 33 signature: "479f6f885056913e2bae2c7f1a68fbbf715ba278", 34 stage: "clusterbeacon", 35 src: "/images/xperf-clusterbeacon-dashboard.png?v=20260803", 36 alt: "XPerf ClusterBeacon product UI", 37 }, 38 { 39 signature: "851576d131904fa801441ae857de044d118cded0", 40 stage: "clustermarshal", 41 src: "/images/xperf-clustermarshal-project.svg?v=20260804", 42 alt: "Project ClusterMarshal â Coming October 2026", 43 }, 44 ]; 45 const MI300X_VISUAL_SRC = "/images/xperf-amd-mi300x.png?v=20260804"; 46 const MI325X_VISUAL_SRC = "/images/xperf-amd-mi325x.png?v=20260804-2"; 47 const MI350X_VISUAL_SRC = "/images/xperf-amd-mi350x.png?v=20260814"; 48 const GB300_VISUAL_SRC = 49 "/images/xperf-nvidia-gb300-4k-bg141414.png?v=20260805-2"; 50 const B300_VISUAL_SRC = 51 "/images/xperf-nvidia-b300-4k-bg141414.png?v=20260805-3"; 52 const H200_VISUAL_SRC = 53 "/images/xperf-nvidia-h200-4k-bg141414.png?v=20260805-3"; 54 const H100_VISUAL_SRC = 55 "/images/xperf-nvidia-h100-4k-bg141414.png?v=20260805-2"; 56 let fontFloorFrame = 0; 57 let encodedEyebrowObserver = null; 58 let serverVisualFrame = 0; 59 let serverVisualListenersBound = false; 60 let serverVisualPanel = null; 61 let navigationThemeFrame = 0; 62 let navigationThemeListenersBound = false; 63 let navigationThemeRoot = null; 64 let brandTransitionActive = false; 65 66 function normalizeBrandTransitionPath(pathname) { 67 return pathname.replace(/\/+$/, "") || "/"; 68 } 69 70 function isBrandTransitionRoute(pathname) { 71 const normalizedPath = normalizeBrandTransitionPath(pathname); 72 return ( 73 BRAND_TRANSITION_ROUTES.has(normalizedPath) || 74 /^\/news\/[^/]+$/.test(normalizedPath) 75 ); 76 } 77 78 function clearBrandTransitionRecord() { 79 try { 80 window.sessionStorage.removeItem(BRAND_TRANSITION_STORAGE_KEY); 81 } catch (_error) { 82 // Storage can be unavailable in hardened privacy modes. Navigation 83 // still proceeds; only the cross-document continuation is skipped. 84 } 85 } 86 87 function writeBrandTransitionRecord(destination, startedAt) { 88 try { 89 window.sessionStorage.setItem( 90 BRAND_TRANSITION_STORAGE_KEY, 91 JSON.stringify({ destination, startedAt }), 92 ); 93 } catch (_error) { 94 // See clearBrandTransitionRecord(). 95 } 96 } 97 98 function readBrandTransitionRecord() { 99 try { 100 const value = window.sessionStorage.getItem( 101 BRAND_TRANSITION_STORAGE_KEY, 102 ); 103 return value ? JSON.parse(value) : null; 104 } catch (_error) { 105 return null; 106 } 107 } 108 109 function clearBrandTransitionBridge() { 110 document.documentElement.classList.remove( 111 "xperf-page-curtain-pending", 112 ); 113 document.documentElement.style.removeProperty( 114 "--xperf-page-curtain-delay", 115 ); 116 } 117 118 function mountBrandTransitionCurtain(elapsedMs) { 119 document.querySelector(".xperf-page-curtain")?.remove(); 120 121 const curtain = document.createElement("div"); 122 curtain.className = "xperf-page-curtain"; 123 curtain.setAttribute("aria-hidden", "true"); 124 curtain.style.setProperty( 125 "--xperf-page-curtain-delay", 126 `${-Math.max(0, elapsedMs)}ms`, 127 ); 128 129 const logo = document.createElement("img"); 130 logo.className = "xperf-page-curtain__logo"; 131 logo.src = "/xperf.png"; 132 logo.alt = "XPerf"; 133 logo.draggable = false;
134 curtain.appendChild(logo); 135 136 (document.body || document.documentElement).appendChild(curtain); 137 return curtain; 138 } 139 140 function resumeBrandTransition() { 141 const record = readBrandTransitionRecord(); 142 if (!record || !record.destination || !Number.isFinite(record.startedAt)) { 143 clearBrandTransitionBridge(); 144 return; 145 } 146 147 const elapsedMs = Date.now() - record.startedAt; 148 let destination; 149 try { 150 destination = new URL(record.destination, window.location.href); 151 } catch (_error) { 152 clearBrandTransitionRecord(); 153 clearBrandTransitionBridge(); 154 return; 155 } 156 157 const isDestination = 158 destination.origin === window.location.origin && 159 normalizeBrandTransitionPath(destination.pathname) === 160 normalizeBrandTransitionPath(window.location.pathname); 161 162 if (!isDestination) { 163 clearBrandTransitionBridge(); 164 if (elapsedMs > BRAND_TRANSITION_TOTAL_MS + 5000) { 165 clearBrandTransitionRecord(); 166 } 167 return; 168 } 169 170 clearBrandTransitionRecord(); 171 if (elapsedMs < 0 || elapsedMs >= BRAND_TRANSITION_TOTAL_MS) { 172 clearBrandTransitionBridge(); 173 return; 174 } 175 176 brandTransitionActive = true; 177 const curtain = mountBrandTransitionCurtain(elapsedMs); 178 window.requestAnimationFrame(() => { 179 clearBrandTransitionBridge(); 180 }); 181 window.setTimeout(() => { 182 curtain.remove(); 183 brandTransitionActive = false; 184 }, BRAND_TRANSITION_TOTAL_MS - elapsedMs + 100); 185 } 186 187 function shouldUseBrandTransition(event, link) { 188 if ( 189 brandTransitionActive || 190 event.defaultPrevented || 191 event.button !== 0 || 192 event.metaKey || 193 event.ctrlKey || 194 event.shiftKey || 195 event.altKey || 196 link.hasAttribute("download") || 197 link.hasAttribute("data-no-curtain") 198 ) { 199 return false; 200 } 201 202 const target = link.getAttribute("target"); 203 if (target && target.toLowerCase() !== "_self") { 204 return false; 205 } 206 207 let destination; 208 try { 209 destination = new URL(link.href, window.location.href); 210 } catch (_error) { 211 return false; 212 } 213 214 if ( 215 destination.origin !== window.location.origin || 216 !isBrandTransitionRoute(destination.pathname) || 217 normalizeBrandTransitionPath(destination.pathname) === 218 normalizeBrandTransitionPath(window.location.pathname) 219 ) { 220 return false; 221 } 222 223 return destination; 224 } 225 226 function startBrandTransition(destination) { 227 brandTransitionActive = true; 228 const startedAt = Date.now(); 229 const curtain = mountBrandTransitionCurtain(0); 230 writeBrandTransitionRecord(destination.href, startedAt); 231 232 window.setTimeout(() => { 233 window.location.assign(destination.href); 234 }, BRAND_TRANSITION_ROUTE_SWAP_MS); 235 236 // If navigation is cancelled by the browser, return the current page to 237 // its normal interactive state after the copied animation has finished. 238 window.setTimeout(() => { 239 curtain.remove(); 240 clearBrandTransitionRecord(); 241 brandTransitionActive = false; 242 }, BRAND_TRANSITION_TOTAL_MS + 500); 243 } 244 245 function setupBrandPageTransition() { 246 resumeBrandTransition(); 247 248 document.addEventListener( 249 "click", 250 (event) => { 251 const eventTarget = event.target; 252 if (!(eventTarget instanceof Element)) { 253 return; 254 } 255 256 const link = eventTarget.closest("a[href]"); 257 if (!link) { 258 return; 259 } 260 261 const destination = shouldUseBrandTransition(event, link); 262 if (!destination) { 263 return; 264 } 265 266 event.preventDefault(); 267 startBrandTransition(destination); 268 }, 269 true, 270 ); 271 272 window.addEventListener("pageshow", (event) => { 273 if (!event.persisted) { 274 return; 275 } 276 document.querySelector(".xperf-page-curtain")?.remove(); 277 clearBrandTransitionBridge(); 278 clearBrandTransitionRecord(); 279 brandTransitionActive = false; 280 }); 281 } 282 283 function containsRenderableText(element) { 284 if ( 285 element.matches( 286 "button, input, option, select, textarea, [contenteditable='true']", 287 ) 288 ) { 289 return true; 290 } 291 292 return Array.from(element.childNodes).some( 293 (node) => node.nodeType === Node.TEXT_NODE && /\S/.test(node.data), 294 ); 295 } 296 297 function enforceTypographySizing() { 298 const candidates = Array.from(document.body.querySelectorAll("*")).filter( 299 (element) => 300 !element.matches("script, style, template") && 301 containsRenderableText(element), 302 ); 303
304 candidates.forEach((element) => { 305 element.classList.remove("xperf-min-font", "xperf-scaled-font"); 306 element.style.removeProperty("--xperf-scaled-font-size"); 307 308 if (element.closest(FONT_FLOOR_EXEMPT_SELECTOR)) { 309 return; 310 } 311 312 const fontSize = Number.parseFloat( 313 window.getComputedStyle(element).fontSize, 314 ); 315 316 if (!Number.isFinite(fontSize)) { 317 return; 318 } 319 320 if (fontSize < MIN_FONT_SIZE) { 321 element.classList.add("xperf-min-font"); 322 } 323 }); 324 } 325 326 function queueMinimumFontSize() { 327 if (fontFloorFrame) { 328 return; 329 } 330 331 fontFloorFrame = window.requestAnimationFrame(() => { 332 fontFloorFrame = 0; 333 enforceTypographySizing(); 334 }); 335 } 336 337 function mountConstructivistSystem() { 338 const isProductPage = document.body.classList.contains("xp-product-page"); 339 340 if (!isProductPage) { 341 document.body.classList.remove("xperf-constructivist"); 342 document 343 .querySelectorAll( 344 "[data-xperf-construct-hero], [data-xperf-construct-dimension], .xperf-construct-halftone", 345 ) 346 .forEach((element) => element.remove()); 347 document 348 .querySelectorAll( 349 ".xperf-construct-hero-host, .xperf-construct-dimension-host, .xperf-construct-halftone-host", 350 ) 351 .forEach((element) => { 352 element.classList.remove( 353 "xperf-construct-hero-host", 354 "xperf-construct-dimension-host", 355 "xperf-construct-halftone-host", 356 ); 357 }); 358 return; 359 } 360 361 document.body.classList.add("xperf-constructivist"); 362 363 const hero = document.querySelector("main section"); 364 if (!hero) { 365 return; 366 } 367 368 hero.classList.add("xperf-construct-hero-host"); 369 let geometry = hero.querySelector(":scope > [data-xperf-construct-hero]"); 370 371 if (!geometry) { 372 geometry = document.createElement("div"); 373 geometry.className = "xperf-construct-hero"; 374 geometry.dataset.xperfConstructHero = "true"; 375 geometry.setAttribute("aria-hidden", "true"); 376 geometry.innerHTML = ` 377 <span class="xperf-construct-hero__grid"></span> 378 <span class="xperf-construct-compass"> 379 <span class="xperf-construct-compass__axis xperf-construct-compass__axis--x"></span> 380 <span class="xperf-construct-compass__axis xperf-construct-compass__axis--y"></span> 381 <span class="xperf-construct-compass__vector"></span> 382 </span> 383 `; 384 hero.append(geometry); 385 } 386 387 const dimensionHost = hero.querySelector(".xp-hero__visual"); 388 if (dimensionHost) { 389 dimensionHost.classList.add("xperf-construct-dimension-host"); 390 let dimension = dimensionHost.querySelector( 391 ":scope > [data-xperf-construct-dimension]", 392 ); 393 if (!dimension) { 394 dimension = document.createElement("span"); 395 dimension.className = "xperf-construct-dimension"; 396 dimension.dataset.xperfConstructDimension = "true"; 397 dimension.setAttribute("aria-hidden", "true"); 398 dimension.innerHTML = ` 399 <span class="xperf-construct-dimension__arrow">â</span> 400 `; 401 dimensionHost.append(dimension); 402 } 403 } 404 405 document 406 .querySelectorAll( 407 '[aria-labelledby="workflow-title"], [aria-labelledby="case-study-title"], [aria-labelledby="resolution-title"]', 408 ) 409 .forEach((section) => section.classList.add("xp-section--constructive")); 410 411 } 412 413 function markOriginalNavigation() { 414 const originalNav = Array.from(document.querySelectorAll("nav")).find( 415 (nav) => !nav.closest("#xperf-site-nav"), 416 ); 417 const originalHeader = originalNav?.closest( 418 ".pointer-events-auto.fixed.top-0", 419 ); 420 421 if (originalHeader) { 422 originalHeader.dataset.xperfOriginalNav = "true"; 423 } 424 } 425 426 function markOriginalFooters() { 427 document.querySelectorAll("footer").forEach((footer) => { 428 if (footer.id !== "xperf-site-footer") { 429 footer.dataset.xperfOriginalFooter = "true"; 430 } 431 }); 432 } 433 434 function removeCompanyCareersLinks() { 435 document 436 .querySelectorAll('nav a[href$="/careers"], footer a[href$="/careers"]') 437 .forEach((link) => { 438 const item = link.closest("li"); 439 (item || link).remove(); 440 }); 441 } 442 443 function normalizeContactCtas() { 444 const contactLabel = /^(?:request(?: a)? demo|contact us|request early access|talk to our engineers)$/i; 445 446 document.querySelectorAll("a").forEach((link) => { 447 const label = (link.textContent || "") 448 .replace(/arrow\s+right/gi, "") 449 .replace(/[\[\]â]/g, "") 450 .replace(/\s+/g, " ") 451 .trim(); 452 453 if (!contactLabel.test(label)) { 454 return; 455 } 456 457 link.setAttribute("href", "/contact"); 458 link.removeAttribute("target"); 459 link.removeAttribute("rel"); 460 }); 461 } 462 463 function positionFooter(root) {
464 let content = document.querySelector("main"); 465 if (!content) { 466 // Hydration can temporarily remove the main content. Keep its footer 467 // out of view until there is a page to place it after. 468 root.hidden = true; 469 return root; 470 } 471 472 while (content.parentElement && content.parentElement !== document.body) { 473 content = content.parentElement; 474 } 475 476 if (content.parentElement === document.body) { 477 // React may recreate the page after an externally mounted footer. 478 // Move only when needed so our observer settles after one correction. 479 if (content.nextElementSibling !== root) { 480 content.after(root); 481 } 482 root.hidden = false; 483 } 484 485 return root; 486 } 487 488 function mountFooter() { 489 markOriginalFooters(); 490 491 const existingFooter = document.getElementById("xperf-site-footer"); 492 if (existingFooter) { 493 return positionFooter(existingFooter); 494 } 495 496 const root = document.createElement("footer"); 497 root.id = "xperf-site-footer"; 498 root.innerHTML = ` 499 <div class="xperf-footer__inner"> 500 <div class="xperf-footer__navigation"> 501 <a class="xperf-footer__logo" href="/" aria-label="XPerf â Home"> 502 <img src="/xperf.png" alt="XPerf"> 503 </a> 504 505 <section> 506 <h2 class="xperf-footer__heading">Products</h2> 507 <ul class="xperf-footer__links"> 508 <li><a href="/clusterready">ClusterReady</a></li> 509 <li><a href="/clusterbeacon">ClusterBeacon</a></li> 510 <li><span>ClusterMarshal</span></li> 511 </ul> 512 </section> 513 514 <section> 515 <h2 class="xperf-footer__heading">Company</h2> 516 <ul class="xperf-footer__links"> 517 <li><a href="/about">About</a></li> 518 <li><a href="/news">News</a></li> 519 </ul> 520 </section> 521 522 <section> 523 <h2 class="xperf-footer__heading">Get in touch</h2> 524 <ul class="xperf-footer__links"> 525 <li><a href="/contact">Request a demo</a></li> 526 <li><a href="/newsletter">Subscribe to newsletter</a></li> 527 </ul> 528 </section> 529 </div> 530 531 <h2 class="xperf-footer__statement">AI-native solutions for the worldâs AI infrastructure.</h2> 532 533 <div class="xperf-footer__bottom"> 534 <div class="xperf-footer__socials" aria-label="XPerf social links"> 535 <a class="xperf-footer__social" href="https://www.crunchbase.com/organization/xperf#overview" target="_blank" rel="noopener noreferrer" aria-label="Crunchbase"> 536 <svg viewBox="0 0 24 24" fill="currentColor" aria-hidden="true"> 537 <path d="M21.6 0H2.4C1.08 0 0 1.08 0 2.4v19.2C0 22.92 1.08 24 2.4 24h19.2c1.32 0 2.4-1.08 2.4-2.4V2.4C24 1.08 22.92 0 21.6 0zM7.2 18.6c-2.65 0-4.8-2.15-4.8-4.8S4.55 9 7.2 9c1.6 0 3.01.78 3.89 1.98L9.16 12.1c-.44-.6-1.15-1-1.96-1-1.33 0-2.4 1.08-2.4 2.4s1.08 2.4 2.4 2.4c.81 0 1.52-.4 1.96-1l1.93 1.12C10.21 17.22 8.8 18 7.2 18zm10.8 0c-1.6 0-3.01-.78-3.89-1.98l1.93-1.12c.44.6 1.15 1 1.96 1 1.33 0 2.4-1.08 2.4-2.4s-1.08-2.4-2.4-2.4c-.81 0-1.52.4-1.96 1l-1.93-1.12C14.99 9.78 16.4 9 18 9c2.65 0 4.8 2.15 4.8 4.8S20.65 18.6 18 18.6z"/> 538 </svg> 539 </a> 540 </div> 541 <p class="xperf-footer__copyright">© 2026 XPerf, Inc. All rights reserved</p> 542 </div> 543 </div> 544 `; 545 546 return positionFooter(root); 547 } 548 549 function enforceXPerfFavicon() { 550 document 551 .querySelectorAll('link[rel~="icon"], link[rel="apple-touch-icon"]') 552 .forEach((link) => { 553 if (link.dataset.xperfFavicon !== "true") { 554 link.remove(); 555 } 556 }); 557 558 if (!document.querySelector(`link[href="${XPERF_FAVICON}"]`)) { 559 const favicon = document.createElement("link"); 560 favicon.rel = "icon"; 561 favicon.type = "image/svg+xml"; 562 favicon.href = XPERF_FAVICON; 563 favicon.dataset.xperfFavicon = "true"; 564 document.head.append(favicon); 565 } 566 567 if ( 568 !document.querySelector( 569 `link[rel="shortcut icon"][href="${XPERF_FAVICON}"]`, 570 ) 571 ) { 572 const shortcutIcon = document.createElement("link"); 573 shortcutIcon.rel = "shortcut icon"; 574 shortcutIcon.type = "image/svg+xml"; 575 shortcutIcon.href = XPERF_FAVICON; 576 shortcutIcon.dataset.xperfFavicon = "true"; 577 document.head.append(shortcutIcon); 578 } 579 580 } 581 582 function replaceValuePropositionVisual() { 583 if (normalizeBrandTransitionPath(window.location.pathname) === "/") { 584 return; 585 } 586 587 const heading = Array.from(document.querySelectorAll("h2")).find( 588 (element) => { 589 const text = element.textContent.trim().toLowerCase(); 590 return ( 591 (text === "value proposition" || 592 text === "why gpu optimization matters" ||
593 text === "todayâs ai infrastructure challenges") && 594 element.closest(".relative.z-10.flex.w-full.items-start") 595 ); 596 }, 597 ); 598 const contentPanel = heading?.closest( 599 ".relative.z-10.flex.w-full.items-start", 600 ); 601 const visualPanel = Array.from( 602 contentPanel?.parentElement?.children ?? [], 603 ).find((element) => element.classList.contains("lg:w-3/5")); 604 605 if (visualPanel) { 606 visualPanel.classList.add("xperf-value-proposition__visual"); 607 mountServerRoomVisual(visualPanel); 608 } 609 } 610 611 function clampServerProgress(value) { 612 return Math.min(1, Math.max(0, value)); 613 } 614 615 function interpolateServerValue(start, end, progress) { 616 return start + (end - start) * progress; 617 } 618 619 function sampleServerKeyframes(keyframes, progress) { 620 const scaledProgress = clampServerProgress(progress) * (keyframes.length - 1); 621 const frameIndex = Math.min( 622 keyframes.length - 2, 623 Math.floor(scaledProgress), 624 ); 625 const localProgress = scaledProgress - frameIndex; 626 const easedProgress = 627 localProgress * localProgress * (3 - 2 * localProgress); 628 const start = keyframes[frameIndex]; 629 const end = keyframes[frameIndex + 1]; 630 631 return Object.fromEntries( 632 Object.keys(start).map((key) => [ 633 key, 634 interpolateServerValue(start[key], end[key], easedProgress), 635 ]), 636 ); 637 } 638 639 function writeServerFrameVariables(panel, prefix, frame) { 640 panel.style.setProperty(`--xperf-${prefix}-x`, `${frame.x.toFixed(2)}%`); 641 panel.style.setProperty(`--xperf-${prefix}-y`, `${frame.y.toFixed(2)}%`); 642 panel.style.setProperty( 643 `--xperf-${prefix}-width`, 644 `${frame.width.toFixed(2)}%`, 645 ); 646 panel.style.setProperty( 647 `--xperf-${prefix}-height`, 648 `${frame.height.toFixed(2)}%`, 649 ); 650 } 651 652 function updateServerRoomVisual() { 653 serverVisualFrame = 0; 654 const panel = serverVisualPanel; 655 const visual = panel?.querySelector(".xperf-server-visual"); 656 const pinSpacer = panel?.parentElement?.parentElement; 657 658 if (!panel || !visual || !pinSpacer) { 659 return; 660 } 661 662 const panelRect = panel.getBoundingClientRect(); 663 const spacerRect = pinSpacer.getBoundingClientRect(); 664 const scrollDistance = Math.max(1, spacerRect.height - panelRect.height); 665 const progress = window.matchMedia("(prefers-reduced-motion: reduce)") 666 .matches 667 ? 0 668 : clampServerProgress(-spacerRect.top / scrollDistance); 669 const frameA = sampleServerKeyframes( 670 [ 671 { x: 14, y: 58, width: 24, height: 21 }, 672 { x: 49, y: 18, width: 32, height: 29 }, 673 { x: 62, y: 55, width: 22, height: 25 }, 674 ], 675 progress, 676 ); 677 const frameB = sampleServerKeyframes( 678 [ 679 { x: 51, y: 13, width: 34, height: 36 }, 680 { x: 17, y: 47, width: 29, height: 30 }, 681 { x: 27, y: 20, width: 37, height: 24 }, 682 ], 683 progress, 684 ); 685 const stage = Math.min(3, Math.floor(progress * 3) + 1); 686 687 panel.style.setProperty( 688 "--xperf-image-x", 689 `${interpolateServerValue(-10, 10, progress).toFixed(2)}%`, 690 ); 691 panel.style.setProperty( 692 "--xperf-image-y", 693 `${interpolateServerValue(4, -4, progress).toFixed(2)}%`, 694 ); 695 panel.style.setProperty( 696 "--xperf-image-scale", 697 (1.08 + Math.sin(progress * Math.PI) * 0.035).toFixed(4), 698 ); 699 writeServerFrameVariables(panel, "frame-a", frameA); 700 writeServerFrameVariables(panel, "frame-b", frameB); 701 702 if (visual.dataset.stage !== String(stage)) { 703 visual.dataset.stage = String(stage); 704 } 705 } 706 707 function queueServerRoomVisualUpdate() { 708 if (serverVisualFrame) { 709 return; 710 } 711 712 serverVisualFrame = window.requestAnimationFrame(updateServerRoomVisual); 713 } 714 715 function mountServerRoomVisual(panel) { 716 let visual = panel.querySelector(".xperf-server-visual"); 717 718 if (!visual) { 719 visual = document.createElement("div"); 720 visual.className = "xperf-server-visual"; 721 visual.setAttribute("data-stage", "1"); 722 visual.innerHTML = ` 723 <img 724 class="xperf-server-visual__image" 725 src="/images/xperf-server-room-023123.png?v=20260803"
726 alt="XPerf AI infrastructure server room" 727 decoding="async" 728 /> 729 <div class="xperf-server-visual__shade" aria-hidden="true"></div> 730 <div class="xperf-server-visual__grid" aria-hidden="true"> 731 <div class="xperf-server-visual__scale"> 732 <span>100</span> 733 <span>50</span> 734 <span>0</span> 735 </div> 736 <span class="xperf-server-visual__cross xperf-server-visual__cross--tl"></span> 737 <span class="xperf-server-visual__cross xperf-server-visual__cross--tr"></span> 738 <span class="xperf-server-visual__cross xperf-server-visual__cross--ml"></span> 739 <span class="xperf-server-visual__cross xperf-server-visual__cross--mr"></span> 740 <span class="xperf-server-visual__cross xperf-server-visual__cross--bl"></span> 741 <span class="xperf-server-visual__cross xperf-server-visual__cross--br"></span> 742 </div> 743 `; 744 panel.append(visual); 745 } 746 747 serverVisualPanel = panel; 748 749 if (!serverVisualListenersBound) { 750 serverVisualListenersBound = true; 751 window.addEventListener("scroll", queueServerRoomVisualUpdate, { 752 passive: true, 753 }); 754 window.addEventListener("resize", queueServerRoomVisualUpdate, { 755 passive: true, 756 }); 757 } 758 759 queueServerRoomVisualUpdate(); 760 } 761 762 function playEncodedEyebrow(element) { 763 const finalText = element.dataset.xperfScrambleText; 764 if (!finalText) { 765 return; 766 } 767 768 setContent(element, finalText); 769 element.dataset.xperfScramblePlayed = "true"; 770 element.dataset.xperfScrambleRunning = "false"; 771 element.classList.remove("xperf-scramble-lock-single-line"); 772 } 773 774 function prepareEncodedEyebrow(element, text) { 775 if (!element) { 776 return; 777 } 778 779 const wrapper = element.parentElement; 780 const dot = element.previousElementSibling; 781 782 wrapper?.classList.add( 783 "xperf-section-eyebrow", 784 "inline-flex", 785 "max-w-fit", 786 "flex-no-wrap", 787 "items-center", 788 "justify-center", 789 "uppercase", 790 "type-mono-1240", 791 "gap-x-2.5", 792 "bg-transparent", 793 "py-1", 794 "text-white", 795 ); 796 wrapper?.setAttribute("aria-hidden", "true"); 797 dot?.classList.add( 798 "xperf-section-eyebrow__dot", 799 "inline-block", 800 "bg-neon", 801 "h-[7px]", 802 "w-[7px]", 803 ); 804 dot?.setAttribute("aria-hidden", "true"); 805 806 element.classList.add("xperf-section-eyebrow__text"); 807 element.dataset.xperfScrambleText = text; 808 809 if (element.dataset.xperfScrambleRunning !== "true") { 810 setContent(element, text); 811 } 812 813 if (element.dataset.xperfScrambleReady === "true") { 814 return; 815 } 816 817 element.dataset.xperfScrambleReady = "true"; 818 encodedEyebrowObserver ??= new IntersectionObserver( 819 (entries) => { 820 entries.forEach((entry) => { 821 if (!entry.isIntersecting) { 822 return; 823 } 824 825 encodedEyebrowObserver.unobserve(entry.target); 826 playEncodedEyebrow(entry.target); 827 }); 828 }, 829 { threshold: 0.15 }, 830 ); 831 encodedEyebrowObserver.observe(element); 832 } 833 834 function rewriteEarthChallengesContent() { 835 const hero = document.querySelector('section[data-module="hero-primary"]'); 836 const originalParagraph = Array.from(hero?.querySelectorAll("p") ?? []).find( 837 (paragraph) => 838 paragraph.textContent 839 .trim() 840 .startsWith("Why GPU optimization matters."), 841 ); 842 const column = 843 hero?.querySelector(".xperf-overview-context") ?? 844 originalParagraph?.closest(".col-span-full.space-y-15"); 845 846 if (!column) { 847 return; 848 } 849 850 column.classList.add("xperf-overview-context"); 851 const overviewBand = column.closest(".grid-custom")?.parentElement; 852 overviewBand?.classList.add("xperf-overview-challenges-band"); 853 let eyebrow = overviewBand?.querySelector( 854 ".xperf-overview-eyebrow-display", 855 ); 856 857 if (!eyebrow) { 858 const originalEyebrow = Array.from( 859 overviewBand?.querySelectorAll("div") ?? [], 860 ).find( 861 (element) => 862 element.children.length === 0 && 863 element.textContent.trim() === "Overview" && 864 element.parentElement?.className.includes("type-mono"), 865 ); 866 867 if (originalEyebrow) { 868 originalEyebrow.classList.add("xperf-overview-eyebrow-source"); 869 originalEyebrow.setAttribute("aria-hidden", "true"); 870 eyebrow = document.createElement("div"); 871 eyebrow.className = 872 "xperf-overview-eyebrow xperf-overview-eyebrow-display"; 873 originalEyebrow.before(eyebrow); 874 } 875 } 876 877 if (eyebrow) { 878 eyebrow.classList.add("xperf-overview-eyebrow"); 879 prepareEncodedEyebrow( 880 eyebrow, 881 "The industry shifted from training to inference â the tooling didnât.", 882 ); 883 eyebrow.parentElement?.removeAttribute("aria-hidden"); 884 eyebrow.parentElement?.setAttribute("role", "heading"); 885 eyebrow.parentElement?.setAttribute("aria-level", "2"); 886 } 887 888 const blocks = Array.from(column.children).filter((element) => 889 element.classList.contains("gsap-parallax-item"), 890 ); 891 892 while (blocks.length < 3) { 893 const block = document.createElement("div"); 894 block.className = 895 "gsap-parallax-item [&_p]:typef-heading-24-32 relative"; 896 const paragraph = document.createElement("p"); 897 paragraph.className = 898 "type-body-1440 lg:type-body-1640 empty:mb-4"; 899 block.append(paragraph); 900 column.append(block); 901 blocks.push(block); 902 } 903 904 const items = [ 905 { 906 title: "Underutilized accelerators", 907 description: 908 "60â70% of GPU capacity sits idle because fragmented workloads and rigid scheduling
908keep expensive accelerators underused.", 909 }, 910 { 911 title: "Inference growth across heterogeneous fleets", 912 description: 913 "Demand is outpacing operations across multi-vendor, multi-generation GPUs, ASICs, and network fabrics.", 914 }, 915 { 916 title: "Instability, failures, and downtime", 917 description: 918 "Without predictive diagnosis and automated failover, hardware and fabric failures cascade into costly downtime.", 919 }, 920 ]; 921 922 items.forEach((item, index) => { 923 const block = blocks[index]; 924 let title = block.querySelector(".xperf-overview-block-title"); 925 const paragraph = block.querySelector("p"); 926 927 if (!title) { 928 title = document.createElement("h3"); 929 title.className = 930 "xperf-overview-block-title xperf-overview-challenge-title"; 931 block.insertBefore(title, paragraph); 932 } 933 934 title.classList.add("xperf-overview-challenge-title"); 935 let number = title.querySelector(".xperf-overview-challenge-number"); 936 let label = title.querySelector(".xperf-overview-challenge-label"); 937 938 if (!number || !label) { 939 number = document.createElement("span"); 940 number.className = "xperf-overview-challenge-number"; 941 label = document.createElement("span"); 942 label.className = "xperf-overview-challenge-label"; 943 title.replaceChildren(number, label); 944 } 945 946 setContent(number, String(index + 1).padStart(2, "0")); 947 setContent(label, item.title); 948 setContent(paragraph, item.description); 949 }); 950 } 951 952 function removeValuePropositionChallengeSection() { 953 const hero = document.querySelector('section[data-module="hero-primary"]'); 954 955 Array.from(hero?.querySelectorAll(".pin-spacer") ?? []).forEach( 956 (spacer) => { 957 if (!spacer.firstElementChild && !spacer.textContent.trim()) { 958 spacer.remove(); 959 } 960 }, 961 ); 962 963 const heading = Array.from(hero?.querySelectorAll("h2") ?? []).find( 964 (element) => { 965 const text = element.textContent.trim().toLowerCase(); 966 return ( 967 (text === "value proposition" || 968 text === "why gpu optimization matters" || 969 text === "todayâs ai infrastructure challenges") && 970 element.closest(".relative.z-10.flex.w-full.items-start") 971 ); 972 }, 973 ); 974 const panel = heading?.closest(".relative.z-10.flex.w-full.items-start"); 975 const challengeStage = panel?.parentElement; 976 const removalTarget = challengeStage?.closest(".pin-spacer") ?? challengeStage; 977 978 if (removalTarget && hero?.contains(removalTarget)) { 979 removalTarget.remove(); 980 } 981 } 982 983 function rewriteTopMetricsContent() { 984 const existing = document.querySelector(".xperf-top-metrics"); 985 const originalParagraph = Array.from( 986 document.querySelectorAll("p"), 987 ).find( 988 (paragraph) => 989 paragraph.textContent.trim() === 990 "The stakes behind every rack: underutilization, multi-vendor complexity, and frequent failures span the full infrastructure lifecycle.", 991 ); 992 const section = 993 existing?.closest(".relative.z-10") ?? 994 originalParagraph?.closest(".relative.z-10"); 995 996 section?.classList.add("xperf-top-metrics-band"); 997 998 if (existing || !section) { 999 return; 1000 } 1001 1002 const metrics = [ 1003 ["$2M+", "at risk in a single unvalidated 32-GPU rack"], 1004 ["~1", "failure every 3 hrs at scale"], 1005 ["Weeks", "lost to manual validation before a rack earns"], 1006 ]; 1007 const grid = document.createElement("div"); 1008 grid.className = "grid-custom p-custom"; 1009 1010 const block = document.createElement("div"); 1011 block.className = 1012 "gsap-parallax-item col-span-full xperf-top-metrics"; 1013 1014 const copy = document.createElement("p"); 1015 copy.className = "xperf-top-metrics__copy"; 1016 1017 const eyebrow = document.createElement("span"); 1018 eyebrow.className = "xperf-top-metrics__eyebrow"; 1019 1020 const eyebrowDot = document.createElement("span"); 1021 eyebrowDot.className = "xperf-section-eyebrow__dot"; 1022 1023 const eyebrowText = document.createElement("span"); 1024 eyebrowText.className = "xperf-section-eyebrow__text"; 1025 eyebrow.append(eyebrowDot, eyebrowText); 1026 1027 const title = document.createElement("span"); 1028 title.className = "xperf-top-metrics__title"; 1029 title.textContent = "The Stakes Behind Every Rack"; 1030 1031 metrics.map((metric) =>
1031 [metric]).forEach((rowMetrics) => { 1032 const line = document.createElement("span"); 1033 line.className = "xperf-top-metrics__line"; 1034 1035 rowMetrics.forEach(([value, label]) => { 1036 const metric = document.createElement("span"); 1037 metric.className = "xperf-top-metrics__metric"; 1038 1039 const metricValue = document.createElement("strong"); 1040 metricValue.className = "xperf-top-metrics__value"; 1041 metricValue.textContent = value; 1042 1043 const metricLabel = document.createElement("span"); 1044 metricLabel.textContent = label; 1045 1046 metric.append(metricValue, " ", metricLabel); 1047 line.append(metric); 1048 }); 1049 1050 copy.append(line); 1051 }); 1052 1053 copy.prepend(eyebrow, title); 1054 block.append(copy); 1055 grid.append(block); 1056 section.replaceChildren(grid); 1057 prepareEncodedEyebrow(eyebrowText, "By the Numbers"); 1058 } 1059 1060 function removeProofSection() { 1061 document.querySelector('section[data-module="text-quote"]')?.remove(); 1062 } 1063 1064 function removeTokenSavedProgress() { 1065 const label = Array.from(document.querySelectorAll("span")).find((span) => 1066 /^TOKEN SAVED:/i.test(span.textContent.trim()), 1067 ); 1068 const progress = label?.closest(".pointer-events-none.fixed.bottom-0"); 1069 progress?.remove(); 1070 } 1071 1072 function setContent(element, content) { 1073 if (element && element.textContent.trim() !== content) { 1074 element.textContent = content; 1075 } 1076 } 1077 1078 function replaceLeafCopy(scope, replacements) { 1079 if (!scope) { 1080 return; 1081 } 1082 1083 const replacementMap = new Map(replacements); 1084 scope 1085 .querySelectorAll("h2, h3, h4, p, div, span, small, em") 1086 .forEach((element) => { 1087 if (element.children.length > 0) { 1088 return; 1089 } 1090 1091 const replacement = replacementMap.get(element.textContent.trim()); 1092 if (replacement) { 1093 setContent(element, replacement); 1094 } 1095 }); 1096 } 1097 1098 function rewriteFeaturedProducts(hero) { 1099 const featuredLabel = Array.from(hero?.querySelectorAll("p") ?? []).find( 1100 (element) => element.textContent.trim() === "Featured", 1101 ); 1102 const wrapper = featuredLabel?.parentElement; 1103 const list = wrapper?.querySelector("ul"); 1104 1105 if (!featuredLabel || !wrapper || !list) { 1106 return; 1107 } 1108 1109 if (list.dataset.xperfFeaturedReady === "true") { 1110 return; 1111 } 1112 1113 const products = [ 1114 { 1115 title: "ClusterReady", 1116 description: "Validate AI racks in hours and establish a trusted performance baseline.", 1117 href: "/clusterready", 1118 }, 1119 { 1120 title: "ClusterBeacon", 1121 description: "Predict failures, prevent downtime, and self-heal on-prem.", 1122 href: "/clusterbeacon", 1123 }, 1124 { 1125 title: "ClusterMarshal", 1126 description: "Schedule inference workloads across racks.", 1127 status: "Coming Soon", 1128 }, 1129 ]; 1130 1131 wrapper.className = "xperf-featured"; 1132 featuredLabel.className = "xperf-featured__label"; 1133 list.className = "xperf-featured__list"; 1134 list.dataset.xperfFeaturedReady = "true"; 1135 1136 const fragment = document.createDocumentFragment(); 1137 1138 products.forEach((product, index) => { 1139 const item = document.createElement("li"); 1140 const panelId = `xperf-featured-panel-${index + 1}`; 1141 item.className = "xperf-featured__item"; 1142 item.dataset.open = "false"; 1143 item.dataset.pinned = "false"; 1144 item.innerHTML = ` 1145 <button class="xperf-featured__trigger" type="button" aria-expanded="false" aria-controls="${panelId}"> 1146 <span>${product.title}</span> 1147 <span class="xperf-featured__indicator" aria-hidden="true">+</span> 1148 </button> 1149 <div class="xperf-featured__panel" id="${panelId}" aria-hidden="true"> 1150 <div class="xperf-featured__panel-inner"> 1151 <div class="xperf-featured__panel-content"> 1152 <p class="xperf-featured__copy">${product.description}</p> 1153 ${ 1154 product.href 1155 ? `<a class="xperf-featured__link" href="${product.href}">[ Details â ]</a>` 1156 : `<span class="xperf-featured__status">${product.status}</span>` 1157 } 1158 </div> 1159 </div> 1160 </div> 1161 `; 1162 fragment.append(item); 1163 }); 1164 1165 list.replaceChildren(fragment); 1166 1167 const items = Array.from(list.querySelectorAll(".xperf-featured__item")); 1168 const setOpen = (item, open) => { 1169 const button = item.querySelector(".xperf-featured__trigger"); 1170 const panel = item.querySelector(".xperf-featured__panel"); 1171 item.dataset.open = String(open); 1172 button?.setAttribute("aria-expanded", String(open)); 1173 panel?.setAttribute("aria-hidden", String(!open)); 1174 }; 1175 const closeOthers = (activeItem) => {
1176 items.forEach((item) => { 1177 if (item !== activeItem) { 1178 item.dataset.pinned = "false"; 1179 setOpen(item, false); 1180 } 1181 }); 1182 }; 1183 const restoreDefaultItem = () => { 1184 const hasPinnedItem = items.some( 1185 (item) => item.dataset.pinned === "true", 1186 ); 1187 const hasActiveItem = items.some( 1188 (item) => item.matches(":hover") || item.contains(document.activeElement), 1189 ); 1190 1191 if (!hasPinnedItem && !hasActiveItem && items[0]) { 1192 setOpen(items[0], true); 1193 } 1194 }; 1195 1196 setOpen(items[0], true); 1197 1198 items.forEach((item) => { 1199 const button = item.querySelector(".xperf-featured__trigger"); 1200 1201 item.addEventListener("mouseenter", () => { 1202 closeOthers(item); 1203 setOpen(item, true); 1204 }); 1205 item.addEventListener("mouseleave", () => { 1206 if (item.dataset.pinned !== "true") { 1207 setOpen(item, false); 1208 } 1209 restoreDefaultItem(); 1210 }); 1211 item.addEventListener("focusin", () => { 1212 closeOthers(item); 1213 setOpen(item, true); 1214 }); 1215 item.addEventListener("focusout", (event) => { 1216 if ( 1217 !item.contains(event.relatedTarget) && 1218 item.dataset.pinned !== "true" 1219 ) { 1220 setOpen(item, false); 1221 } 1222 restoreDefaultItem(); 1223 }); 1224 button?.addEventListener("click", () => { 1225 const willPin = item.dataset.pinned !== "true"; 1226 items.forEach((otherItem) => { 1227 otherItem.dataset.pinned = "false"; 1228 if (otherItem !== item) { 1229 setOpen(otherItem, false); 1230 } 1231 }); 1232 item.dataset.pinned = String(willPin); 1233 setOpen(item, willPin || item.matches(":hover")); 1234 }); 1235 }); 1236 } 1237 1238 function rewriteDenseHomepageCopy() { 1239 const hero = document.querySelector('section[data-module="hero-primary"]'); 1240 rewriteFeaturedProducts(hero); 1241 1242 // SplitText restores its original copy when fonts or viewport width 1243 // change. Keep the customized heading outside its managed children. 1244 const heroTitle = hero?.querySelector("h1.typef-heading-48-120"); 1245 if (heroTitle && !heroTitle.querySelector(":scope > .xperf-hero-title-copy")) { 1246 const titleCopy = document.createElement("span"); 1247 titleCopy.className = "xperf-hero-title-copy"; 1248 ["Boost your AI", "infrastructure ROI."].forEach((text) => { 1249 const line = document.createElement("span"); 1250 line.textContent = text; 1251 titleCopy.append(line); 1252 }); 1253 heroTitle.append(titleCopy); 1254 heroTitle.setAttribute("aria-label", "Boost your AI infrastructure ROI."); 1255 } 1256 1257 replaceLeafCopy( 1258 hero, 1259 [ 1260 [ 1261 "XPerf validates AI racks before deployment, keeps clusters healthy in production, and increases productive output.", 1262 "The autonomous control plane for AI cluster operations. XPerf validates every rack, prevents the failures that stop production, and puts idle GPUs to work â so the same hardware earns more. On-premise. Your data never leaves.", 1263 ], 1264 ["Explore Our Platform", "Explore Platform"], 1265 ["Request a Demo", "Request Demo"], 1266 ], 1267 ); 1268 replaceLeafCopy( 1269 document.querySelector('section[data-module="card-collapsible"]'), 1270 [ 1271 [ 1272 "Validate racks before production, keep clusters healthy, and schedule workloads for maximum output. XPerf covers the full lifecycleâfrom the moment a rack arrives to every workload it runs afterward.", 1273 "Validate racks. Prevent failures. Maximize output.", 1274 ], 1275 [ 1276 "Three products, one lifecycle: ClusterReady validates, ClusterBeacon prevents failures, and ClusterMarshal maximizes productive output.", 1277 "ClusterReady · ClusterBeacon · ClusterMarshal.", 1278 ], 1279 ["The Challenge", "Challenge"], 1280 ["How XPerf Fills in the Gaps", "XPerf Solution"], 1281 [ 1282 "Manual rack validation takes weeks and still misses silent performance degradation. New racks reach production without a trusted tokens-per-second baseline.", 1283 "Manual validation takes weeks and misses silent degradation.", 1284 ], 1285 [ 1286 "Automated rack and cluster validation in hours, not weeksâAI workloads, a proprietary test suite, root cause, and a tokens-per-second baseline.", 1287 "Automated validation delivers a trusted baseline in hours.", 1288 ], 1289 [ 1290 "GPU, memory, and network incidents interrupt training and delay productionâand conventional tooling only reacts after damage is done.", 1291 "Reactive tools act only after training is interrupted.", 1292 ], 1293 [ 1294 "Autonomous failure prevention, self-healing, and an incident knowledge baseâfully on-premise, with human-in-the-loop control.", 1295 "Predict, prevent, and self-heal on-prem.", 1296 ], 1297 [ 1298 "Fragmented workloads and rigid scheduling leave 35â45% of compute performance unused even when the cluster appears fully booked.", 1299 "Rigid scheduling leaves accelerator capacity unused.", 1300 ], 1301 [ 1302 "Intelligent inference and post-training scheduling across NVIDIA, AMD, and ASIC clusters with sub-second responseâbuilt on NVIDIA KAI Scheduler.", 1303 "Schedule NVIDIA, AMD, and ASIC workloads intelligently.", 1304 ], 1305 [
1306 "Every vendor ships its own diagnostics, telemetry, and management stackânone of them agree on what healthy looks like.", 1307 "Vendor tools disagree on system health.", 1308 ], 1309 [ 1310 "One platform across NVIDIA, AMD, and ASIC clusters: consistent validation, operations, and scheduling for every generation.", 1311 "One platform across every accelerator generation.", 1312 ], 1313 [ 1314 "Training interruptions hit 54%+ of large runs, and every idle hour of a GPU rack burns real money.", 1315 "Training interruptions waste costly GPU time.", 1316 ], 1317 [ 1318 "Proactive failure prevention with root-cause diagnosis and automated remediationâissues are healed before they interrupt training.", 1319 "Diagnose and remediate issues before downtime.", 1320 ], 1321 ], 1322 ); 1323 1324 replaceLeafCopy( 1325 document.querySelector('section[data-module="image-text-timeline"]'), 1326 [ 1327 [ 1328 "XPerf validates racks 10Ã faster, delivers 100Ãâ1000Ã operations efficiency gains, and unlocks 50%â100%+ more revenue through intelligent scheduling. Three products cover the lifecycleâfrom the moment a rack arrives to every workload it runs afterward.", 1329 "Validate racks, prevent failures, and maximize output across one lifecycle.", 1330 ], 1331 [ 1332 "Pre-production rack and cluster validation in hours, not weeks.", 1333 "Validate racks in hours.", 1334 ], 1335 [ 1336 "Autonomous failure prevention, self-healing, and an incident knowledge base.", 1337 "Prevent failures and self-heal.", 1338 ], 1339 [ 1340 "Intelligent workload scheduling for maximum productive output.", 1341 "Schedule workloads for maximum output.", 1342 ], 1343 ], 1344 ); 1345 1346 replaceLeafCopy( 1347 document.querySelector('section[data-module="list-metric"]'), 1348 [ 1349 [ 1350 "XPerf spans validation, operations, and scheduling. Here is what teams gain:", 1351 "Validation, operations, and schedulingâone platform.", 1352 ], 1353 ["faster rack and cluster validation.", "faster validation."], 1354 [ 1355 "operations efficiency gain from autonomous self-healing.", 1356 "operations efficiency.", 1357 ], 1358 [ 1359 "potential revenue boost from intelligent scheduling.", 1360 "revenue potential.", 1361 ], 1362 ], 1363 ); 1364 1365 replaceLeafCopy( 1366 document.querySelector('section[data-module="text-data-tracker"]'), 1367 [ 1368 [ 1369 "Continuous Hours Powering AI Infrastructure", 1370 "Tokens Per Second Across Managed Clusters", 1371 ], 1372 [ 1373 "The XPerf platform validates racks before deployment, prevents failures in production, and schedules workloads intelligentlyâso every GPU and ASIC delivers more tokens per second across the full infrastructure lifecycle.", 1374 "Validate racks, prevent failures, and schedule workloads across every GPU and ASIC.", 1375 ], 1376 ["Explore our Platform", "Explore Platform"], 1377 ], 1378 ); 1379 1380 replaceLeafCopy( 1381 document.querySelector('section[data-module="driver-cta"]'), 1382 [ 1383 [ 1384 "See how XPerf can help your team validate faster, prevent downtime, and get more from every GPU and ASIC.", 1385 "Validate faster, prevent downtime, and get more from every accelerator.", 1386 ], 1387 ["Request A Demo", "Request Demo"], 1388 ["Start the Conversation", "Talk to our engineers"], 1389 ], 1390 ); 1391 } 1392 1393 function removeExplorePlatformLinks() { 1394 document.querySelectorAll("a, button").forEach((control) => { 1395 const normalizedLabel = (control.textContent || "") 1396 .replace(/arrow\s+right/gi, "") 1397 .replace(/[\[\]â]/g, "") 1398 .replace(/\s+/g, " ") 1399 .trim(); 1400 1401 if (/^explore\s+(?:our\s+|the\s+)?platform$/i.test(normalizedLabel)) { 1402 control.remove(); 1403 } 1404 }); 1405 } 1406 1407 function removeSeeHowXPerfWorksLinks() { 1408 document.querySelectorAll("a, button").forEach((control) => { 1409 const normalizedLabel = (control.textContent || "") 1410 .replace(/arrow\s+right/gi, "") 1411 .replace(/[\[\]â]/g, "") 1412 .replace(/\s+/g, " ") 1413 .trim(); 1414 1415 if (/^see how xperf works$/i.test(normalizedLabel)) { 1416 control.remove(); 1417 } 1418 }); 1419 } 1420 1421 function replaceHowItWorksVisuals() { 1422 const section = document.querySelector( 1423 'section[data-module="image-text-timeline"]', 1424 ); 1425 1426 if (!section) { 1427 return; 1428 } 1429 1430 section.querySelectorAll("img").forEach((image) => { 1431 const currentSource = image.getAttribute("src") || ""; 1432 const visual = HOW_IT_WORKS_VISUALS.find( 1433 ({ signature, stage, src }) => 1434 currentSource.includes(signature) || 1435 currentSource.includes(src.split("?")[0]) || 1436 image.dataset.xperfHowItWorksStage === stage, 1437 ); 1438 1439 if (!visual) { 1440 return; 1441 } 1442 1443 image.dataset.xperfHowItWorksStage = visual.stage; 1444 image.classList.add("xperf-how-it-works__visual"); 1445 const mobileFrame = image.closest(".lg\\:hidden"); 1446 const visualFrame = mobileFrame || image.parentElement; 1447 const desktopStack = image.closest( 1448 ".relative.grid.grid-cols-1.place-items-center.bg-black", 1449 ); 1450 visualFrame?.classList.add("xperf-how-it-works__visual-frame"); 1451 desktopStack?.classList.add("xperf-how-it-works__visual-stack"); 1452 if (visualFrame !== image.parentElement) { 1453 image.parentElement?.classList.add( 1454 "xperf-how-it-works__visual-inner", 1455 ); 1456 } 1457 image.setAttribute("src", visual.src); 1458 image.setAttribute("alt", visual.alt); 1459 image.removeAttribute("srcset"); 1460 image.removeAttribute("sizes"); 1461 image.style.removeProperty("background-image"); 1462 image.style.removeProperty("background-size"); 1463 image.style.removeProperty("background-position"); 1464 image.style.removeProperty("background-repeat"); 1465 }); 1466 } 1467 1468 function rewriteSupportedHardware() { 1469 const section = document.querySelector( 1470 'section[data-module="list-image-scroll"]', 1471 ); 1472 1473 if (!section) { 1474 return; 1475 } 1476 1477 section.querySelectorAll("a").forEach((link) => { 1478 const label = Array.from(link.querySelectorAll("span")).find( 1479 (span) => /^learn\s+more$/i.test(span.textContent?.trim() || ""), 1480 ); 1481 if (label) { 1482 link.remove(); 1483 } 1484 }); 1485 1486 const eyebrow = 1487 section.querySelector( 1488 '.xperf-section-eyebrow__text[data-xperf-scramble-text="Supported Hardware"]', 1489 ) ?? 1490 Array.from(section.querySelectorAll("div")).find( 1491 (element) => 1492 element.children.length === 0 && 1493 [ 1494 "Explore XPerf Products & Capabilities", 1495 "Supported Hardware", 1496 ].includes(element.textContent.trim()), 1497 ); 1498
1499 prepareEncodedEyebrow(eyebrow, "Supported Hardware"); 1500 1501 const header = eyebrow?.closest(".col-span-full.space-y-6"); 1502 const tabs = Array.from(header?.querySelectorAll("button") ?? []); 1503 const tabControl = tabs[0]?.parentElement; 1504 tabControl?.classList.add("xperf-supported-hardware-tabs"); 1505 tabControl 1506 ?.querySelector(":scope > .absolute") 1507 ?.classList.add("xperf-supported-hardware-tabs__legacy-indicator"); 1508 setContent(tabs[0], "AMD"); 1509 setContent(tabs[1], "NVIDIA"); 1510 1511 const updateVendorVisual = (vendorIndex) => { 1512 const hardwareVisuals = Array.from( 1513 section.querySelectorAll(".h-dvh img"), 1514 ); 1515 const amdVisuals = [ 1516 { 1517 element: hardwareVisuals[0], 1518 src: MI300X_VISUAL_SRC, 1519 alt: "AMD Instinct MI300X accelerator", 1520 className: "xperf-supported-hardware__mi300x-visual", 1521 }, 1522 { 1523 element: hardwareVisuals[1], 1524 src: MI325X_VISUAL_SRC, 1525 alt: "AMD Instinct MI325X accelerator", 1526 className: "xperf-supported-hardware__mi325x-visual", 1527 }, 1528 { 1529 element: hardwareVisuals[2], 1530 src: MI350X_VISUAL_SRC, 1531 alt: "AMD Instinct MI350X accelerator", 1532 className: "xperf-supported-hardware__mi350x-visual", 1533 }, 1534 ]; 1535 const showAmdVisuals = vendorIndex === 0; 1536 1537 amdVisuals.forEach(({ element, src, alt, className }) => { 1538 if (!element) { 1539 return; 1540 } 1541 1542 element.dataset.xperfOriginalSrc ??= 1543 element.getAttribute("src") || ""; 1544 element.classList.toggle(className, showAmdVisuals); 1545 1546 if (showAmdVisuals) { 1547 element.setAttribute("src", src); 1548 element.setAttribute("alt", alt); 1549 element.removeAttribute("srcset"); 1550 element.removeAttribute("sizes"); 1551 element.style.removeProperty("background-image"); 1552 element.style.removeProperty("background-size"); 1553 element.style.removeProperty("background-position"); 1554 element.style.removeProperty("background-repeat"); 1555 return; 1556 } 1557 1558 element.setAttribute("src", element.dataset.xperfOriginalSrc); 1559 element.setAttribute("alt", ""); 1560 }); 1561 1562 const nvidiaVisuals = [ 1563 { 1564 element: hardwareVisuals[0], 1565 src: GB300_VISUAL_SRC, 1566 alt: "NVIDIA GB300 NVL72 system", 1567 className: "xperf-supported-hardware__gb300-visual", 1568 }, 1569 { 1570 element: hardwareVisuals[1], 1571 src: B300_VISUAL_SRC, 1572 alt: "NVIDIA DGX B300 system", 1573 className: "xperf-supported-hardware__b300-visual", 1574 }, 1575 { 1576 element: hardwareVisuals[2], 1577 src: H200_VISUAL_SRC, 1578 alt: "NVIDIA H200 accelerator system", 1579 className: "xperf-supported-hardware__h200-visual", 1580 }, 1581 { 1582 element: hardwareVisuals[3], 1583 src: H100_VISUAL_SRC, 1584 alt: "NVIDIA Hopper H100 accelerator board", 1585 className: "xperf-supported-hardware__h100-visual", 1586 }, 1587 ]; 1588 const showNvidiaVisuals = vendorIndex === 1; 1589 1590 nvidiaVisuals.forEach(({ element, src, alt, className }) => { 1591 if (!element) { 1592 return; 1593 } 1594 1595 element.dataset.xperfOriginalSrc ??= 1596 element.getAttribute("src") || ""; 1597 element.classList.toggle(className, showNvidiaVisuals); 1598 1599 if (showNvidiaVisuals) { 1600 element.setAttribute("src", src); 1601 element.setAttribute("alt", alt); 1602 element.removeAttribute("srcset"); 1603 element.removeAttribute("sizes"); 1604 element.style.removeProperty("background-image"); 1605 element.style.removeProperty("background-size"); 1606 element.style.removeProperty("background-position"); 1607 element.style.removeProperty("background-repeat"); 1608 } 1609 }); 1610 }; 1611 1612 tabs.slice(0, 2).forEach((tab, vendorIndex) => { 1613 if (tab.dataset.xperfHardwareVisualBound === "true") { 1614 return; 1615 } 1616 1617 tab.dataset.xperfHardwareVisualBound = "true"; 1618 tab.addEventListener("click", () => { 1619 window.requestAnimationFrame(() => updateVendorVisual(vendorIndex)); 1620 window.setTimeout(() => updateVendorVisual(vendorIndex), 350); 1621 }); 1622 }); 1623 1624 const activeVendorIndex = tabs.findIndex( 1625 (tab) => 1626 tab.classList.contains("bg-neon") && 1627 tab.classList.contains("text-black"),
1628 ); 1629 updateVendorVisual(activeVendorIndex < 0 ? 0 : activeVendorIndex); 1630 1631 const hardwareGroups = Array.from(section.querySelectorAll(".item-group")); 1632 const hardwareContent = [ 1633 [ 1634 ["MI300X", "Instinct · RoCE/RDMA"], 1635 ["MI325X", "256GB HBM3e · RoCE/RDMA"], 1636 ["MI350X", "Instinct · RoCE/RDMA"], 1637 ["RoCE / RDMA", "Validated AMD fabrics"], 1638 ], 1639 [ 1640 ["GB300", "NVLink 5 · InfiniBand · RoCE"], 1641 ["B300", "NVLink 5 · InfiniBand · RoCE"], 1642 ["H200", "NVLink 4 · InfiniBand · RoCE"], 1643 ["H100", "NVLink 4 · InfiniBand · RoCE"], 1644 ["NVLink / InfiniBand", "Validated NVIDIA fabrics"], 1645 ], 1646 ]; 1647 1648 hardwareGroups.slice(0, 2).forEach((group, groupIndex) => { 1649 let items = Array.from(group.querySelectorAll(":scope > .item")); 1650 1651 // AMD exposes three accelerator models. Trailing inherited rows are 1652 // fabric summaries, not selectable models, so keep them out of the list. 1653 if (groupIndex === 0 && items.length > 3) { 1654 items.slice(3).forEach((item) => item.remove()); 1655 items = items.slice(0, 3); 1656 } 1657 1658 items.forEach((item, itemIndex) => { 1659 const content = hardwareContent[groupIndex]?.[itemIndex]; 1660 1661 if (!content) { 1662 return; 1663 } 1664 1665 const modelHeading = item.querySelector("h3"); 1666 setContent(modelHeading, content[0]); 1667 modelHeading?.classList.toggle("xperf-hardware-model", itemIndex < 4); 1668 setContent(item.querySelector("p"), content[1]); 1669 }); 1670 }); 1671 } 1672 1673 function rewriteHomepageContent() { 1674 removeTokenSavedProgress(); 1675 removeHowItWorksLifecycleCopy(); 1676 rewriteEarthChallengesContent(); 1677 removeValuePropositionChallengeSection(); 1678 rewriteTopMetricsContent(); 1679 removeProofSection(); 1680 replaceHowItWorksVisuals(); 1681 rewriteSupportedHardware(); 1682 rewriteDenseHomepageCopy(); 1683 removeExplorePlatformLinks(); 1684 removeSeeHowXPerfWorksLinks(); 1685 1686 const useCases = document.querySelector( 1687 'section[data-module="card-grid-marquee"]', 1688 ); 1689 useCases?.remove(); 1690 1691 const results = document.querySelector( 1692 'section[data-module="list-metric"]', 1693 ); 1694 results?.remove(); 1695 1696 const tokenTracker = document.querySelector( 1697 '#main section[data-module="text-data-tracker"]', 1698 ); 1699 const tokenTrackerTarget = 1700 tokenTracker?.closest(".pin-spacer") ?? tokenTracker; 1701 if ( 1702 tokenTrackerTarget && 1703 document.querySelector("#main")?.contains(tokenTrackerTarget) 1704 ) { 1705 tokenTrackerTarget.remove(); 1706 } 1707 1708 const solutionsHeading = Array.from( 1709 document.querySelectorAll("h2"), 1710 ).find((heading) => 1711 heading.textContent 1712 .trim() 1713 .startsWith( 1714 "The XPerf Platform. Three Products. One Infrastructure Lifecycle.", 1715 ), 1716 ); 1717 setContent(solutionsHeading, "XPerfâs Solutions"); 1718 1719 const forTeams = document.querySelector( 1720 'section[data-module="card-3-up"]', 1721 ); 1722 forTeams?.remove(); 1723 1724 const hero = document.querySelector('section[data-module="hero-primary"]'); 1725 if (!hero) { 1726 return; 1727 } 1728 1729 const transitionPattern = hero.nextElementSibling; 1730 if (transitionPattern?.matches('section[data-module="pattern"]')) { 1731 transitionPattern.classList.add("xperf-home-transition"); 1732 const transitionImage = transitionPattern.querySelector("img"); 1733 const transitionSource = 1734 "/images/pattern-black-transparent.png?v=20260819"; 1735 1736 if (transitionImage?.getAttribute("src") !== transitionSource) { 1737 transitionImage.removeAttribute("srcset"); 1738 transitionImage.removeAttribute("sizes"); 1739 transitionImage.setAttribute("src", transitionSource); 1740 } 1741 } 1742 1743 const solutions = document.querySelector( 1744 '#main > section[data-module="card-collapsible"]', 1745 ); 1746 solutions?.classList.add("xperf-solutions-plan"); 1747 const solutionCards = Array.from( 1748 solutions?.querySelectorAll("ul > li") ?? [], 1749 ); 1750 solutionCards.slice(3).forEach((card) => card.remove()); 1751 solutionCards.slice(0, 3).forEach((card) => { 1752 card.querySelectorAll("img").forEach((image) => image.remove()); 1753 }); 1754 1755 } 1756 1757 function removeHowItWorksLifecycleCopy() { 1758 const lifecycleCopy = "One Lifecycle From Rack Arrival to Maximum Output."; 1759 1760 document.querySelectorAll("h2").forEach((heading) => { 1761 if (!heading.textContent.includes(lifecycleCopy)) { 1762 return; 1763 } 1764 1765 heading.querySelectorAll("span").forEach((span) => { 1766 if (span.textContent.includes(lifecycleCopy)) { 1767 span.remove(); 1768 } 1769 }); 1770 1771 heading.normalize(); 1772 }); 1773 } 1774 1775 // The theme a page starts on, read from its topmost themed regi
1775on. Used for 1776 // the initial paint and whenever the nav is remounted, so a light page never 1777 // starts on the dark default. 1778 function initialNavigationTheme() { 1779 const regions = Array.from( 1780 document.querySelectorAll("[data-nav-theme]"), 1781 ).filter((region) => !region.closest("#xperf-site-nav")); 1782 1783 if (!regions.length) { 1784 return "dark"; 1785 } 1786 1787 const topmost = regions.sort( 1788 (a, b) => a.getBoundingClientRect().top - b.getBoundingClientRect().top, 1789 )[0]; 1790 1791 return topmost.dataset.navTheme === "light" ? "light" : "dark"; 1792 } 1793 1794 function updateNavigationTheme() { 1795 navigationThemeFrame = 0; 1796 const root = navigationThemeRoot; 1797 const bar = root?.querySelector(".xperf-nav__bar"); 1798 1799 if (!root || !bar) { 1800 return; 1801 } 1802 1803 const barRect = bar.getBoundingClientRect(); 1804 const sampleY = Math.min( 1805 window.innerHeight - 1, 1806 Math.max(0, barRect.top + barRect.height / 2), 1807 ); 1808 const themedRegions = Array.from( 1809 document.querySelectorAll("[data-nav-theme]"), 1810 ); 1811 let activeTheme = "dark"; 1812 let sampled = false; 1813 1814 themedRegions.forEach((region) => { 1815 if (root.contains(region)) { 1816 return; 1817 } 1818 1819 const rect = region.getBoundingClientRect(); 1820 if (rect.top <= sampleY && rect.bottom > sampleY) { 1821 activeTheme = 1822 region.dataset.navTheme === "light" ? "light" : "dark"; 1823 sampled = true; 1824 } 1825 }); 1826 1827 // The bar floats above the first themed region, so on a page that starts 1828 // light there is a band at the top where nothing is sampled. Falling back 1829 // to the topmost region keeps the bar from flashing dark on first paint. 1830 if (!sampled) { 1831 const firstRegion = themedRegions 1832 .filter((region) => !root.contains(region)) 1833 .sort( 1834 (a, b) => 1835 a.getBoundingClientRect().top - b.getBoundingClientRect().top, 1836 )[0]; 1837 1838 if (firstRegion) { 1839 activeTheme = 1840 firstRegion.dataset.navTheme === "light" ? "light" : "dark"; 1841 } 1842 } 1843 1844 if (root.dataset.theme !== activeTheme) { 1845 root.dataset.theme = activeTheme; 1846 } 1847 document.body.dataset.xperfConstructTheme = activeTheme; 1848 } 1849 1850 function queueNavigationThemeUpdate() { 1851 if (navigationThemeFrame) { 1852 return; 1853 } 1854 1855 navigationThemeFrame = window.requestAnimationFrame(updateNavigationTheme); 1856 } 1857 1858 function bindNavigationTheme(root) { 1859 navigationThemeRoot = root; 1860 1861 // Resolve the theme up front so a light page does not keep the dark 1862 // default. Deferring a frame lets the bar lay out first, so the theme 1863 // transition has a resolved starting value. 1864 queueNavigationThemeUpdate(); 1865 1866 if (!navigationThemeListenersBound) { 1867 navigationThemeListenersBound = true; 1868 window.addEventListener("scroll", queueNavigationThemeUpdate, { 1869 passive: true, 1870 }); 1871 window.addEventListener("resize", queueNavigationThemeUpdate, { 1872 passive: true, 1873 }); 1874 } 1875 1876 queueNavigationThemeUpdate(); 1877 } 1878 1879 function closeDesktopMenus(root, except) { 1880 root.querySelectorAll(".xperf-nav__group").forEach((group) => { 1881 if (group !== except) { 1882 group.dataset.open = "false"; 1883 group 1884 .querySelector(".xperf-nav__tab") 1885 ?.setAttribute("aria-expanded", "false"); 1886 } 1887 }); 1888 } 1889 1890 function mountNavigation() { 1891 markOriginalNavigation(); 1892 1893 const pageMain = document.querySelector("main"); 1894 if (pageMain && !pageMain.id) { 1895 pageMain.id = "main-content"; 1896 } 1897 const mainTargetId = pageMain?.id || "main-content"; 1898 1899 if (document.getElementById("xperf-site-nav")) { 1900 const existingRoot = document.getElementById("xperf-site-nav"); 1901 if (!existingRoot.dataset.theme) { 1902 existingRoot.dataset.theme = initialNavigationTheme(); 1903 } 1904 bindNavigationTheme(existingRoot); 1905 return existingRoot; 1906 } 1907 1908 const root = document.createElement("header"); 1909 root.id = "xperf-site-nav"; 1910 root.dataset.mobileOpen = "false"; 1911 root.dataset.theme = initialNavigationTheme(); 1912 root.innerHTML = ` 1913 <a class="xperf-skip-link" href="#${mainTargetId}">Skip to content</a> 1914 <div class="xperf-nav__bar"> 1915 <a class="xperf-nav__brand" href="/" aria-label="XPerf home"> 1916 <img 1917 class="xperf-nav__brand-logo" 1918 src="/sanity/9df5036c2b74abe55f9d67b24c3588915f7eb255-103x31.svg" 1919 width="103" 1920 height="31" 1921 alt="" 1922 aria-hidden="true" 1923 > 1924 </a> 1925 1926 <nav class="xperf-nav__desktop" aria-label="Primary navigation"> 1927 <div class="xperf-nav__group xperf-nav__group--products" data-open="false"> 1928 <button class="xperf-nav__tab" type="button" aria-expanded="false" aria-controls="xperf-products-menu"> 1929 Solutions 1930 </button> 1931 <div class="xperf-nav__dropdown" id="xperf-products-menu" aria-label="Solutions"> 1932 <a class="xperf-nav__card" href="/clusterready">
1933 <span class="xperf-nav__eyebrow">01 / Validate</span> 1934 <strong class="xperf-nav__card-title">ClusterReady</strong> 1935 <span class="xperf-nav__card-copy">Validate AI racks in hours.</span> 1936 </a> 1937 <a class="xperf-nav__card" href="/clusterbeacon"> 1938 <span class="xperf-nav__eyebrow">02 / Operate</span> 1939 <strong class="xperf-nav__card-title">ClusterBeacon</strong> 1940 <span class="xperf-nav__card-copy">Predict failures and self-heal.</span> 1941 </a> 1942 <div class="xperf-nav__card" aria-disabled="true"> 1943 <span class="xperf-nav__eyebrow">03 / Maximize</span> 1944 <strong class="xperf-nav__card-title">ClusterMarshal</strong> 1945 <span class="xperf-nav__card-copy">Schedule workloads across accelerators.</span> 1946 <span class="xperf-nav__status">Coming Soon</span> 1947 </div> 1948 </div> 1949 </div> 1950 1951 <a class="xperf-nav__tab xperf-nav__tab--link" href="/about">Why XPerf</a> 1952 <a class="xperf-nav__tab xperf-nav__tab--link" href="/news">Newsroom</a> 1953 <a class="xperf-nav__tab xperf-nav__tab--link" href="/newsletter">Newsletter</a> 1954 1955 <a class="xperf-nav__cta" href="/contact">Talk to our engineers</a> 1956 </nav> 1957 1958 <button class="xperf-nav__mobile-toggle" type="button" aria-expanded="false" aria-controls="xperf-mobile-menu"> 1959 [<span>Menu</span>] 1960 </button> 1961 </div> 1962 1963 <nav class="xperf-nav__mobile-panel" id="xperf-mobile-menu" aria-label="Mobile navigation"> 1964 <section class="xperf-nav__mobile-section" aria-labelledby="xperf-mobile-products"> 1965 <h2 class="xperf-nav__mobile-heading" id="xperf-mobile-products">Solutions</h2> 1966 <a class="xperf-nav__mobile-link" href="/clusterready"> 1967 <strong>ClusterReady</strong> 1968 <em>Validate</em> 1969 </a> 1970 <a class="xperf-nav__mobile-link" href="/clusterbeacon"> 1971 <strong>ClusterBeacon</strong> 1972 <em>Operate</em> 1973 </a> 1974 <div class="xperf-nav__mobile-link" aria-disabled="true"> 1975 <strong>ClusterMarshal</strong> 1976 <em>Coming soon</em> 1977 </div> 1978 </section> 1979 1980 <div class="xperf-nav__mobile-primary"> 1981 <a class="xperf-nav__mobile-primary-link" href="/about">Why XPerf</a> 1982 <a class="xperf-nav__mobile-primary-link" href="/news">Newsroom</a> 1983 <a class="xperf-nav__mobile-primary-link" href="/newsletter">Newsletter</a> 1984 </div> 1985 1986 <a class="xperf-nav__cta" href="/contact">Talk to our engineers</a> 1987 </nav> 1988 `; 1989 1990 document.body.prepend(root); 1991 1992 root.querySelectorAll(".xperf-nav__group").forEach((group) => { 1993 const button = group.querySelector(".xperf-nav__tab"); 1994 button?.addEventListener("click", () => { 1995 const willOpen = group.dataset.open !== "true"; 1996 closeDesktopMenus(root, group); 1997 group.dataset.open = String(willOpen); 1998 button.setAttribute("aria-expanded", String(willOpen)); 1999 }); 2000 }); 2001 2002 const mobileToggle = root.querySelector(".xperf-nav__mobile-toggle"); 2003 mobileToggle?.addEventListener("click", () => { 2004 const willOpen = root.dataset.mobileOpen !== "true"; 2005 root.dataset.mobileOpen = String(willOpen); 2006 mobileToggle.setAttribute("aria-expanded", String(willOpen)); 2007 }); 2008 2009 root.querySelectorAll("a").forEach((link) => { 2010 link.addEventListener("click", () => { 2011 root.dataset.mobileOpen = "false"; 2012 mobileToggle?.setAttribute("aria-expanded", "false"); 2013 }); 2014 }); 2015 2016 document.addEventListener("click", (event) => { 2017 if (!root.contains(event.target)) { 2018 closeDesktopMenus(root); 2019 } 2020 }); 2021 2022 document.addEventListener("keydown", (event) => { 2023 if (event.key === "Escape") { 2024 closeDesktopMenus(root); 2025 root.dataset.mobileOpen = "false"; 2026 mobileToggle?.setAttribute("aria-expanded", "false"); 2027 mobileToggle?.focus(); 2028 } 2029 }); 2030 2031 const desktopMedia = window.matchMedia("(min-width: 1100px)"); 2032 const resetNavigation = () => { 2033 root.dataset.mobileOpen = "false"; 2034 mobileToggle?.setAttribute("aria-expanded", "false"); 2035 closeDesktopMenus(root); 2036 }; 2037 2038 if (typeof desktopMedia.addEventListener === "function") { 2039 desktopMedia.addEventListener("change", resetNavigation); 2040 } else { 2041 desktopMedia.addListener(resetNavigation); 2042 } 2043 2044 bindNavigationTheme(root); 2045 return root; 2046 } 2047 2048 function keepNavigationMounted() { 2049 mountNavigation(); 2050 mountFooter(); 2051 removeCompanyCareersLinks(); 2052 normalizeContactCtas(); 2053 removeExplorePlatformLinks(); 2054 enforceXPerfFavicon(); 2055 replaceValuePropositionVisual(); 2056 rewriteHomepageContent(); 2057 mountConstructivistSystem(); 2058 queueMinimumFontSize(); 2059 2060 const observer = new MutationObserver(() => { 2061 markOriginalNavigation(); 2062 enforceXPerfFavicon(); 2063 if (!document.getElementById("xperf-site-nav")) { 2064 mountNavigation(); 2065 } 2066 mountFooter(); 2067 removeCompanyCareersLinks(); 2068 normalizeContactCtas(); 2069 removeExplorePlatformLinks(); 2070 replaceValuePropositionVisual(); 2071 rewriteHomepageContent(); 2072 mountConstructivistSystem(); 2073 queueMinimumFontSize(); 2074 }); 2075 observer.observe(document.body, { childList: true, subtree: true }); 2076 2077 const headObserver = new MutationObserver(enforceXPerfFavicon); 2078 headObserver.observe(document.head, { childList: true }); 2079 2080 const stabilizePage = () => { 2081 mountNavigation(); 2082 mountFooter(); 2083 removeCompanyCareersLinks(); 2084 normalizeContactCtas(); 2085 removeExplorePlatformLinks(); 2086 enforceXPerfFavicon(); 2087 replaceValuePropositionVisual(); 2088 rewriteHomepageContent(); 2089 mountConstructivistSystem(); 2090 queueMinimumFontSize(); 2091 }; 2092 2093 window.addEventListener("load", stabilizePage, { once: true }); 2094 window.addEventListener("resize", queueMinimumFontSize, { passive: true }); 2095 window.setTimeout(stabilizePage, 100); 2096 window.setTimeout(stabilizePage, 500); 2097 window.setTimeout(stabilizePage, 1500); 2098 } 2099 2100 setupBrandPageTransition(); 2101 2102 if (document.readyState === "loading") { 2103 document.addEventListener("DOMContentLoaded", keepNavigationMounted, { 2104 once: true, 2105 }); 2106 } else { 2107 keepNavigationMounted(); 2108 } 2109})();
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.