<!DOCTYPE html>
<html class="no-js" lang="en-US"> 
<head>
	<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Zpryme</title>
<meta name='robots' content='max-image-preview:large' />
<link rel='dns-prefetch' href='//challenges.cloudflare.com' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="Zpryme &raquo; Feed" href="https://zpryme.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Zpryme &raquo; Comments Feed" href="https://zpryme.com/comments/feed/" />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://zpryme.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fzpryme.com%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://zpryme.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fzpryme.com%2F&#038;format=xml" />
    <link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
    <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
    <link rel="shortcut icon" href="/favicon.ico" />
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
    <meta name="apple-mobile-web-app-title" content="Zpryme" />
    <link rel="manifest" href="/site.webmanifest" />
        <script src="https://cdn.jsdelivr.net/npm/three@0.136.0/build/three.min.js"></script>
    
    <style>
        /* Pixel Distortion Effect CSS */
        .ph-image-inner {
            position: relative;
        }
        
        /* Disable on mobile for performance */
        @media (max-width: 768px) {
            .pixel-distortion canvas,
            [data-distortion] canvas {
                display: none !important;
            }
            .pixel-distortion img,
            [data-distortion] img {
                display: block !important;
            }
        }
    </style>
    <style id='wp-img-auto-sizes-contain-inline-css' type='text/css'>
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id='wp-emoji-styles-inline-css' type='text/css'>

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
/*# sourceURL=/wp-includes/css/classic-themes.min.css */
</style>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--lightning-yellow: #F9BF26;--wp--preset--color--color-black: #000;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 11px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 12px;--wp--preset--font-size--huge: 49px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-term-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-term-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
/*# sourceURL=global-styles-inline-css */
</style>
<link rel='stylesheet' id='contact-form-7-css' href='https://zpryme.com/wp-content/plugins/contact-form-7/includes/css/styles.css?ver=6.1.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-child-style-css' href='https://zpryme.com/wp-content/themes/zpryme-child/style.css?ver=1.1.4' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-main-css' href='https://zpryme.com/wp-content/themes/jesper/style.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='fontawesome-css' href='https://zpryme.com/wp-content/themes/jesper/includes/vendor/fontawesome/css/all.min.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='fancybox-css' href='https://zpryme.com/wp-content/themes/jesper/includes/vendor/fancybox/css/fancybox.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='swiper-bundle-css' href='https://zpryme.com/wp-content/themes/jesper/includes/vendor/swiper/css/swiper-bundle.min.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-helper-css' href='https://zpryme.com/wp-content/themes/jesper/includes/css/helper.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-theme-css' href='https://zpryme.com/wp-content/themes/jesper/includes/css/theme.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-light-theme-css' href='https://zpryme.com/wp-content/themes/jesper/includes/css/theme-light.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-blog-css' href='https://zpryme.com/wp-content/themes/jesper/includes/css/blog.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper-main-style-css' href='https://zpryme.com/wp-content/themes/jesper/includes/css/jesper-main-style.css?ver=1.0.6' type='text/css' media='all' />
<link rel='stylesheet' id='jesper_fonts-css' href='//fonts.googleapis.com/css?family=Big+Shoulders+Display%3Awght%40100%2C200%2C300%2C400%2C500%2C600%2C700%2C800%2C900%7CPoppins%3Awght%40300%2C400%2C500%2C600%2C700%2C800%2C900&#038;display=swap&#038;ver=1.0.0' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-frontend-css' href='https://zpryme.com/wp-content/plugins/elementor/assets/css/frontend.min.css?ver=3.35.0' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-post-9-css' href='https://zpryme.com/wp-content/uploads/elementor/css/post-9.css?ver=1780546974' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-text-widget-css' href='https://zpryme.com/wp-content/plugins/jesper-plugin/elementor-js/elementor-text-widget.css?ver=1.0.9' type='text/css' media='all' />
<link rel='stylesheet' id='elementor-post-2209-css' href='https://zpryme.com/wp-content/uploads/elementor/css/post-2209.css?ver=1780550171' type='text/css' media='all' />
<script type="text/javascript" src="https://zpryme.com/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<link rel="https://api.w.org/" href="https://zpryme.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://zpryme.com/wp-json/wp/v2/pages/2209" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://zpryme.com/xmlrpc.php?rsd" />
<link rel="canonical" href="https://zpryme.com/" />
<link rel='shortlink' href='https://zpryme.com/' />
        <link rel="stylesheet" class="wpcb2-external-style" href="https://zpryme.com/wp-content/uploads/wpcodebox/5.css?v=9835ec54c08bb8fa"/>

    <meta name="generator" content="Redux 4.5.11" /><meta name="generator" content="webp-uploads 2.6.1">
			<style>
				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload),
				.e-con.e-parent:nth-of-type(n+4):not(.e-lazyloaded):not(.e-no-lazyload) * {
					background-image: none !important;
				}
				@media screen and (max-height: 1024px) {
					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload),
					.e-con.e-parent:nth-of-type(n+3):not(.e-lazyloaded):not(.e-no-lazyload) * {
						background-image: none !important;
					}
				}
				@media screen and (max-height: 640px) {
					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload),
					.e-con.e-parent:nth-of-type(n+2):not(.e-lazyloaded):not(.e-no-lazyload) * {
						background-image: none !important;
					}
				}
			</style>
			<style id="jesper-dynamic-css" title="dynamic-css" class="redux-options-output">.ptr-prel-image{height:55px;width:100px;}.tt-logo img{height:55px;width:100px;}.tt-filled .tt-logo img{height:55px;width:100px;}{height:55px;width:100px;}.tt-footer-logo img{height:55px;width:100px;}</style> 
<style type="text/css" class="jesper-custom-dynamic-css">
:root {
	--tt-main-color:#4397c7;
	--tt-link-color: ; /* Link color. #c93b00 */
	--tt-link-hover-color: ; /* Link hover color. #f5533a */
}



body.tt-lightmode-on{
					}
:root{
								}
@media (max-width: 768px) {
	.tt-logo img{
	height:55px!important;
	width:100px!important;
}
}
</style>
 
 </head>
<body id="body" class="home wp-singular page-template-default page page-id-2209 wp-embed-responsive wp-theme-jesper wp-child-theme-zpryme-child tt-lightmode-default tt-magic-cursor tt-transition tt-smooth-scroll tt-noise jesper-v-1.0.6 elementor-default elementor-kit-9 elementor-page elementor-page-2209">
<main id="body-inner">
<div id="tt-page-transition">
	<div class="tt-ptr-overlay-top tt-noise"></div>
	<div class="tt-ptr-overlay-bottom tt-noise"></div>
	<div class="tt-ptr-preloader">
		<div class="tt-ptr-prel-content">
			<img src="https://zpryme.com/wp-content/uploads/2025/09/zpryme-logo-symbol-color-1.svg" class="tt-ptr-prel-image" alt="">
		</div> 
	</div> 
</div>

<div id="magic-cursor">
	<div id="ball"></div>
</div>   



<header id="tt-header" class=" tt-header-alter tt-header-scroll tt-header-filled">
	<div class="tt-header-inner tt-noise"> 
		<div class="tt-header-col tt-header-col-left">
			<div class="tt-logo"> 
<a href="https://zpryme.com/" class="tt-magnetic-item">
	<img src="https://zpryme.com/wp-content/uploads/2025/09/zpryme-logo-symbol-color-1.svg" class="tt-logo-light" alt="">
	<img src="https://zpryme.com/wp-content/uploads/2025/09/zpryme-logo-symbol-color-1.svg"  class="tt-logo-dark" alt="">
</a>
</div>
		</div> 
		<div class="tt-header-col tt-header-col-center">
			
			<nav class="tt-main-menu tt-m-menu-center">
				<div class="tt-main-menu-holder">
					<div class="tt-main-menu-inner">
						<div class="tt-main-menu-content">
							
							<ul class="tt-main-menu-list">
								<li id="menu-item-2229" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://zpryme.com/services/" class="menu-services" >Services</a></li>
<li id="menu-item-634" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://zpryme.com/work/" class="menu-work" >Work</a></li>
<li id="menu-item-2228" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://zpryme.com/wire/" class="menu-wire" >Wire</a></li>
<li id="menu-item-2230" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://zpryme.com/ets/" class="menu-ets" >ETS</a></li>
<li id="menu-item-489" class="menu-item menu-item-type-post_type menu-item-object-page"><a href="https://zpryme.com/about/" class="menu-about" >About</a></li>
<li id="menu-item-2240" class="menu-item menu-item-type-custom menu-item-object-custom"><a href="#modal-2237" class="menu-contact" >Contact</a></li>
								
																
								<li class="menu-item-style-switch">
									<div class="tt-style-switch-mobile">
										<div class="tt-style-switch-inner tt-magnetic-item">
											<div class="tt-stsw-light">
												<i class="fas fa-sun"></i>
											</div>
											<div class="tt-stsw-dark">
												<i class="fas fa-moon"></i>
											</div>
										</div>
									</div>
								</li>
								
															</ul>
							
							
						</div> 
					</div> 
				</div> 
			</nav> 
			
		</div> 
		<div class="tt-header-col tt-header-col-right">
						 
			<div id="tt-m-menu-toggle-btn-wrap">
				<div class="tt-m-menu-toggle-btn-text">
					<span class="tt-m-menu-text-menu">Menu</span>
					<span class="tt-m-menu-text-close">Close</span>
				</div>
				<div class="tt-m-menu-toggle-btn-holder">
					<a href="#" class="tt-m-menu-toggle-btn"><span></span></a>
				</div>
			</div>
			
												
			<a href="#modal-2237" class="tt-btn tt-btn-secondary hide-from-xlg tt-magnetic-item" target="_self">
				<span data-hover="Contact">Contact</span>
			</a>
			
									
			<div class="tt-style-switch tt-style-switch-desktop">
				<div class="tt-style-switch-inner tt-magnetic-item">
					<div class="tt-stsw-light">
						<i class="fas fa-sun"></i>
					</div>
					<div class="tt-stsw-dark">
						<i class="fas fa-moon"></i>
					</div>
				</div>
			</div>
			
					</div> 
	</div> 
