File: //var/www/viitorx.stgviitor.com/wp-content/themes/viitorx/header.php
<?php
/**
* The header for our theme
*
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*
* @package ViitorX
*/
if (viitorx_use_front_page_chrome()) :
$viitorx_nav_home = trailingslashit(home_url('/'));
?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<?php
// Inline critical above-fold CSS — eliminates ALL render-blocking stylesheet requests.
// marketing-shared.css, offerings-page/style.css, fonts.css etc. are async-loaded below.
$viitorx_critical = get_template_directory() . '/css/critical.css';
if ( file_exists( $viitorx_critical ) ) {
echo '<style id="viitorx-critical">' . file_get_contents( $viitorx_critical ) . '</style>' . "\n"; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
?>
<link rel="preconnect" href="https://cdnjs.cloudflare.com" crossorigin />
<link rel="preconnect" href="https://unpkg.com" crossorigin />
<!-- Preload animation libs so they download while HTML is parsed; executed in order at end of body -->
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js" as="script" crossorigin />
<link rel="preload" href="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/ScrollTrigger.min.js" as="script" crossorigin />
<link rel="preload" href="https://unpkg.com/[email protected]/dist/lenis.min.js" as="script" crossorigin />
<?php if ( viitorx_has_local_fonts() ) : ?>
<!-- Preload the latin primary Archivo WOFF2 — used for all body text, critical for FCP -->
<link rel="preload" href="<?php echo esc_url( get_template_directory_uri() . '/fonts/v25-k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxI.woff2' ); ?>" as="font" type="font/woff2" crossorigin />
<?php else : ?>
<!-- Google Fonts fallback — run `npm run download:fonts` to switch to self-hosted -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link rel="preload" href="https://fonts.googleapis.com/css2?family=Archivo:[email protected]&display=swap" as="style" onload="this.onload=null;this.rel='stylesheet'" />
<noscript><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:[email protected]&display=swap" /></noscript>
<?php endif; ?>
<?php
// Preload hero video — hardcoded paths mean the browser can start fetching
// from <head> without waiting to parse the <video> tag deep in the body.
if ( is_front_page() ) {
echo '<link rel="preload" href="' . esc_url( get_template_directory_uri() . '/assets/videos/hero-loop-video.webm' ) . '" as="video" type="video/webm">' . "\n";
} elseif ( viitorx_use_front_page_chrome() ) {
echo '<link rel="preload" href="' . esc_url( get_template_directory_uri() . '/assets/videos/inner-page-hero-video.webm' ) . '" as="video" type="video/webm">' . "\n";
}
?>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>><?php wp_body_open(); ?>
<!-- Custom Cursor -->
<div id="cursor"></div>
<div id="cursor-ring"></div>
<!-- ═══════════════════════════════════════════
STICKY NAV (appears on scroll)
════════════════════════════════════════════ -->
<?php
$viitorx_nav_before = get_field( 'nav_links_before', 'option' ) ?: array();
$viitorx_nav_after = get_field( 'nav_links_after', 'option' ) ?: array();
?>
<nav id="sticky-nav" aria-label="Main navigation">
<div class="nav-inner">
<ul class="nav-links nav-links--cluster nav-links--before" role="list">
<?php foreach ( $viitorx_nav_before as $viitorx_nav_item ) : ?>
<li><a href="<?php echo esc_url( site_url( $viitorx_nav_item['url'] ) ); ?>"><?php echo esc_html( $viitorx_nav_item['label'] ); ?></a></li>
<?php endforeach; ?>
</ul>
<a href="<?php echo esc_url($viitorx_nav_home); ?>" class="nav-brand" aria-label="ViitorX Home">
<?php
$nav_logo_x_src = esc_url(site_url('/wp-content/uploads/2026/04/logo-x.svg'));
?>
<img class="nav-logo-icon" src="<?php echo $nav_logo_x_src; ?>" alt="" width="32" height="32" decoding="async" aria-hidden="true">
</a>
<ul class="nav-links nav-links--cluster nav-links--after" role="list">
<?php foreach ( $viitorx_nav_after as $viitorx_nav_item ) : ?>
<li><a href="<?php echo esc_url( site_url( $viitorx_nav_item['url'] ) ); ?>"><?php echo esc_html( $viitorx_nav_item['label'] ); ?></a></li>
<?php endforeach; ?>
</ul>
<button type="button" id="nav-menu-toggle" class="nav-menu-toggle" aria-expanded="false" aria-controls="nav-drawer" aria-label="Open menu">
<span class="sr-only">Menu</span>
<span class="nav-toggle-lines" aria-hidden="true">
<span></span>
<span></span>
<span></span>
</span>
</button>
</div>
</nav>
<div id="nav-drawer" class="nav-drawer" role="dialog" aria-modal="true" aria-labelledby="nav-drawer-heading" aria-hidden="true" inert>
<div class="nav-drawer-scrim" id="nav-drawer-scrim" tabindex="-1" aria-hidden="true"></div>
<div class="nav-drawer-panel" data-lenis-prevent tabindex="-1">
<h2 id="nav-drawer-heading" class="sr-only">Site menu</h2>
<ul class="nav-drawer-list" role="list">
<?php
$viitorx_drawer_links = array_merge( $viitorx_nav_before, $viitorx_nav_after );
foreach ( $viitorx_drawer_links as $viitorx_nav_item ) :
?>
<li><a href="<?php echo esc_url( site_url( $viitorx_nav_item['url'] ) ); ?>"><?php echo esc_html( $viitorx_nav_item['label'] ); ?></a></li>
<?php endforeach; ?>
</ul>
</div>
</div>
<?php else : ?>
<!doctype html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo('charset'); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="profile" href="https://gmpg.org/xfn/11">
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<?php wp_body_open(); ?>
<div id="page" class="site">
<a class="skip-link screen-reader-text" href="#primary"><?php esc_html_e('Skip to content', 'viitorx'); ?></a>
<header id="masthead" class="site-header">
<div class="site-branding">
<?php
the_custom_logo();
if (is_front_page() && is_home()) :
?>
<h1 class="site-title"><a href="<?php echo esc_url(home_url('/')); ?>" rel="home"><?php bloginfo('name'); ?></a></h1>
<?php
else :
?>
<p class="site-title"><a href="<?php echo esc_url(home_url('/')); ?>" rel="home"><?php bloginfo('name'); ?></a></p>
<?php
endif;
$viitorx_description = get_bloginfo('description', 'display');
if ($viitorx_description || is_customize_preview()) :
?>
<p class="site-description"><?php echo $viitorx_description; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
?></p>
<?php endif; ?>
</div><!-- .site-branding -->
<nav id="site-navigation" class="main-navigation">
<button class="menu-toggle" aria-controls="primary-menu" aria-expanded="false"><?php esc_html_e('Primary Menu', 'viitorx'); ?></button>
<?php
wp_nav_menu(
array(
'theme_location' => 'menu-1',
'menu_id' => 'primary-menu',
)
);
?>
</nav><!-- #site-navigation -->
</header><!-- #masthead -->
<?php endif; ?>