</header>




<div id="tt-content-wrap">
 
<div id="tt-page-content">
 

			<div data-elementor-type="wp-page" data-elementor-id="2209" class="elementor elementor-2209">
				<div class="elementor-element elementor-element-96db1b7 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="96db1b7" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-5d4d3c7 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-banner" data-id="5d4d3c7" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-banner.default">
				<div class="elementor-widget-container">
							
		<div id="page-header" class="ph-full  ph-full-m ph-cap-xxxxlg ph-image-parallax  ph-bg-is-dark ph-center ph-caption-parallax">
						<div class="ph-video ph-video-grayscale ph-video-cover-1">
				<div class="ph-video-inner">
					<video loop muted autoplay playsinline preload="metadata" poster="https://zpryme.com/wp-content/uploads/2025/09/detroit-reel-cover.webp">
						<source src="https://zpryme.com/wp-content/themes/jesper/includes/vids/placeholder.mp4" data-src="https://zpryme.com/wp-content/uploads/2025/09/zpryme-hero-loop.mp4" type="video/mp4">
						<source src="https://zpryme.com/wp-content/themes/jesper/includes/vids/placeholder.webm" data-src="" type="video/webm">
					</video>
				</div>
			</div>
									
			<div class="page-header-inner tt-wrap">
				<div class="ph-caption">
					<div class="ph-caption-inner">
																		<h2 class="ph-caption-title">
							♡ Your<br>Energy						</h2>
												
											</div> 
				</div> 
			</div> 
						<div class="page-header-inner ph-mask">
				<div class="ph-mask-inner tt-wrap">
					<div class="ph-caption">
						<div class="ph-caption-inner">
														<h2 class="ph-caption-title">
															Feel the<br>connection															</h2>
														<div class="ph-caption-description max-width-700">
							Over 15 years of experience<br> in the design industry							</div>
																				</div> 
					</div> 
				</div> 
			</div>
			
												
			<div class="ph-social">
				<ul>
														
									
				
									
									
					<li><a class="tt-magnetic-item" target="_blank" rel="noopener" href="https://linkedin.com/company/zpryme"><i class="fa-brands fa-linkedin"></i></a></li>
									
					<li><a class="tt-magnetic-item" target="_blank" rel="noopener" href="https://www.youtube.com/@EnergyThoughtSummit"><i class="fa-brands fa-youtube"></i></a></li>
									
									
									
									
														</ul>
			</div>
						
						
						<div class="tt-scroll-down">
				
				<a href="#about-section" class="tt-scroll-down-inner tt-magnetic-item" data-offset="0">
					<div class="tt-scrd-icon"></div>
					<svg viewBox="0 0 500 500">
						<defs>
							<path d="M50,250c0-110.5,89.5-200,200-200s200,89.5,200,200s-89.5,200-200,200S50,360.5,50,250" id="textcircle"></path>
						</defs>
						<text dy="30">
							
							<textPath xlink:href="#textcircle"></textPath>
						</text>
					</svg>
				</a> 
			</div>
			
								</div>
		
						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-c65b539 e-flex e-con-boxed tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="c65b539" data-element_type="container" data-e-type="container" id="about-section">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-1d9a979 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="1d9a979" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-31b0061 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-sec-title" data-id="31b0061" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-sec-title.default">
				<div class="elementor-widget-container">
							<div class="tt-heading max-width-df tt-heading-xlg">
						<h2 class="tt-heading-title tt-text-reveal">Zpryme</h2>
        </div>
				<div class="tt-text-uppercase margin-top-30 jp-sec-title-des  max-width-df tt-text-reveal    ">
			Loving your energy since '07		</div>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-50a2811 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="50a2811" data-element_type="container" data-e-type="container">
				</div>
		<div class="elementor-element elementor-element-876f339 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="876f339" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-f4a682f tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-text-block" data-id="f4a682f" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-text-block.default">
				<div class="elementor-widget-container">
									<div class="clear">
		<div class="tt-text-uppercase jp-sec-title-des  text-xxlg max-width-df tt-text-reveal   text-pretty ">
			Austin-born Zpryme — creator of Energy Thought Summit (ETS) — tells the stories and captures the moments that define the future of energy.		</div>
		</div>
								</div>
				</div>
				<div class="elementor-element elementor-element-81fddb4 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jespers-button" data-id="81fddb4" data-element_type="widget" data-e-type="widget" data-widget_type="jespers-button.default">
				<div class="elementor-widget-container">
					        
		<div class="sec-button  clear">
								<a class="tt-btn tt-btn-outline  tt-magnetic-item tt-anim-fadeinup " href="/about">
									<span data-hover="About Zp">About Zp</span>
					
							</a>
							
				
		</div>		
        				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-279579f e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="279579f" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-7f33da5 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-clipper" data-id="7f33da5" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-clipper.default">
				<div class="elementor-widget-container">
							
		<div class="tt-clipper  tt-clipper-cover-">
						<a href="https://www.youtube.com/watch?v=hjeiA80Dr4I" class="tt-clipper-inner" data-cursor="Play<br>Reel" data-fancybox  data-caption="ZPryme Portraits, 2025 Reel">
															
				<div class="tt-clipper-bg">
					<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/06/work-dnv-00002.webp" loading="lazy" alt="">
				</div>
												<div class="tt-clipper-content">

					
					<div class="tt-clipper-btn">
						<i class="fa-solid fa-play"></i>
					</div>

				</div> 
						</a> 
					</div>
		
		
						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-bc4e51f e-flex e-con-boxed tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="bc4e51f" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-8c25583 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="8c25583" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-66a8452 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-sec-title" data-id="66a8452" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-sec-title.default">
				<div class="elementor-widget-container">
							<div class="tt-heading max-width-df tt-heading-xxxlg">
						<h2 class="tt-heading-title tt-text-reveal">Services</h2>
        </div>
				<div class="tt-text-uppercase margin-top-30 jp-sec-title-des  max-width-400 tt-anim-fadeinup  margin-left-xlg-10-p text-pretty ">
			Human-centered media and experiences for the energy transition.		</div>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-2b87c6a e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="2b87c6a" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-9ffbe70 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-icon" data-id="9ffbe70" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-icon.default">
				<div class="elementor-widget-container">
									<div class="tt-big-arrow tt-ba-angle-bottom-left  tt-anim-fadeinup">
			<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
				<path d="M13.025 1l-2.847 2.828 6.176 6.176h-16.354v3.992h16.354l-6.176 6.176 2.847 2.828 10.975-11z"></path>
			</svg>
		</div> 
								</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-f7d9db1 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="f7d9db1" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-f511b93 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-service" data-id="f511b93" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-service.default">
				<div class="elementor-widget-container">
							<div class="tt-horizontal-accordion tt-anim-fadeinup tt-hac-alter-hover">
						
			<div class="tt-hac-item cursor-alter">
								<div class="tt-hac-item-inner">
					<div class="tt-hac-item-content">
						<div class="tt-haci-content-top">
							<h2 class="tt-haci-title">Film &<br> Storytelling</h2>
														<div class="tt-haci-description"> 
								Real people, real impact							</div> 
													</div> 
												<div class="tt-haci-content-bottom">
							<a href="https://zpryme.com/services#film" class="tt-btn tt-btn-outline tt-magnetic-item">
								<span data-hover="&gt;&gt;">&gt;&gt;</span>
							</a>
						</div> 
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-hac-item cursor-alter">
								<div class="tt-hac-item-inner">
					<div class="tt-hac-item-content">
						<div class="tt-haci-content-top">
							<h2 class="tt-haci-title">Events &<br> Experiences</h2>
														<div class="tt-haci-description"> 
								Where passion come to life							</div> 
													</div> 
												<div class="tt-haci-content-bottom">
							<a href="https://zpryme.com/services#event" class="tt-btn tt-btn-outline tt-magnetic-item">
								<span data-hover="&gt;&gt;">&gt;&gt;</span>
							</a>
						</div> 
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-hac-item cursor-alter">
								<div class="tt-hac-item-inner">
					<div class="tt-hac-item-content">
						<div class="tt-haci-content-top">
							<h2 class="tt-haci-title">Matchmaking &<br>Partnerships</h2>
														<div class="tt-haci-description"> 
								A collective voice							</div> 
													</div> 
												<div class="tt-haci-content-bottom">
							<a href="https://zpryme.com/services#connector" class="tt-btn tt-btn-outline tt-magnetic-item">
								<span data-hover="&gt;&gt;">&gt;&gt;</span>
							</a>
						</div> 
											</div> 
				</div> 
			</div>
			
					</div>
						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-fe1fbc2 e-flex e-con-boxed tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="fe1fbc2" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-9a21610 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="9a21610" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-78a949d tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-sec-title" data-id="78a949d" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-sec-title.default">
				<div class="elementor-widget-container">
							<div class="tt-heading max-width-df tt-heading-xxxlg">
						<h2 class="tt-heading-title tt-text-reveal">Our Work</h2>
        </div>
				<div class="tt-text-uppercase margin-top-30 jp-sec-title-des  max-width-400 tt-anim-fadeinup  margin-left-xlg-10-p text-pretty ">
			Selected recent projects we're excited to share,  showcasing our work and capabilities		</div>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-d23a146 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="d23a146" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-42c38c2 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jespers-button" data-id="42c38c2" data-element_type="widget" data-e-type="widget" data-widget_type="jespers-button.default">
				<div class="elementor-widget-container">
					        
		<div class="sec-button  clear">
					<div class="tt-big-round-ptn tt-anim-fadeinup">
								<a href="/work" class="tt-big-round-ptn-holder tt-magnetic-item ">
					<div class="tt-big-round-ptn-inner">Client<br>Journeys</div>
				</a>
									
			</div>
				
		</div>		
        				</div>
				</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-27c8494 e-con-full elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="27c8494" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-a982460 elementor-widget-mobile__width-inherit tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-portfolio-compact" data-id="a982460" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-portfolio-compact.default">
				<div class="elementor-widget-container">
									<div class="tt-portfolio-preview-list tt-ppli-portrait tt-ppli-hover">
			<div class="tt-ppl-items-list">
								
				<a href="https://zpryme.com/work/itron/" class="tt-ppl-item">
					<div class="tt-ppli-preview">
												<div class="tt-ppli-preview-video">
							<video class="pgi-video" loop muted preload="metadata" poster="https://zpryme.com/wp-content/uploads/2026/02/itron-poster-800x534.webp">
																<source src="https://zpryme.com/wp-content/themes/jesper/includes/vids/placeholder.mp4"  data-src="/wp-content/uploads/2026/02/itron-loop-compressed.mp4" type="video/mp4">
																							</video>
						</div>
											</div> 

					<div class="tt-ppl-item-inner">
						<div class="tt-ppl-item-holder">
														<div class="tt-ppli-col tt-ppli-col-count">
								<div class="tt-ppli-count"></div>
							</div> 
														<div class="tt-ppli-col tt-ppli-col-caption">
								<div class="tt-ppli-caption">
									<h2 class="tt-ppli-title">
									Itron									</h2>
									<div class="tt-ppli-categories">
																		</div> 
								</div> 
							</div> 
							
							<div class="tt-ppli-col tt-ppli-col-info tt-justify-content-md-end">
								<div class="tt-ppli-info"> 
																</div> 
							</div> 
							
						</div> 
					</div> 
				</a>
				
								
				<a href="https://zpryme.com/work/exelon/" class="tt-ppl-item">
					<div class="tt-ppli-preview">
												<div class="tt-ppli-preview-video">
							<video class="pgi-video" loop muted preload="metadata" poster="https://zpryme.com/wp-content/uploads/2025/10/exelon-poster-800x534.webp">
																<source src="https://zpryme.com/wp-content/themes/jesper/includes/vids/placeholder.mp4"  data-src="/wp-content/uploads/2025/10/exelon_trimmed.mp4" type="video/mp4">
																							</video>
						</div>
											</div> 

					<div class="tt-ppl-item-inner">
						<div class="tt-ppl-item-holder">
														<div class="tt-ppli-col tt-ppli-col-count">
								<div class="tt-ppli-count"></div>
							</div> 
														<div class="tt-ppli-col tt-ppli-col-caption">
								<div class="tt-ppli-caption">
									<h2 class="tt-ppli-title">
									Exelon									</h2>
									<div class="tt-ppli-categories">
																		</div> 
								</div> 
							</div> 
							
							<div class="tt-ppli-col tt-ppli-col-info tt-justify-content-md-end">
								<div class="tt-ppli-info"> 
																</div> 
							</div> 
							
						</div> 
					</div> 
				</a>
				
								
				<a href="https://zpryme.com/work/smud/" class="tt-ppl-item">
					<div class="tt-ppli-preview">
												<div class="tt-ppli-preview-video">
							<video class="pgi-video" loop muted preload="metadata" poster="https://zpryme.com/wp-content/uploads/2025/10/smud-poster-800x534.webp">
																<source src="https://zpryme.com/wp-content/themes/jesper/includes/vids/placeholder.mp4"  data-src="/wp-content/uploads/2025/10/smud_trimmed.mp4" type="video/mp4">
																							</video>
						</div>
											</div> 

					<div class="tt-ppl-item-inner">
						<div class="tt-ppl-item-holder">
														<div class="tt-ppli-col tt-ppli-col-count">
								<div class="tt-ppli-count"></div>
							</div> 
														<div class="tt-ppli-col tt-ppli-col-caption">
								<div class="tt-ppli-caption">
									<h2 class="tt-ppli-title">
									SMUD									</h2>
									<div class="tt-ppli-categories">
																		</div> 
								</div> 
							</div> 
							
							<div class="tt-ppli-col tt-ppli-col-info tt-justify-content-md-end">
								<div class="tt-ppli-info"> 
																</div> 
							</div> 
							
						</div> 
					</div> 
				</a>
				
							</div>
		</div>
				
						</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4433157 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="4433157" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-d126471 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-sec-title" data-id="d126471" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-sec-title.default">
				<div class="elementor-widget-container">
							<div class="tt-heading max-width-df tt-heading-xxlg">
						<h2 class="tt-heading-title tt-text-reveal">Our Friends<br>(With Benefits)</h2>
        </div>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-d0b6d7f e-flex e-con-boxed tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="d0b6d7f" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-93453f7 elementor-widget-mobile__width-inherit tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-logo-wall" data-id="93453f7" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-logo-wall.default">
				<div class="elementor-widget-container">
							<ul class="tt-logo-wall  tt-lw-col-5 tt-anim-fadeinup">
									<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/google-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/google-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="http://3" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/oracle-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/oracle-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/sap-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/sap-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/deloitte-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/deloitte-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/exelon-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/exelon-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/vistra-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/vistra-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/cps-energy-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/cps-energy-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/austin-energy-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/austin-energy-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/nypa-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/nypa-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/smud-logo-light-fixed.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/smud-logo-dark-fixed.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/siemens-logo-light-fixed-min.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/siemens-logo-dark-fixed-min.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/itron-logo-light-fixed-min.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/itron-logo-dark-fixed-min.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/lcra-logo-light-fixed-min.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/lcra-logo-dark-fixed-min.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/dnv-logo-light-fixed-min.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/dnv-logo-dark-fixed-min.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
												<li>
				<a href="#" rel="nofollow" class="tt-logo-wall-item cursor-alter">
					<div class="tt-lv-item-inner">
												<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/kraken-logo-light-fixed-min-1.svg" class="tt-lv-img-light" loading="lazy" alt="">
																		<img decoding="async" src="https://zpryme.com/wp-content/uploads/2025/10/kraken-logo-dark-fixed-min.svg" class="tt-lv-img-dark" loading="lazy" alt="">
											</div> 
				</a> 
			</li>
								</ul>
						</div>
				</div>
					</div>
				</div>
		<div class="elementor-element elementor-element-36c534c elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="36c534c" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
		<div class="elementor-element elementor-element-5ab3c37 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="5ab3c37" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-0237d35 tt-sticky-element-yes tt-sticker-scroller-no elementor-widget elementor-widget-jesper-sec-title" data-id="0237d35" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-sec-title.default">
				<div class="elementor-widget-container">
							<div class="tt-heading max-width-500 tt-heading-xxlg">
						<h2 class="tt-heading-title tt-text-reveal">Feedback</h2>
        </div>
				<div class="tt-text-uppercase margin-top-30 jp-sec-title-des  max-width-df tt-anim-fadeinup    ">
			Genuine words from the people we’ve <br>had the pleasure to work with		</div>
								</div>
				</div>
				</div>
		<div class="exad-column-stickydd elementor-element elementor-element-9b19ffe e-con-full tt-sticker-scroller-yes e-flex tt-sticky-element-no e-con e-child" data-type="container" data-id="9b19ffe" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-1fc9994 tt-sticker-scroller tt-sticky-element-no elementor-widget elementor-widget-jesper-testimonial" data-id="1fc9994" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-testimonial.default">
				<div class="elementor-widget-container">
							<div class="clear tt-sticky-testimonials tt-stte-reversed-colors">
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;Zpryme is an indispensable partner in navigating the energy transition. Their research provides the critical foresight we need, and the Energy Thought Summit is the premier platform for the collaboration that turns those insights into action. Working with Zpryme helps us stay ahead of the curve.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://www.linkedin.com/in/nancybuithompson" target="_blank" rel="nofollow" class="tt-link">- Nancy Bui-Thompson | Board Director	| SMUD</a>
						</div>
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;Zpryme has a unique ability to cut through the noise and identify the core challenges and opportunities facing our industry. Their work doesn&#039;t just reflect the conversation; it shapes it, providing the clarity and validation leaders need to move forward with confidence.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://www.linkedin.com/in/calvin-butler-jr" target="_blank" rel="nofollow" class="tt-link">- Calvin G. Butler Jr. | CEO | Exelon</a>
						</div>
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;The strategic insights and deep industry connections we gain from Zpryme are unparalleled. Their team consistently delivers the data-driven analysis and collaborative forums necessary to tackle complex issues like decarbonization and community engagement effectively.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://www.linkedin.com/in/paul-p-lau" target="_blank" rel="nofollow" class="tt-link">- Paul Lau | CEO &amp; General Manager |  SMUD</a>
						</div>
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;Partnering with Zpryme&#039;s creative and technology team allowed us to transform our vision for customer engagement into a tangible, cutting-edge reality. They are true innovators who understand the utility landscape and how to connect with our customers in new and meaningful ways.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://www.linkedin.com/in/karlpopham" target="_blank" rel="nofollow" class="tt-link"> - Karl Popham | Manager,  EVs &amp; Emerging Tech |  Austin Energy</a>
						</div>
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;When we need to push the boundaries of what&#039;s possible in energy technology, we turn to Zpryme. Their unique blend of industry expertise and creative execution makes them an ideal collaborator for developing the next generation of solutions for our utility clients.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://uk.linkedin.com/in/mike-ballard-7207524a" target="_blank" rel="nofollow" class="tt-link"> - Mike Ballard	| VP, Utilities Industry Strategy | Oracle Utilities</a>
						</div>
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;Zpryme provides a vital and trusted platform for the substantive conversations our industry needs to have. Their media channels and events foster the kind of authentic dialogue that is essential for driving progress on complex issues, from market transformation to workforce diversity.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://www.linkedin.com/in/maryanne-brelinsky-6b38907" target="_blank" rel="nofollow" class="tt-link"> - MaryAnne Brelinsky | President |	EDF Energy Services</a>
						</div>
											</div> 
				</div> 
			</div>
			
						
			<div class="tt-stte-item">
				<div class="tt-stte-card cursor-alter">
										<div class="tt-stte-card-caption">
												<div class="tt-stte-text">
						&quot;Zpryme is more than a research firm; they are a strategic partner in community engagement. Their ability to create compelling events and media that resonate with our customers has been instrumental in advancing our clean energy and transportation initiatives.&quot;						</div>
																		<div class="tt-stte-subtext">
							<a href="https://www.linkedin.com/in/jrtijerina" target="_blank" rel="nofollow" class="tt-link">- Jonathan Tijerina | VP, Enterprise Risk &amp; Development | CPS Energy</a>
						</div>
											</div> 
				</div> 
			</div>
			
					</div>
		
						</div>
				</div>
				</div>
					</div>
				</div>
				</div>
		
</div>
	<footer id="tt-footer" class="border-top-ft">
	<div class="tt-footer-inner tt-wrap">

					<div class="tt-row">
				<div class="tt-col-12"><div id="text-5" class="widget tt-footer-widget clearfix widget_text">			<div class="textwidget"><style>.elementor-187 .elementor-element.elementor-element-e2b118d{--display:flex;--min-height:100vh;--justify-content:center;--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--margin-top:0px;--margin-bottom:0px;--margin-left:0px;--margin-right:0px;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;}.elementor-187 .elementor-element.elementor-element-11437c5{width:100%;max-width:100%;--e-transform-translateX:-50%;--e-transform-translateY:-50%;margin:-1px -1px calc(var(--kit-widget-spacing, 0px) + -1px) -1px;top:50%;z-index:0;}.elementor-187 .elementor-element.elementor-element-11437c5.elementor-element{--flex-grow:1;--flex-shrink:1;}body:not(.rtl) .elementor-187 .elementor-element.elementor-element-11437c5{left:50%;}body.rtl .elementor-187 .elementor-element.elementor-element-11437c5{right:50%;}.elementor-187 .elementor-element.elementor-element-2d0eb55d{--display:flex;--flex-direction:row;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );--container-widget-height:100%;--container-widget-flex-grow:1;--container-widget-align-self:stretch;--flex-wrap-mobile:wrap;--align-items:center;--gap:0px 0px;--row-gap:0px;--column-gap:0px;--margin-top:0rem;--margin-bottom:0rem;--margin-left:1rem;--margin-right:1rem;--padding-top:0vw;--padding-bottom:0vw;--padding-left:7vw;--padding-right:7vw;}.elementor-187 .elementor-element.elementor-element-4e383435{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;--justify-content:center;}.elementor-187 .elementor-element.elementor-element-5e203236 {text-align:left;}.elementor-187 .elementor-element.elementor-element-4f35ad9b{--display:flex;--flex-direction:column;--container-widget-width:100%;--container-widget-height:initial;--container-widget-flex-grow:0;--container-widget-align-self:initial;--flex-wrap-mobile:wrap;}.elementor-187 .elementor-element.elementor-element-49b7fa93 > .elementor-widget-container{margin:30px 0px 60px 0px;}.elementor-187 .elementor-element.elementor-element-25a6d113 > .elementor-widget-container{margin:0px 0px 10px 0px;}.elementor-187 .elementor-element.elementor-element-25a6d113 .clear{text-align:left;}@media(min-width:768px){.elementor-187 .elementor-element.elementor-element-2d0eb55d{--width:100%;}.elementor-187 .elementor-element.elementor-element-4e383435{--width:66.6666%;}.elementor-187 .elementor-element.elementor-element-4f35ad9b{--width:33.3333%;}}@media(max-width:1024px){.elementor-187 .elementor-element.elementor-element-2d0eb55d{--padding-top:80px;--padding-bottom:80px;--padding-left:15px;--padding-right:15px;}}@media(max-width:767px){.elementor-187 .elementor-element.elementor-element-2d0eb55d{--padding-top:40px;--padding-bottom:40px;--padding-left:15px;--padding-right:15px;}.elementor-187 .elementor-element.elementor-element-4f35ad9b{--align-items:center;--container-widget-width:calc( ( 1 - var( --container-widget-flex-grow ) ) * 100% );}.elementor-187 .elementor-element.elementor-element-49b7fa93 > .elementor-widget-container{margin:20px 0px 0px 0px;}}</style>		<div data-elementor-type="container" data-elementor-id="187" class="elementor elementor-187">
				<div class="elementor-element elementor-element-e2b118d e-con-full footer-bg-iframe-container e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-parent" data-id="e2b118d" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-11437c5 elementor-widget__width-inherit elementor-absolute footer-bg-iframe e-transform e-transform tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-html" data-id="11437c5" data-element_type="widget" data-e-type="widget" data-settings="{&quot;_position&quot;:&quot;absolute&quot;,&quot;_transform_translateX_effect&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:-50,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_tablet&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateX_effect_mobile&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:-50,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_tablet&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_translateY_effect_mobile&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scale_effect_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}" data-widget_type="html.default">
					<iframe 
    src="https://fragments-lab.vercel.app/sketches/mesh7?embed=true"
    frameborder="0"
    style="position: absolute; inset: 0; width: 100%; height: 100%; border: none;">
  </iframe>				</div>
		<div class="elementor-element elementor-element-2d0eb55d e-con-full footer-cta-wrap e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="2d0eb55d" data-element_type="container" data-e-type="container">
		<div class="elementor-element elementor-element-4e383435 e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="4e383435" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-5e203236 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-sec-title" data-id="5e203236" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-sec-title.default">
				<div class="elementor-widget-container">
							<div class="tt-heading max-width-df tt-heading-xxxlg">
						<h2 class="tt-heading-title tt-text-reveal">Tell us about your project</h2>
        </div>
								</div>
				</div>
				</div>
		<div class="elementor-element elementor-element-4f35ad9b e-con-full e-flex tt-sticky-element-no tt-sticker-scroller-no e-con e-child" data-id="4f35ad9b" data-element_type="container" data-e-type="container">
				<div data-modal-template="2237" class="elementor-element elementor-element-49b7fa93 tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jespers-button" data-id="49b7fa93" data-element_type="widget" data-e-type="widget" data-widget_type="jespers-button.default">
				<div class="elementor-widget-container">
					        
		<div class="sec-button  clear">
					<div class="tt-big-round-ptn ">
								<a href="#" class="tt-big-round-ptn-holder  ">
					<div class="tt-big-round-ptn-inner">Let's<br>Connect</div>
				</a>
									
			</div>
				
		</div>		
        				</div>
				</div>
				<div class="elementor-element elementor-element-25a6d113 elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile tt-sticky-element-no tt-sticker-scroller-no elementor-widget elementor-widget-jesper-text-block" data-id="25a6d113" data-element_type="widget" data-e-type="widget" data-widget_type="jesper-text-block.default">
				<div class="elementor-widget-container">
									<div class="clear">
		<div class="tt-text-uppercase jp-sec-title-des  text-df max-width-600 tt-text-reveal   text-pretty ">
			Feeling good about a new project? Write me what's in your mind
and let's talk about it!		</div>
		</div>
								</div>
				</div>
				</div>
				</div>
				</div>
				</div>
		
</div>
		</div></div>			</div> 
		
		
		<div class="tt-row tt-copyright-row">
			<div class="tt-col-12 text-center">
				<div class="tt-footer-widget tt-copyright-area">
					<ul class="tt-footer-widget-list">
														<li>
							 <div class="tt-footer-copyright">
    </div>

						</li>
					</ul> 
				</div> 
			</div> 
		</div> 

	</div> 
</footer>
    <script type="text/javascript">
    (function() {
        var modalThemeObserver = null;

        function applyModalTheme($modalRoot) {
            if (!$modalRoot || !$modalRoot.length) {
                return;
            }

            var bodyHasLight = document.body.classList.contains('tt-lightmode-on');
            $modalRoot.toggleClass('tt-lightmode-on', bodyHasLight);
            $modalRoot.toggleClass('tt-darkmode-on', !bodyHasLight);

            var bodyStyles = window.getComputedStyle(document.body);
            var backgroundColor = bodyStyles.getPropertyValue('--tt-bg-color');
            var textColor = bodyStyles.getPropertyValue('--tt-text-color');

            if (backgroundColor) {
                var bg = backgroundColor.trim();
                $modalRoot.css('background-color', bg);
                if ($modalRoot[0]) {
                    $modalRoot[0].style.setProperty('--tt-bg-color', bg);
                }
            }

            if (textColor) {
                var fg = textColor.trim();
                $modalRoot.css('color', fg);
                if ($modalRoot[0]) {
                    $modalRoot[0].style.setProperty('--tt-text-color', fg);
                }
            }
        }

        function startModalThemeSync($modalRoot) {
            stopModalThemeSync();
            applyModalTheme($modalRoot);

            if (!$modalRoot || !$modalRoot.length) {
                return;
            }

            modalThemeObserver = new MutationObserver(function(mutations) {
                mutations.forEach(function(mutation) {
                    if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
                        applyModalTheme($modalRoot);
                    }
                });
            });

            modalThemeObserver.observe(document.body, { attributes: true, attributeFilter: ['class'] });
        }

        function stopModalThemeSync() {
            if (modalThemeObserver) {
                modalThemeObserver.disconnect();
                modalThemeObserver = null;
            }
        }

        // Use capture phase to intercept clicks BEFORE theme's JavaScript
        document.addEventListener('click', function(e) {
            var target = e.target.closest('[data-modal-template], a[href^="#modal-"]');
            if (!target) return;
            
            var templateId;
            var modalClass = target.getAttribute('data-modal-class') || 'tt-modal-wrapper';
            
            // Check for hash-based URL (e.g., #modal-123)
            var href = target.getAttribute('href');
            if (href && href.match(/^#modal-(\d+)$/)) {
                templateId = href.match(/^#modal-(\d+)$/)[1];
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();
            } else if (target.hasAttribute('data-modal-template')) {
                // Use data attribute
                templateId = target.getAttribute('data-modal-template');
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();
            }
            
            if (!templateId) return;
            
            // Use jQuery for the modal functionality
            var $ = jQuery;
            
            // Pause Lenis smooth scroll if active
            if ($("body").hasClass("tt-smooth-scroll") && typeof lenis !== 'undefined' && lenis) {
                lenis.stop();
            }
            
            // Also stop window lenis if it exists
            if (typeof window.lenis !== 'undefined' && window.lenis) {
                window.lenis.stop();
            }
            
            // Show loading state with transparent background
            $.fancybox.open({
                src: '<div class="tt-modal-loading"><i class="fas fa-spinner fa-spin"></i></div>',
                type: 'inline',
                opts: {
                    animationEffect: 'fade',
                    touch: false,
                    keyboard: false,
                    buttons: [],
                    clickSlide: false,
                    clickOutside: false
                }
            });
            
            // Load the template via AJAX
            $.ajax({
                url: 'https://zpryme.com/wp-admin/admin-ajax.php',
                type: 'POST',
                data: {
                    action: 'load_elementor_template',
                    template_id: templateId
                },
                success: function(response) {
                    if (response.success) {
                        // Close loading
                        $.fancybox.close();
                        
                        // Create container with data-lenis-prevent to tell Lenis to ignore this element
                        var $tempContainer = $('<div class="' + modalClass + '" data-lenis-prevent>' + response.data + '</div>');
                        
                        // Apply theme's form styling classes immediately
                        $tempContainer.find(".wpcf7-form p:not(:empty), .mc4wp-form-fields p:not(:empty)").each(function() {
                            $(this).addClass('tt-form-group tt-anim-fadeinup');
                        });
                        
                        $tempContainer.find("input:not([type='submit']), textarea, select").each(function() {
                            $(this).addClass('tt-form-control');
                        });
                        
                        // Small delay to ensure styles are applied before opening
                        setTimeout(function() {
                            applyModalTheme($tempContainer);
                            // Open modal with pre-styled content
                            $.fancybox.open({
                                src: $tempContainer.prop('outerHTML'),
                                type: 'inline',
                                opts: {
                                    animationEffect: 'fade',
                                    animationDuration: 300,
                                    touch: false,
                                    keyboard: true,
                                    wheel: 'auto',
                                    buttons: ['close'],
                                    afterShow: function(instance, current) {
                                        // Lock background scrolling
                                        $('html, body').addClass('fancybox-lock-scroll');

                                        var $modalRoot = $(current.$content).find('.tt-modal-wrapper, .tt-modal-contact-wrapper').first();
                                        startModalThemeSync($modalRoot);
                                        
                                        // Re-initialize Contact Form 7 after modal is shown
                                        if (typeof wpcf7 !== 'undefined' && typeof wpcf7.init !== 'undefined') {
                                            $(current.$content).find('.wpcf7 > form').each(function() {
                                                var $form = $(this);
                                                
                                                // Initialize CF7 first
                                                wpcf7.init($form[0]);
                                                
                                                // Manually render Turnstile widgets after modal opens
                                                if (typeof turnstile !== 'undefined') {
                                                    $form.find('.cf-turnstile').each(function() {
                                                        var $widget = $(this);
                                                        
                                                        // Only render if widget hasn't been initialized yet
                                                        if (!$widget.children().length) {
                                                            var sitekey = $widget.data('sitekey');
                                                            if (sitekey) {
                                                                turnstile.render($widget[0], {
                                                                    sitekey: sitekey,
                                                                    size: 'compact',
                                                                    theme: 'auto',
                                                                    callback: function(token) {
                                                                        var $input = $form.find('input[name="cf-turnstile-response"]');
                                                                        if ($input.length) {
                                                                            $input.val(token);
                                                                        }
                                                                    }
                                                                });
                                                            }
                                                        }
                                                    });
                                                }
                                            });
                                        }
                                    },
                                    afterClose: function() {
                                        // Restore background scrolling
                                        $('html, body').removeClass('fancybox-lock-scroll');
                                        
                                        // Resume main Lenis smooth scroll if active
                                        if ($("body").hasClass("tt-smooth-scroll")) {
                                            if (typeof lenis !== 'undefined' && lenis) {
                                                lenis.start();
                                            }
                                            if (typeof window.lenis !== 'undefined' && window.lenis) {
                                                window.lenis.start();
                                            }
                                        }

                                        stopModalThemeSync();
                                    }
                                }
                            });
                        }, 100);
                    }
                },
                error: function() {
                    $.fancybox.close();
                    alert('Error loading content');
                }
            });
        }, true); // TRUE = capture phase - runs before theme's bubble phase handlers
    })();
    </script>
    <a href="#" class="tt-scroll-to-top">
	<div class="tt-stt-progress tt-magnetic-item">
		<svg class="tt-stt-progress-circle" width="100%" height="100%" viewBox="-1 -1 102 102">
			<path d="M50,1 a49,49 0 0,1 0,98 a49,49 0 0,1 0,-98"></path>
		</svg>
	</div> 
</a>
</div></main>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/zpryme-child/*","/wp-content/themes/jesper/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
			<script>
				const lazyloadRunObserver = () => {
					const lazyloadBackgrounds = document.querySelectorAll( `.e-con.e-parent:not(.e-lazyloaded)` );
					const lazyloadBackgroundObserver = new IntersectionObserver( ( entries ) => {
						entries.forEach( ( entry ) => {
							if ( entry.isIntersecting ) {
								let lazyloadBackground = entry.target;
								if( lazyloadBackground ) {
									lazyloadBackground.classList.add( 'e-lazyloaded' );
								}
								lazyloadBackgroundObserver.unobserve( entry.target );
							}
						});
					}, { rootMargin: '200px 0px 200px 0px' } );
					lazyloadBackgrounds.forEach( ( lazyloadBackground ) => {
						lazyloadBackgroundObserver.observe( lazyloadBackground );
					} );
				};
				const events = [
					'DOMContentLoaded',
					'elementor/lazyload/observe',
				];
				events.forEach( ( event ) => {
					document.addEventListener( event, lazyloadRunObserver );
				} );
			</script>
			<link rel='stylesheet' id='elementor-post-187-css' href='https://zpryme.com/wp-content/uploads/elementor/css/post-187.css?ver=1780546974' type='text/css' media='all' />
<script type="text/javascript" src="https://zpryme.com/wp-includes/js/dist/hooks.min.js?ver=dd5603f07f9220ed27f1" id="wp-hooks-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-includes/js/dist/i18n.min.js?ver=c26c3dc7bed366793375" id="wp-i18n-js"></script>
<script type="text/javascript" id="wp-i18n-js-after">
/* <![CDATA[ */
wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } );
//# sourceURL=wp-i18n-js-after
/* ]]> */
</script>
<script type="text/javascript" src="https://zpryme.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.6" id="swv-js"></script>
<script type="text/javascript" id="contact-form-7-js-before">
/* <![CDATA[ */
var wpcf7 = {
    "api": {
        "root": "https:\/\/zpryme.com\/wp-json\/",
        "namespace": "contact-form-7\/v1"
    },
    "cached": 1
};
//# sourceURL=contact-form-7-js-before
/* ]]> */
</script>
<script type="text/javascript" src="https://zpryme.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.6" id="contact-form-7-js"></script>
<script type="text/javascript" src="https://challenges.cloudflare.com/turnstile/v0/api.js" id="cloudflare-turnstile-js" data-wp-strategy="async"></script>
<script type="text/javascript" id="cloudflare-turnstile-js-after">
/* <![CDATA[ */
document.addEventListener( 'wpcf7submit', e => turnstile.reset() );
//# sourceURL=cloudflare-turnstile-js-after
/* ]]> */
</script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/gsap/gsap.min.js?ver=1.0.6" id="jesper-gsap-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/gsap/ScrollToPlugin.min.js?ver=1.0.6" id="jesper-scrolltoplugin-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/gsap/ScrollTrigger.min.js?ver=1.0.6" id="jesper-scrolltrigger-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/lenis.min.js?ver=1.0.6" id="lenis-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-includes/js/imagesloaded.min.js?ver=5.0.0" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/isotope/isotope.pkgd.min.js?ver=1.0.6" id="isotope-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/isotope/packery-mode.pkgd.min.js?ver=1.0.6" id="packery-mode-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/fancybox/js/fancybox.umd.js?ver=1.0.6" id="fancybox-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/vendor/swiper/js/swiper-bundle.min.js?ver=1.0.6" id="swiper-bundle-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/js/jquery-share-page.js?ver=1.0.6" id="jesper-share-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/js/theme.js?ver=1.0.6" id="jesper-main-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/themes/jesper/includes/js/jesper-scripts.js?ver=1.0.6" id="jesper-scripts-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/plugins/elementor/assets/js/webpack.runtime.min.js?ver=3.35.0" id="elementor-webpack-runtime-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/plugins/elementor/assets/js/frontend-modules.min.js?ver=3.35.0" id="elementor-frontend-modules-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-includes/js/jquery/ui/core.min.js?ver=1.13.3" id="jquery-ui-core-js"></script>
<script type="text/javascript" id="elementor-frontend-js-before">
/* <![CDATA[ */
var elementorFrontendConfig = {"environmentMode":{"edit":false,"wpPreview":false,"isScriptDebug":false},"i18n":{"shareOnFacebook":"Share on Facebook","shareOnTwitter":"Share on Twitter","pinIt":"Pin it","download":"Download","downloadImage":"Download image","fullscreen":"Fullscreen","zoom":"Zoom","share":"Share","playVideo":"Play Video","previous":"Previous","next":"Next","close":"Close","a11yCarouselPrevSlideMessage":"Previous slide","a11yCarouselNextSlideMessage":"Next slide","a11yCarouselFirstSlideMessage":"This is the first slide","a11yCarouselLastSlideMessage":"This is the last slide","a11yCarouselPaginationBulletMessage":"Go to slide"},"is_rtl":false,"breakpoints":{"xs":0,"sm":480,"md":768,"lg":1025,"xl":1440,"xxl":1600},"responsive":{"breakpoints":{"mobile":{"label":"Mobile Portrait","value":767,"default_value":767,"direction":"max","is_enabled":true},"mobile_extra":{"label":"Mobile Landscape","value":880,"default_value":880,"direction":"max","is_enabled":false},"tablet":{"label":"Tablet Portrait","value":1024,"default_value":1024,"direction":"max","is_enabled":true},"tablet_extra":{"label":"Tablet Landscape","value":1200,"default_value":1200,"direction":"max","is_enabled":false},"laptop":{"label":"Laptop","value":1366,"default_value":1366,"direction":"max","is_enabled":false},"widescreen":{"label":"Widescreen","value":2400,"default_value":2400,"direction":"min","is_enabled":false}},"hasCustomBreakpoints":false},"version":"3.35.0","is_static":false,"experimentalFeatures":{"e_font_icon_svg":true,"additional_custom_breakpoints":true,"container":true,"e_optimized_markup":true,"e_pro_free_trial_popup":true,"nested-elements":true,"home_screen":true,"global_classes_should_enforce_capabilities":true,"e_variables":true,"cloud-library":true,"e_opt_in_v4_page":true,"e_components":true,"e_interactions":true,"e_editor_one":true,"import-export-customization":true},"urls":{"assets":"https:\/\/zpryme.com\/wp-content\/plugins\/elementor\/assets\/","ajaxurl":"https:\/\/zpryme.com\/wp-admin\/admin-ajax.php","uploadUrl":"https:\/\/zpryme.com\/wp-content\/uploads"},"nonces":{"floatingButtonsClickTracking":"cfee388ab7"},"swiperClass":"swiper","settings":{"page":[],"editorPreferences":[]},"kit":{"active_breakpoints":["viewport_mobile","viewport_tablet"],"global_image_lightbox":"yes","lightbox_enable_counter":"yes","lightbox_enable_fullscreen":"yes","lightbox_enable_zoom":"yes","lightbox_enable_share":"yes","lightbox_title_src":"title","lightbox_description_src":"description"},"post":{"id":2209,"title":"Zpryme","excerpt":"","featuredImage":false}};
//# sourceURL=elementor-frontend-js-before
/* ]]> */
</script>
<script type="text/javascript" src="https://zpryme.com/wp-content/plugins/elementor/assets/js/frontend.min.js?ver=3.35.0" id="elementor-frontend-js"></script>
<script type="text/javascript" src="https://zpryme.com/wp-content/plugins/jesper-plugin/elementor-js/elementor-service.js" id="elementor-service-js"></script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://zpryme.com/wp-includes/js/wp-emoji-release.min.js?ver=6.9.4"}}
</script>
<script type="module">
/* <![CDATA[ */
/*! This file is auto-generated */
const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))});
//# sourceURL=https://zpryme.com/wp-includes/js/wp-emoji-loader.min.js
/* ]]> */
</script>
<script>// Destroy existing Lenis instance if it exists
if (window.lenis) {
  window.lenis.destroy();
  window.lenis = null;
}

// Stop any existing animation frame
if (window.lenisRAF) {
  cancelAnimationFrame(window.lenisRAF);
  window.lenisRAF = null;
}

// Initialize new Lenis with custom settings
window.lenis = new Lenis({
  lerp: 0.17,
  duration: 1.2,
  easing: (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),
  orientation: 'vertical',
  gestureOrientation: 'vertical',
  smoothWheel: true,
  wheelMultiplier: 1,
  touchMultiplier: 2,
  infinite: false,
  prevent: (element) => {
    return element.classList.contains('nectar-modal') ||
           element.classList.contains('select2-container') ||
           element.classList.contains('widget_shopping_cart') ||
           element.id === 'slide-out-widget-area';
  }
});

// Animation loop
function raf(time) {
  window.lenis.raf(time);
  window.lenisRAF = requestAnimationFrame(raf);
}

window.lenisRAF = requestAnimationFrame(raf);
</script>    <script>
    (function() {
        'use strict';
        
        // Vertex Shader
        const vertexShader = `
            uniform float time;
            varying vec2 vUv;
            varying vec3 vPosition;
            uniform vec2 pixels;
            float PI = 3.141592653589793238;
            void main() {
                vUv = uv;
                gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
            }
        `;

        // Fragment Shader
        const fragmentShader = `
            uniform float time;
            uniform float progress;
            uniform sampler2D uDataTexture;
            uniform sampler2D uTexture;
            uniform vec4 resolution;
            varying vec2 vUv;
            varying vec3 vPosition;
            float PI = 3.141592653589793238;
            void main() {
                vec2 newUV = (vUv - vec2(0.5))*resolution.zw + vec2(0.5);
                vec4 color = texture2D(uTexture,newUV);
                vec4 offset = texture2D(uDataTexture,vUv);
                gl_FragColor = texture2D(uTexture,newUV - 0.02*offset.rg);
            }
        `;

        function clamp(number, min, max) {
            return Math.max(min, Math.min(number, max));
        }

        class PixelDistortion {
            constructor(options) {
                this.scene = new THREE.Scene();
                this.container = options.dom;
                
                // Find media element (video or image)
                this.media = this.findMediaElement(this.container);
                
                if (!this.media) {
                    console.error('PixelDistortion: No media found in container', this.container);
                    return;
                }
                
                this.mediaType = this.media.type;
                this.mediaElement = this.media.element;
                
                // Store original element parent for proper canvas placement
                this.mediaParent = this.mediaElement.parentElement;

                this.width = this.container.offsetWidth;
                this.height = this.container.offsetHeight;
                
                this.renderer = new THREE.WebGLRenderer({ alpha: true, antialias: true });
                this.renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
                this.renderer.setSize(this.width, this.height);
                this.renderer.setClearColor(0x000000, 0);

                // Hide original media element but keep it playing if it's a video
                this.mediaElement.style.display = 'none';
                
                // Ensure video continues to play when hidden
                if (this.mediaType === 'video') {
                    this.mediaElement.play().catch(e => {
                        console.log('Video autoplay prevented:', e);
                    });
                }
                
                // Add canvas to media's direct parent for better integration
                this.mediaParent.style.position = 'relative';
                this.mediaParent.appendChild(this.renderer.domElement);
                
                // Make canvas absolute positioned
                this.renderer.domElement.style.position = 'absolute';
                this.renderer.domElement.style.top = '0';
                this.renderer.domElement.style.left = '0';
                this.renderer.domElement.style.width = '100%';
                this.renderer.domElement.style.height = '100%';

                // Setup orthographic camera for 2D rendering
                var frustumSize = 1;
                this.camera = new THREE.OrthographicCamera(
                    frustumSize / -2, frustumSize / 2, 
                    frustumSize / 2, frustumSize / -2, 
                    -1000, 1000
                );
                this.camera.position.set(0, 0, 2);

                this.time = 0;
                this.mouse = {
                    x: 0,
                    y: 0,
                    prevX: 0,
                    prevY: 0,
                    vX: 0,
                    vY: 0
                };

                this.isPlaying = true;
                this.loadSettings();
                this.addObjects();
                this.resize();
                this.setupResize();
                this.mouseEvents();
                this.render();
            }

            findMediaElement(container) {
                // First check for video element
                let video = container.querySelector('video');
                if (video) {
                    return { type: 'video', element: video };
                }
                
                // Then try to find image
                let img = container.querySelector('img');
                if (!img && container.tagName === 'IMG') {
                    img = container;
                }
                
                if (img) {
                    return { type: 'image', element: img };
                }
                
                return null;
            }

            getValue(val) {
                const value = this.container.getAttribute('data-' + val);
                return value ? parseFloat(value) : null;
            }

            loadSettings() {
                this.settings = {
                    grid: this.getValue('grid') || 34,
                    mouse: this.getValue('mouse') || 0.25,
                    strength: this.getValue('strength') || 1,
                    relaxation: this.getValue('relaxation') || 0.9,
                };
            }

            mouseEvents() {
                let isUpdating = false;
                let pendingMouseEvent = null;

                const updateMouse = (e) => {
                    pendingMouseEvent = e;
                    
                    if (!isUpdating) {
                        isUpdating = true;
                        requestAnimationFrame(() => {
                            if (pendingMouseEvent) {
                                const rect = this.container.getBoundingClientRect();
                                this.mouse.x = (pendingMouseEvent.clientX - rect.left) / this.width;
                                this.mouse.y = (pendingMouseEvent.clientY - rect.top) / this.height;

                                this.mouse.vX = this.mouse.x - this.mouse.prevX;
                                this.mouse.vY = this.mouse.y - this.mouse.prevY;

                                this.mouse.prevX = this.mouse.x;
                                this.mouse.prevY = this.mouse.y;
                                
                                pendingMouseEvent = null;
                            }
                            isUpdating = false;
                        });
                    }
                };

                // Listen on the page header parent instead of container to avoid overlay blocking
                const pageHeader = this.container.closest('#page-header') || this.container.closest('.ph-full') || this.container;
                
                pageHeader.addEventListener('mousemove', updateMouse, { passive: true });
                pageHeader.addEventListener('touchmove', (e) => {
                    if (e.touches.length > 0) {
                        updateMouse(e.touches[0]);
                    }
                }, { passive: true });
            }

            setupResize() {
                window.addEventListener('resize', this.resize.bind(this));
            }

            resize() {
                this.width = this.container.offsetWidth;
                this.height = this.container.offsetHeight;
                this.renderer.setSize(this.width, this.height);
                this.camera.aspect = this.width / this.height;

                // Media aspect calculation
                let mediaAspect;
                if (this.mediaType === 'video') {
                    mediaAspect = this.mediaElement.videoHeight / this.mediaElement.videoWidth;
                } else {
                    mediaAspect = this.mediaElement.naturalHeight / this.mediaElement.naturalWidth;
                }
                
                let a1, a2;
                if (this.height / this.width > mediaAspect) {
                    a1 = (this.width / this.height) * mediaAspect;
                    a2 = 1;
                } else {
                    a1 = 1;
                    a2 = (this.height / this.width) / mediaAspect;
                }

                if (this.material) {
                    this.material.uniforms.resolution.value.x = this.width;
                    this.material.uniforms.resolution.value.y = this.height;
                    this.material.uniforms.resolution.value.z = a1;
                    this.material.uniforms.resolution.value.w = a2;
                }

                this.camera.updateProjectionMatrix();
                this.regenerateGrid();
            }

            regenerateGrid() {
                this.size = this.settings.grid;
                const width = this.size;
                const height = this.size;
                const size = width * height;
                const data = new Float32Array(3 * size);

                for (let i = 0; i < size; i++) {
                    let r = Math.random() * 255 - 125;
                    let r1 = Math.random() * 255 - 125;
                    const stride = i * 3;
                    data[stride] = r;
                    data[stride + 1] = r1;
                    data[stride + 2] = r;
                }

                this.texture = new THREE.DataTexture(
                    data, width, height, 
                    THREE.RGBFormat, THREE.FloatType
                );
                this.texture.magFilter = this.texture.minFilter = THREE.NearestFilter;

                if (this.material) {
                    this.material.uniforms.uDataTexture.value = this.texture;
                    this.material.uniforms.uDataTexture.value.needsUpdate = true;
                }
            }

            addObjects() {
                this.regenerateGrid();
                
                // Create appropriate texture based on media type
                let texture;
                if (this.mediaType === 'video') {
                    // Use live video as texture
                    texture = new THREE.VideoTexture(this.mediaElement);
                    texture.minFilter = THREE.LinearFilter;
                    texture.magFilter = THREE.LinearFilter;
                    texture.format = THREE.RGBFormat;
                } else {
                    // Use image as texture
                    texture = new THREE.TextureLoader().load(
                        this.mediaElement.src,
                        () => {
                            if (this.material) {
                                this.material.uniforms.uTexture.value.needsUpdate = true;
                            }
                        },
                        undefined,
                        (error) => {
                            console.error('PixelDistortion: Error loading texture', error);
                        }
                    );
                }

                this.material = new THREE.ShaderMaterial({
                    extensions: {
                        derivatives: '#extension GL_OES_standard_derivatives : enable'
                    },
                    side: THREE.DoubleSide,
                    uniforms: {
                        time: { value: 0 },
                        resolution: { value: new THREE.Vector4() },
                        uTexture: { value: texture },
                        uDataTexture: { value: this.texture },
                    },
                    vertexShader: vertexShader,
                    fragmentShader: fragmentShader
                });

                this.geometry = new THREE.PlaneGeometry(1, 1, 1, 1);
                this.plane = new THREE.Mesh(this.geometry, this.material);
                this.scene.add(this.plane);
            }

            updateDataTexture() {
                let data = this.texture.image.data;
                
                // Apply relaxation to all grid points
                for (let i = 0; i < data.length; i += 3) {
                    data[i] *= this.settings.relaxation;
                    data[i + 1] *= this.settings.relaxation;
                }

                // Calculate mouse influence on grid
                let gridMouseX = this.size * this.mouse.x;
                let gridMouseY = this.size * (1 - this.mouse.y);
                let maxDist = this.size * this.settings.mouse;
                let aspect = this.height / this.width;

                for (let i = 0; i < this.size; i++) {
                    for (let j = 0; j < this.size; j++) {
                        let distance = ((gridMouseX - i) ** 2) / aspect + (gridMouseY - j) ** 2;
                        let maxDistSq = maxDist ** 2;

                        if (distance < maxDistSq) {
                            let index = 3 * (i + this.size * j);
                            let power = maxDist / Math.sqrt(distance);
                            power = clamp(power, 0, 10);

                            data[index] += this.settings.strength * 100 * this.mouse.vX * power;
                            data[index + 1] -= this.settings.strength * 100 * this.mouse.vY * power;
                        }
                    }
                }

                this.mouse.vX *= 0.9;
                this.mouse.vY *= 0.9;
                this.texture.needsUpdate = true;
            }

            render() {
                if (!this.isPlaying) return;
                this.time += 0.05;
                this.updateDataTexture();
                this.material.uniforms.time.value = this.time;
                requestAnimationFrame(this.render.bind(this));
                this.renderer.render(this.scene, this.camera);
            }

            destroy() {
                this.isPlaying = false;
                if (this.renderer && this.mediaParent) {
                    this.renderer.dispose();
                    if (this.mediaParent.contains(this.renderer.domElement)) {
                        this.mediaParent.removeChild(this.renderer.domElement);
                    }
                }
                if (this.mediaElement) {
                    this.mediaElement.style.display = '';
                }
            }
        }

        // Export to global scope
        window.PixelDistortion = PixelDistortion;

        // Auto-initialize on DOM ready
        function initPixelDistortion() {
            // Support multiple selectors
            const selectors = [
                '.pixel-distortion',           // Standard class
                '[data-distortion="true"]',    // Data attribute
                '[data-distortion="enabled"]'  // Alternative data attribute
            ];
            
            selectors.forEach(selector => {
                const elements = document.querySelectorAll(selector);
                elements.forEach(el => {
                    // Avoid double-initialization
                    if (!el.hasAttribute('data-distortion-initialized')) {
                        el.setAttribute('data-distortion-initialized', 'true');
                        new PixelDistortion({ dom: el });
                    }
                });
            });
        }

        // Initialize when DOM is ready
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', initPixelDistortion);
        } else {
            initPixelDistortion();
        }

        // Also initialize after a delay for Elementor
        setTimeout(initPixelDistortion, 500);
    })();
    </script>
        <script>
    jQuery(document).ready(function($) {
        
        // ============================================
        // 🎨 EASY PRESET SWITCHING - CHANGE THIS LINE!
        // ============================================
        // Available presets: 'demo1', 'demo2', 'demo3', 'subtle', 'dramatic', 'smooth'
        
        var ACTIVE_PRESET = 'demo3';  // ← CHANGE THIS TO SWITCH EFFECTS!
        
        // ============================================
        
        // Preset definitions
        var presets = {
            demo1: {
                // Demo 1: Smooth, subtle distortion
                grid: 50,
                mouse: 0.25,
                strength: 0.11,
                relaxation: 0.9
            },
            demo2: {
                // Demo 2: Detailed, professional (CURRENT)
                grid: 607,
                mouse: 0.11,
                strength: 0.36,
                relaxation: 0.96
            },
            demo3: {
                // Demo 3: Low-res, chunky pixels
                grid: 15,
                mouse: 0.13,
                strength: 0.15,
                relaxation: 0.9
            },
            subtle: {
                // Custom: Very subtle effect
                grid: 300,
                mouse: 0.15,
                strength: 0.2,
                relaxation: 0.85
            },
            dramatic: {
                // Custom: Strong, eye-catching effect
                grid: 400,
                mouse: 0.2,
                strength: 0.7,
                relaxation: 0.98
            },
            smooth: {
                // Custom: Smooth, flowing distortion
                grid: 200,
                mouse: 0.3,
                strength: 0.5,
                relaxation: 0.92
            }
        };
        
        // Wait for Elementor and images to fully load
        setTimeout(function() {
            // Get the selected preset
            var preset = presets[ACTIVE_PRESET] || presets.demo3;
            
            // Apply to all .ph-image and .ph-video-inner elements (Elementor heroes)
            $('.ph-image, .ph-video-inner').each(function() {
                // Skip if already initialized
                if ($(this).attr('data-distortion-initialized')) {
                    return;
                }
                
                // Add distortion with selected preset
                $(this)
                    .attr('data-distortion', 'true')
                    .attr('data-grid', preset.grid)
                    .attr('data-mouse', preset.mouse)
                    .attr('data-strength', preset.strength)
                    .attr('data-relaxation', preset.relaxation);
                
                // Initialize if PixelDistortion is available
                if (typeof window.PixelDistortion !== 'undefined') {
                    new window.PixelDistortion({ dom: this });
                }
            });
            
            // Log which preset is active with count
            var imageCount = $('.ph-image[data-distortion-initialized]').length;
            var videoCount = $('.ph-video-inner[data-distortion-initialized]').length;
            console.log('🎨 Pixel Distortion Effect Active: ' + ACTIVE_PRESET);
            console.log('   → ' + imageCount + ' image hero(s), ' + videoCount + ' video hero(s)');
        }, 600);
    });
    </script>
        <script type="text/javascript">
    jQuery(document).ready(function($) {
        // Function to sync style switch state
        function syncStyleSwitchState() {
            if ($('body').hasClass('tt-lightmode-on')) {
                $('.tt-style-switch-mobile').addClass('active');
            } else {
                $('.tt-style-switch-mobile').removeClass('active');
            }
        }
        
        // Handle mobile style switch click
        $('.tt-style-switch-mobile').on('click', function() {
            // Toggle the active class
            $(this).toggleClass('active');
            
            // Get current light mode state
            let lightMode = localStorage.getItem('tt-lightmode-on');
            
            // Toggle light mode
            if (lightMode !== 'enabled') {
                $('body').addClass('tt-lightmode-on');
                localStorage.setItem('tt-lightmode-on', 'enabled');
            } else {
                $('body').removeClass('tt-lightmode-on');
                localStorage.setItem('tt-lightmode-on', 'disabled');
            }
            
            // Sync desktop button state
            if ($('body').hasClass('tt-lightmode-on')) {
                $('.tt-style-switch').addClass('active');
            } else {
                $('.tt-style-switch').removeClass('active');
            }
        });
        
        // Sync state on page load
        syncStyleSwitchState();
        
        // Also sync when desktop button is clicked
        $('.tt-style-switch').on('click', function() {
            setTimeout(syncStyleSwitchState, 50);
        });
    });
    </script>
        <script>
    jQuery(document).ready(function($) {
        // Wait for page to load
        setTimeout(function() {
            
            // ============================================
            // 🎲 RANDOM HERO IMAGE CONFIGURATION
            // ============================================
            
            var DEFAULT_FOLDER = 'hero-images';  // Default folder name in child theme
            
            // Special folders for specific pages/sections
            var SPECIAL_FOLDERS = {
                'ets-hero': 'hero-images/ets'  // ETS page uses hero-images/ets/
                // Add more here: 'your-class': 'hero-images/your-subfolder'
            };
            
            // Post types to exclude (keep their Elementor-selected images)
            var EXCLUDED_POST_TYPES = [
                'single-portfolio',
                'single-work', 
                'single-project',
                'post-type-portfolio',
                'post-type-work',
                'single-post',  // Blog posts
                'single',        // Generic single posts
                'blog'           // Blog archive pages
                // Add more post type body classes here if needed
            ];
            
            // ============================================
            
            // Check if we should skip this page (portfolio/work posts)
            var shouldSkip = false;
            $.each(EXCLUDED_POST_TYPES, function(index, postType) {
                if ($('body').hasClass(postType)) {
                    shouldSkip = true;
                    console.log('🎨 Excluded post type detected - keeping original Elementor image');
                    return false; // Break the loop
                }
            });
            
            // Exit early if this is an excluded post type
            if (shouldSkip) {
                return;
            }
            
            // ============================================
            
            // Determine which folder to use based on container class
            var folderToUse = DEFAULT_FOLDER;
            var containerClass = '';
            
            // Check if hero container has a special class
            var $heroContainer = $('.ph-image').closest('[class*="-hero"]');
            if ($heroContainer.length > 0) {
                // Get all classes from the container
                var classes = $heroContainer.attr('class').split(/\s+/);
                
                // Check if any class matches our special folders
                $.each(classes, function(index, className) {
                    if (SPECIAL_FOLDERS[className]) {
                        folderToUse = SPECIAL_FOLDERS[className];
                        containerClass = className;
                        return false; // Break the loop
                    }
                });
            }
            
            // Get the child theme URL from WordPress
            var childThemeUrl = 'https://zpryme.com/wp-content/themes/zpryme-child';
            var heroImagesPath = childThemeUrl + '/' + folderToUse;
            
            // Get list of available images from server
            $.ajax({
                url: 'https://zpryme.com/wp-admin/admin-ajax.php',
                type: 'POST',
                data: {
                    action: 'get_random_hero_image',
                    folder: folderToUse
                },
                success: function(response) {
                    if (response.success && response.data.image_url) {
                        // Find all hero images and replace with random one
                        $('.ph-image img, .ph-image-inner img').each(function() {
                            var $img = $(this);
                            var randomImageUrl = response.data.image_url;
                            
                            // Replace the image source
                            $img.attr('src', randomImageUrl);
                            
                            // Also update srcset if it exists
                            if ($img.attr('srcset')) {
                                $img.attr('srcset', randomImageUrl);
                            }
                            
                            if (containerClass) {
                                console.log('🎲 Random hero image loaded for "' + containerClass + '": ' + response.data.filename);
                            } else {
                                console.log('🎲 Random hero image loaded: ' + response.data.filename);
                            }
                        });
                    } else {
                        console.warn('⚠️ No hero images found in: ' + heroImagesPath);
                        console.warn('Make sure images exist in: wp-content/themes/YOUR-CHILD-THEME/' + folderToUse + '/');
                    }
                },
                error: function() {
                    console.error('❌ Error loading random hero image');
                }
            });
            
        }, 300);
    });
    </script>
    <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a064a1ab5cb0447f',t:'MTc4MDU1MTkyNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>
