<!DOCTYPE html>
<html lang="en" data-lang="en"><head><meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    <meta name="view-transition" content="same-origin">
    <base href="/"><link rel="canonical" href="https://wagenheimer.com" />
        <link rel="alternate" hreflang="en" href="https://wagenheimer.com" />
        <link rel="alternate" hreflang="pt" href="https://wagenheimer.com/pt" />
        <link rel="alternate" hreflang="x-default" href="https://wagenheimer.com" /><meta name="robots" content="index, follow" />
        <meta name="author" content="Cezar Wagenheimer">
        <meta property="fb:app_id" content="TODO_FACEBOOK_APP_ID">
        <meta property="og:site_name" content="Cezar Wagenheimer">
        <meta property="og:locale" content="en-US" />
        <meta property="og:type" content="website">
        <meta property="og:url" content="https://wagenheimer.com" />
        <meta property="og:image" content="https://wagenheimer.com/cezarportrait.jpg" />
        <meta property="og:image:secure_url" content="https://wagenheimer.com/cezarportrait.jpg" />
        <meta property="og:image:type" content="image/jpeg">
        <meta property="og:image:width" content="1200">
        <meta property="og:image:height" content="630"><meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:site" content="@wagenheimer" />
    <meta name="twitter:creator" content="@wagenheimer" />
    <meta name="twitter:image" content="https://wagenheimer.com/cezarportrait.jpg" />

    
    <script type="text/javascript">
        (function (c, l, a, r, i, t, y) {
            c[a] = c[a] || function () { (c[a].q = c[a].q || []).push(arguments) };
            t = l.createElement(r); t.async = 1; t.src = "https://www.clarity.ms/tag/" + i;
            y = l.getElementsByTagName(r)[0]; y.parentNode.insertBefore(t, y);
        })(window, document, "clarity", "script", "5sc2xgdj1g");
    </script>

    
    <script>
        (function () {
            const skip = sessionStorage.getItem('skipAnimations');
            if (skip === '1') {
                document.documentElement.classList.add('no-animate');
                // Optional: Don't clear yet, clear after navigation or load
            }
        })();
    </script>

    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;700;800&family=JetBrains+Mono:wght@400;700&family=Orbitron:wght@500;700;900&family=Fira+Code:wght@300;400;500;600;700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/devicons/devicon@latest/devicon.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-okaidia.min.css?v=639165898928724063" />
    <link rel="stylesheet" href="css/app.8pzeqkr5mt.css?v=639165898928724138" />
    <link rel="stylesheet" href="css/blog.o8nvrwl7mw.css?v=639165898928724153" />
    <link rel="icon" type="image/svg+xml" href="cw-icon.svg">
    <link rel="stylesheet" href="https://unpkg.com/easymde/dist/easymde.min.css">
    <script src="https://unpkg.com/easymde/dist/easymde.min.js"></script>
    <script src="js/admin.3nkdgm2lau.js?v=639165898928724166"></script>
    <title>Cezar Wagenheimer | Full Stack Developer &amp; Game Creator</title><meta name="description" content="Transforming ideas into high-impact software for over Specialist in" />
    <meta property="og:title" content="Cezar Wagenheimer | Full Stack Developer &amp; Game Creator" />
    <meta property="og:description" content="Transforming ideas into high-impact software for over" />
    <meta property="og:url" content="https://wagenheimer.com/?feed=comments-rss2" />
    <meta property="og:image" content="https://wagenheimer.com/cezarportrait.jpg" />
    <meta property="og:image:secure_url" content="https://wagenheimer.com/cezarportrait.jpg" />
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta property="twitter:image" content="https://wagenheimer.com/cezarportrait.jpg" />
    <link rel="stylesheet" href="css/admin.j2hwom0xnf.css?v=639165898928724187" />
    <link rel="stylesheet" href="css/galactic_override.rkizfr749c.css?v=639165898928724203" />
    <script src="https://unpkg.com/lucide@latest"></script><script async src="https://www.googletagmanager.com/gtag/js?id=G-2ZQJY7PTXK"></script>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag() { dataLayer.push(arguments); }
            gtag('js', new Date());

            gtag('config', 'G-2ZQJY7PTXK');
        </script></head>

<body><div class="fixed inset-0 -z-50 overflow-hidden pointer-events-none"><canvas id="global-starfield" class="absolute inset-0 opacity-80"></canvas>
    <div class="pointer-events-none absolute inset-0 z-10 bg-[linear-gradient(rgba(18,16,16,0)_50%,rgba(0,0,0,0.1)_50%),linear-gradient(90deg,rgba(0,255,0,0.02),rgba(0,255,0,0.01),rgba(0,255,0,0.02))] bg-[length:100%_2px,3px_100%]"></div></div>

<div class="bg-ambient"></div>


<nav class="fixed top-0 w-full z-[90] glass-nav bg-[#0c1016]/80 border-b border-white/5" style="position: fixed !important; top: 0; left: 0; right: 0; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);"><div class="container mx-auto px-6 h-20 flex items-center justify-between"><a href="/" class="flex items-center gap-4 group no-underline"><div class="relative w-12 h-12 flex items-center justify-center"><div class="relative w-full h-full bg-[#00ff41] rounded-xl flex items-center justify-center border border-white/20 group-hover:scale-105 transition-transform duration-300 shadow-[0_0_15px_rgba(0,255,65,0.4)]"><span class="font-cyber font-black text-black text-lg tracking-widest relative z-10">CW</span></div></div>

            <div class="flex flex-col"><span class="font-bold text-white text-xl leading-none tracking-tight">wagenheimer<span class="text-neon-cyan">.com</span></span>
                <span class="text-[10px] text-slate-400 font-mono tracking-[0.3em] uppercase group-hover:text-neon-green transition-colors mt-0.5">Cezar
                    Wagenheimer</span></div></a>

        
        <div class="hidden md:flex items-center gap-1"><a href="/" class="nav-pill nav-track nav-current" data-nav-target="home"><i class="fa-solid fa-house w-4 h-4"></i>
                <span>Home</span></a>
            <a href="/#about" class="nav-pill nav-track" data-nav-target="about"><i class="fa-regular fa-user w-4 h-4"></i>
                <span>About</span></a>
            <a href="/#stack" class="nav-pill nav-track" data-nav-target="stack"><i class="fa-solid fa-layer-group w-4 h-4"></i>
                <span>Stack</span></a>
            <a href="/#companies" class="nav-pill nav-track" data-nav-target="companies"><i class="fa-regular fa-building w-4 h-4"></i>
                <span>Companies</span></a>
            <a href="/blog" class="nav-pill nav-track " data-nav-target="blog"><i class="fa-solid fa-pen-nib w-4 h-4"></i>
                <span>Blog</span></a></div>

        
        <div class="hidden md:flex items-center gap-4"><div class="flex items-center gap-1 bg-white/5 rounded-full p-1 border border-white/10"><a href="/pt?feed=comments-rss2" data-enhance-nav="false" onclick="sessionStorage.setItem(&#x27;skipAnimations&#x27;,&#x27;1&#x27;);" class="text-slate-400 hover:text-white px-3 py-1.5 rounded-full text-xs font-bold transition-all duration-200 flex items-center gap-1.5"><span class="text-sm">🇧🇷</span>
                    <span>PT</span></a>
                <a href="/?feed=comments-rss2" data-enhance-nav="false" onclick="sessionStorage.setItem(&#x27;skipAnimations&#x27;,&#x27;1&#x27;);" class="bg-white/20 text-white px-3 py-1.5 rounded-full text-xs font-bold transition-all duration-200 flex items-center gap-1.5"><span class="text-sm">🇺🇸</span>
                    <span>EN</span></a></div>

            
            <div class="w-px h-6 bg-white/10"></div>

            
            <div class="flex items-center gap-2"><a href="https://github.com/wagenheimer" target="_blank" class="w-9 h-9 rounded-full bg-white/5 border border-white/10 flex items-center justify-center text-slate-400 hover:text-white hover:bg-white/10 hover:border-white/20 transition"><i class="devicon-github-original text-lg"></i></a>
                <a href="https://linkedin.com/in/wagenheimer" target="_blank" class="w-9 h-9 rounded-full bg-white/5 border border-white/10 flex items-center justify-center text-slate-400 hover:text-white hover:bg-white/10 hover:border-white/20 transition"><i class="devicon-linkedin-plain text-lg"></i></a></div>

            
            <div class="w-px h-6 bg-white/10"></div>

            
            <a href="/#contact" class="flex items-center gap-2 px-6 py-2 btn-cyber text-white font-bold text-xs rounded-lg transition-all duration-300 group leading-none"><span class="relative z-10 pt-[1px]">CONTACT</span>
                <i class="fa-solid fa-arrow-right text-xs relative z-10 group-hover:translate-x-1 transition-transform"></i></a></div>

        
        <button id="mobile-menu-btn" class="md:hidden w-10 h-10 rounded-xl bg-white/5 border border-white/10 flex items-center justify-center text-white active:scale-95 transition-transform"><i class="fa-solid fa-bars w-5 h-5"></i></button></div>

    
    <div id="global-reading-progress" class="absolute bottom-0 left-0 h-[2px] bg-[#00ff41] shadow-[0_0_10px_#00ff41] z-[100] transition-all duration-100 w-0"></div></nav>


<div id="mobile-menu-backdrop" class="fixed inset-0 z-[95] bg-black/60 backdrop-blur-sm opacity-0 pointer-events-none transition-opacity duration-500 md:hidden" style="pointer-events: none; opacity: 0; z-index: 95;"></div>


<div id="mobile-menu" class="fixed top-0 right-0 bottom-0 w-[280px] z-[100] bg-[#0c1016]/95 backdrop-blur-2xl border-l border-white/10 translate-x-full transition-transform duration-500 md:hidden flex flex-col items-center justify-start gap-6 shadow-[-10px_0_30px_rgba(0,0,0,0.5)] overflow-y-auto"><button id="mobile-menu-close" class="absolute top-6 right-6 w-10 h-10 rounded-full bg-white/5 border border-white/10 flex items-center justify-center text-white active:scale-95 transition-transform"><i class="fa-solid fa-xmark text-lg"></i></button>

    <div class="mb-4 flex flex-col items-center"><div class="w-12 h-12 bg-[#00ff41] rounded-xl flex items-center justify-center font-cyber font-black text-black text-xs mb-2">
            CW</div>
        <span class="text-xs font-mono text-slate-500 uppercase tracking-widest">Navigation</span></div>

    <div class="w-full px-8"><p class="text-[10px] font-mono uppercase tracking-[0.18em] text-slate-500 mb-2">Language</p></div>

    
    <div class="flex items-center gap-2 bg-white/5 rounded-full p-1 border border-white/10 mb-2"><a href="/pt?feed=comments-rss2" data-enhance-nav="false" onclick="sessionStorage.setItem(&#x27;skipAnimations&#x27;,&#x27;1&#x27;);" class="text-slate-400 px-4 py-2 rounded-full text-sm font-bold transition-all duration-200 flex items-center gap-2 mobile-nav-link"><span>🇧🇷</span>
            <span>PT</span></a>
        <a href="/?feed=comments-rss2" data-enhance-nav="false" onclick="sessionStorage.setItem(&#x27;skipAnimations&#x27;,&#x27;1&#x27;);" class="bg-white/20 text-white px-4 py-2 rounded-full text-sm font-bold transition-all duration-200 flex items-center gap-2 mobile-nav-link"><span>🇺🇸</span>
            <span>EN</span></a></div>

    <div class="w-full px-8 pt-4 pb-1"><p class="text-[10px] font-mono uppercase tracking-[0.18em] text-slate-500">Navigation</p></div>

    <div class="w-full px-8 flex flex-col gap-3"><a href="/" class="text-xl font-bold text-white no-underline mobile-nav-link nav-track nav-current hover:text-brand-cyan transition-colors" data-nav-target="home">Home</a>
        <a href="/#about" class="text-xl font-bold text-white no-underline mobile-nav-link nav-track hover:text-brand-cyan transition-colors" data-nav-target="about">About</a>
        <a href="/#stack" class="text-xl font-bold text-white no-underline mobile-nav-link nav-track hover:text-brand-cyan transition-colors" data-nav-target="stack">Stack</a>
        <a href="/#companies" class="text-xl font-bold text-white no-underline mobile-nav-link nav-track hover:text-brand-cyan transition-colors" data-nav-target="companies">Companies</a>
        <a href="/blog" class="text-xl font-bold text-white no-underline mobile-nav-link nav-track  hover:text-brand-cyan transition-colors" data-nav-target="blog">Blog</a></div>

    <div class="w-full px-8 mt-4"><a href="/#contact" class="flex items-center justify-center gap-2 w-full py-4 bg-[#00ff41] text-black font-black rounded-xl mobile-nav-link shadow-[0_4px_15px_rgba(0,255,65,0.3)]"><span>CONTACT</span>
            <i class="fa-solid fa-paper-plane text-xs"></i></a></div></div>

<main class="min-h-screen">




<section class="pt-32 pb-20 flex flex-col items-center justify-center min-h-screen relative z-10"><div class="container mx-auto px-4 w-full"><div class="text-center mb-8 animate-float"><h1 class="text-3xl md:text-7xl font-bold mb-6 leading-tight tracking-tighter"><span class="inline-block reveal mode-glitch" style="font-weight: 900; text-transform: uppercase; letter-spacing: 0.05em; color: #00ff41 !important;">CEZAR</span>
                <span class="inline-block reveal mode-glitch reveal-delay-200" style="font-weight: 900; text-transform: uppercase; letter-spacing: 0.05em; color: #06b6d4 !important;">WAGENHEIMER</span></h1>

            <div class="flex items-center justify-center gap-3 mb-6 reveal reveal-pop reveal-delay-300"><div class="h-px w-12 bg-brand-cyan/30"></div>
                <p class="text-brand-cyan font-mono text-xs tracking-[0.3em] uppercase">Full Stack Developer &amp; Game Creator</p>
                <div class="h-px w-12 bg-brand-cyan/30"></div></div>

            <p class="text-slate-400 max-w-2xl mx-auto text-lg font-light mb-12 leading-relaxed reveal reveal-delay-400">Transforming ideas into high-impact software for over <span class="text-white font-semibold">30 years</span>.
                Specialist in <span class="text-brand-cyan font-medium">C# / .NET</span>, <span class="text-brand-purple font-medium">Apps Mobile</span> and <span class="text-brand-orange font-medium">Games</span>.
            </p>

            
            
            
            <div class="flex flex-col md:flex-row items-center justify-center gap-8 md:gap-12 max-w-5xl mx-auto mb-20 relative z-10"><div class="text-center group reveal-pop reveal-delay-500"><div class="stat-number text-brand-green" style="color: #00ff41; text-shadow: 0 0 15px rgba(0, 255, 65, 0.4);">30+</div>
                    <div class="stat-label group-hover:text-brand-green/70 transition-colors">Years of XP</div></div>

                
                <div class="hidden md:block w-px h-12 bg-gradient-to-b from-transparent via-white/20 to-transparent reveal reveal-delay-500"></div>

                
                <div class="text-center group reveal-pop reveal-delay-600"><div class="stat-number text-brand-purple" style="color: #d946ef; text-shadow: 0 0 15px rgba(217, 70, 239, 0.4);">SEVERAL</div>
                    <div class="stat-label group-hover:text-brand-purple/70 transition-colors">Apps &amp; Systems</div></div>

                
                <div class="hidden md:block w-px h-12 bg-gradient-to-b from-transparent via-white/20 to-transparent reveal reveal-delay-600"></div>

                
                <div class="text-center group reveal-pop reveal-delay-700"><div class="stat-number text-brand-orange" style="color: #f97316; text-shadow: 0 0 15px rgba(249, 115, 22, 0.4);">30+</div>
                    <div class="stat-label group-hover:text-brand-orange/70 transition-colors">Games Created</div></div>

                
                <div class="hidden md:block w-px h-12 bg-gradient-to-b from-transparent via-white/20 to-transparent reveal reveal-delay-700"></div>

                
                <div class="text-center group reveal-pop reveal-delay-800"><div class="stat-number text-brand-cyan" style="color: #06b6d4; text-shadow: none !important;">5M+
                    </div>
                    <div class="stat-label group-hover:text-brand-cyan/70 transition-colors">Global Impact</div></div></div></div>


        
        <div class="flex flex-col w-full max-w-[900px] mx-auto gap-4"><div class="grid grid-cols-3 gap-4 w-full"><div id="card-csharp" class="tech-card rounded-t-xl p-3 flex flex-col items-center justify-center text-center group reveal-left reveal-delay-500" style="--tech-color: #d946ef; --tech-color-dim: rgba(217, 70, 239, 0.4); --tech-bg-glow: rgba(217, 70, 239, 0.15);"><i class="devicon-csharp-plain text-3xl text-slate-600 transition duration-300 mb-1"></i>
                    <h3 class="font-cyber text-[10px] font-bold text-white tracking-wide">C# CORE</h3>
                    <span class="text-[9px] text-brand-purple font-mono mt-1 opacity-0 group-hover:opacity-100 transition">POWER: PENETRATION</span></div>
                <div id="card-unity" class="tech-card rounded-t-xl p-3 flex flex-col items-center justify-center text-center group reveal-pop reveal-delay-600" style="--tech-color: #cbd5e1; --tech-color-dim: rgba(203, 213, 225, 0.4); --tech-bg-glow: rgba(203, 213, 225, 0.1);"><i class="devicon-unity-plain text-3xl text-slate-600 transition duration-300 mb-1"></i>
                    <h3 class="font-cyber text-[10px] font-bold text-white tracking-wide">UNITY</h3>
                    <span class="text-[9px] text-slate-300 font-mono mt-1 opacity-0 group-hover:opacity-100 transition">POWER: MULTI-BALL</span></div>
                <div id="card-blazor" class="tech-card rounded-t-xl p-3 flex flex-col items-center justify-center text-center group reveal-right reveal-delay-500" style="--tech-color: #06b6d4; --tech-color-dim: rgba(6, 182, 212, 0.4); --tech-bg-glow: rgba(6, 182, 212, 0.15);"><i class="devicon-dotnetcore-plain text-3xl text-slate-600 transition duration-300 mb-1"></i>
                    <h3 class="font-cyber text-[10px] font-bold text-white tracking-wide">BLAZOR</h3>
                    <span class="text-[9px] text-brand-cyan font-mono mt-1 opacity-0 group-hover:opacity-100 transition">POWER: WIDE PADDLE</span></div></div>

            
            <div id="game-container" class="w-full shadow-[0_0_60px_rgba(6,182,212,0.1)] border border-white/10 reveal-pop"><div class="game-grid"></div>

                <div id="start-screen" class="overlay-text cursor-pointer group"><div class="cursor-pointer group flex flex-col items-center"><div class="relative mb-6 group-hover:scale-105 transition duration-300"><h2 class="text-4xl md:text-6xl font-cyber font-bold text-transparent bg-clip-text bg-gradient-to-r from-brand-violet to-brand-cyan drop-shadow-[0_0_20px_rgba(6,182,212,0.5)] whitespace-pre-line" data-i18n="testSkills">TEST&#xA;YOUR&#xA;SKILLS</h2>
                            <div class="absolute -inset-1 blur-xl bg-gradient-to-r from-brand-violet to-brand-cyan opacity-20 group-hover:opacity-40 transition duration-500 animate-pulse"></div></div>

                        <div class="relative overflow-hidden"><div class="text-white font-mono text-sm font-bold tracking-[0.2em] bg-black/60 px-8 py-3 rounded border border-brand-cyan/30 group-hover:border-brand-cyan/80 transition shadow-[0_0_15px_rgba(6,182,212,0.2)]"><span class="animate-pulse" data-i18n="clickStart">CLICK TO START</span></div></div></div></div>

                <div id="powerup-display" class="absolute top-1/2 left-0 w-full pointer-events-none z-30"></div>

                <div id="game-ui" class="absolute top-4 left-6 right-6 flex justify-between pointer-events-none opacity-0 transition-opacity duration-500 z-20"><div class="flex items-center gap-4"><div class="font-cyber text-white text-xs tracking-wider font-bold drop-shadow-md">SCORE: <span id="score-val" class="text-brand-orange">0</span></div>
                        <div id="powerups-hud" class="flex gap-1"></div></div>
                    <div class="font-cyber text-white text-xs tracking-wider font-bold drop-shadow-md">LIVES: <span id="lives-val" class="text-brand-purple">❤❤❤</span></div></div>

                <canvas id="canvas"></canvas></div>

            
            <div class="grid grid-cols-3 gap-4 w-full"><div id="card-aspnet" class="tech-card rounded-b-xl p-3 flex flex-col items-center justify-center text-center group reveal-left reveal-delay-500" style="--tech-color: #8b5cf6; --tech-color-dim: rgba(139, 92, 246, 0.4); --tech-bg-glow: rgba(139, 92, 246, 0.15);"><i class="devicon-dotnetcore-plain text-3xl text-slate-600 transition duration-300 mb-1"></i>
                    <h3 class="font-cyber text-[10px] font-bold text-white tracking-wide">ASP.NET</h3>
                    <span class="text-[9px] text-violet-400 font-mono mt-1 opacity-0 group-hover:opacity-100 transition">POWER: LASERS</span></div>
                <div id="card-maui" class="tech-card rounded-b-xl p-3 flex flex-col items-center justify-center text-center group reveal-pop reveal-delay-600" style="--tech-color: #f43f5e; --tech-color-dim: rgba(244, 63, 94, 0.4); --tech-bg-glow: rgba(244, 63, 94, 0.15);"><i class="fa-solid fa-mobile-screen-button text-2xl text-slate-600 transition duration-300 mb-2"></i>
                    <h3 class="font-cyber text-[10px] font-bold text-white tracking-wide">MAUI</h3>
                    <span class="text-[9px] text-red-400 font-mono mt-1 opacity-0 group-hover:opacity-100 transition">POWER: SAFETY NET</span></div>
                <div id="card-postgres" class="tech-card rounded-b-xl p-3 flex flex-col items-center justify-center text-center group reveal-right reveal-delay-500" style="--tech-color: #3b82f6; --tech-color-dim: rgba(59, 130, 246, 0.4); --tech-bg-glow: rgba(59, 130, 246, 0.15);"><i class="devicon-postgresql-plain text-3xl text-slate-600 transition duration-300 mb-1"></i>
                    <h3 class="font-cyber text-[10px] font-bold text-white tracking-wide">POSTGRES</h3>
                    <span class="text-[9px] text-blue-400 font-mono mt-1 opacity-0 group-hover:opacity-100 transition">POWER: GIANT BALL</span></div></div></div></div></section>


<section id="about" class="py-24 relative z-10 border-t border-white/5"><div class="container mx-auto px-6"><div class="flex items-center gap-4 mb-12"><div class="h-px bg-white/10 flex-grow"></div>
            <h2 class="text-3xl font-bold text-white tracking-tight">ABOUT ME</h2>
            <div class="h-px bg-white/10 flex-grow"></div></div>

        <div class="grid grid-cols-1 lg:grid-cols-2 gap-12 items-center reveal"><div class="flex flex-col items-center justify-center"><div class="cyber-portrait mb-8"><div class="w-64 h-64 rounded-2xl bg-slate-900 border border-white/10 overflow-hidden relative z-10"><img src="cezarportrait.jpg" alt="Cezar Wagenheimer" class="w-full h-full object-cover grayscale-[20%] group-hover:grayscale-0 transition duration-500"></div></div>
                
                <h3 class="text-3xl font-cyber font-bold text-transparent bg-clip-text bg-gradient-to-r from-neon-green to-emerald-400 drop-shadow-[0_0_10px_rgba(74,222,128,0.5)] tracking-wide">
                    CEZAR WAGENHEIMER
                </h3></div>

            
            <div><h3 class="text-2xl font-bold text-white mb-4">Full Stack Developer &amp; Game Creator</h3>
                <p class="text-slate-400 mb-6 leading-relaxed">With over <span class="text-white font-semibold">30 years of experience</span>
                    in software development, I&#x27;m a specialist in C#, .NET, and Unity. Co-founder of the studios
                    <a href="https://greensaucegames.com" target="_blank" class="text-green-400 hover:text-green-300 hover:underline transition-all duration-300">Green
                        Sauce Games</a> and
                    <a href="https://sevensails.com.br" target="_blank" class="text-cyan-400 hover:text-cyan-300 hover:underline transition-all duration-300">Seven
                        Sails Games</a>,
                    I&#x27;ve launched <span class="text-white font-semibold">several apps and over 30 games</span>
                    with millions of downloads.</p>
                <p class="text-slate-400 mb-6 leading-relaxed">Through <a href="https://wagenheimer.com" target="_blank" class="text-blue-400 hover:text-blue-300 hover:underline transition-all duration-300">CWSoftware</a>,
                    I offer specialized consulting in enterprise software architecture, mobile development with .NET MAUI, and modern web systems with Blazor.</p>

                
                <div class="mb-6"><p class="text-xs text-slate-500 font-mono uppercase mb-3 tracking-widest reveal">Published on:</p>
                    <div class="flex flex-wrap gap-3"><div class="platform-badge group reveal reveal-delay-200"><i class="fa-brands fa-steam text-slate-400 group-hover:text-white transition-colors"></i>
                            <span class="text-white text-xs font-semibold">Steam</span></div>
                        <div class="platform-badge group reveal reveal-delay-300"><i class="fa-solid fa-gamepad text-red-500 group-hover:text-red-400 transition-colors"></i>
                            <span class="text-white text-xs font-semibold">Switch</span></div>
                        <div class="platform-badge group reveal reveal-delay-400"><i class="fa-brands fa-xbox text-green-500 group-hover:text-green-400 transition-colors"></i>
                            <span class="text-white text-xs font-semibold">Xbox</span></div>
                        <div class="platform-badge group reveal reveal-delay-500"><i class="devicon-apple-original text-slate-300 group-hover:text-white transition-colors"></i>
                            <span class="text-white text-xs font-semibold">App Store</span></div>
                        <div class="platform-badge group reveal reveal-delay-600"><i class="devicon-android-plain text-green-500 group-hover:text-green-400 transition-colors"></i>
                            <span class="text-white text-xs font-semibold">Google Play</span></div>
                        <div class="platform-badge group reveal reveal-delay-700"><i class="fa-brands fa-microsoft text-blue-500 group-hover:text-blue-400 transition-colors"></i>
                            <span class="text-white text-xs font-semibold">MS Store</span></div></div></div>

                
                <div class="flex flex-wrap gap-2"><span class="px-3 py-1 bg-violet-500/10 border border-violet-500/30 rounded-full text-violet-400 text-xs font-mono">.NET Expert</span>
                    <span class="px-3 py-1 bg-slate-500/10 border border-slate-500/30 rounded-full text-slate-400 text-xs font-mono">Unity Developer</span>
                    <span class="px-3 py-1 bg-cyan-500/10 border border-cyan-500/30 rounded-full text-cyan-400 text-xs font-mono">Blazor/MAUI</span>
                    <span class="px-3 py-1 bg-orange-500/10 border border-orange-500/30 rounded-full text-orange-400 text-xs font-mono">Game Design</span>
                    <span class="px-3 py-1 bg-blue-500/10 border border-blue-500/30 rounded-full text-blue-400 text-xs font-mono">Entrepreneur</span></div></div></div></div></section>


<section id="stack" class="py-24 relative z-10 border-t border-border"><div class="container mx-auto px-6"><div class="flex items-center gap-4 mb-12"><div class="h-px bg-white/10 flex-grow"></div>
            <h2 class="text-3xl font-bold text-white tracking-tight">TECH STACK</h2>
            <div class="h-px bg-white/10 flex-grow"></div></div>

        <div class="grid grid-cols-2 md:grid-cols-4 lg:grid-cols-6 gap-6"><div class="tech-stack-card group reveal reveal-delay-100" style="--glow-color: #a855f7; --glow-color-dim: rgba(168, 85, 247, 0.2);"><i class="devicon-csharp-plain text-4xl text-purple-400 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">C#</span>
                <span class="text-slate-500 text-xs">30&#x2B; years</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-200" style="--glow-color: #8b5cf6; --glow-color-dim: rgba(139, 92, 246, 0.2);"><i class="devicon-dotnetcore-plain text-4xl text-violet-400 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">.NET</span>
                <span class="text-slate-500 text-xs">Core & 8+</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-300" style="--glow-color: #8b5cf6; --glow-color-dim: rgba(139, 92, 246, 0.2);"><i class="devicon-dotnetcore-plain text-4xl text-violet-500 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">ASP.NET Core</span>
                <span class="text-slate-500 text-xs">Backend</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-400" style="--glow-color: #cbd5e1; --glow-color-dim: rgba(203, 213, 225, 0.2);"><i class="devicon-unity-plain text-4xl text-slate-300 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">Unity</span>
                <span class="text-slate-500 text-xs">2D &amp; 3D</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-500" style="--glow-color: #22d3ee; --glow-color-dim: rgba(34, 211, 238, 0.2);"><i class="devicon-blazor-plain text-4xl text-cyan-400 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">Blazor</span>
                <span class="text-slate-500 text-xs">WASM &amp; Server</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-600" style="--glow-color: #f87171; --glow-color-dim: rgba(248, 113, 113, 0.2);"><i class="devicon-dotnetcore-plain text-4xl text-red-400 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">.NET MAUI</span>
                <span class="text-slate-500 text-xs">Cross-platform</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-700" style="--glow-color: #60a5fa; --glow-color-dim: rgba(96, 165, 250, 0.2);"><i class="devicon-postgresql-plain text-4xl text-blue-400 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">PostgreSQL</span>
                <span class="text-slate-500 text-xs">Database</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-700" style="--glow-color: #ef4444; --glow-color-dim: rgba(239, 68, 68, 0.2);"><i class="devicon-microsoftsqlserver-plain text-4xl text-red-500 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">SQL Server</span>
                <span class="text-slate-500 text-xs">Database</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-700" style="--glow-color: #34d399; --glow-color-dim: rgba(52, 211, 153, 0.2);"><i class="fa-solid fa-server w-10 h-10 text-emerald-400 group-hover:scale-110 transition flex items-center justify-center text-3xl"></i>
                <span class="text-white text-sm font-semibold mt-2">Coolify</span>
                <span class="text-slate-500 text-xs">Hostinger</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-700" style="--glow-color: #06b6d4; --glow-color-dim: rgba(6, 182, 212, 0.2);"><i class="devicon-docker-plain text-4xl text-cyan-500 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">Docker</span>
                <span class="text-slate-500 text-xs">Containers</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-700" style="--glow-color: #f97316; --glow-color-dim: rgba(249, 115, 22, 0.2);"><i class="devicon-git-plain text-4xl text-orange-500 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">Git</span>
                <span class="text-slate-500 text-xs">Version Control</span></div>
            
            <div class="tech-stack-card group reveal reveal-delay-700" style="--glow-color: #a3e635; --glow-color-dim: rgba(163, 230, 53, 0.2);"><i class="devicon-android-plain text-4xl text-green-400 group-hover:scale-110 transition"></i>
                <span class="text-white text-sm font-semibold mt-2">iOS & Android</span>
                <span class="text-slate-500 text-xs">Mobile Apps</span></div></div></div></section>


<section id="services" class="py-24 relative z-10 border-t border-white/5"><div class="container mx-auto px-6"><div class="flex items-center gap-4 mb-4"><div class="h-px bg-white/10 flex-grow"></div>
            <h2 class="text-3xl font-bold text-white tracking-tight">SERVICES</h2>
            <div class="h-px bg-white/10 flex-grow"></div></div>
        <p class="text-center text-slate-400 mb-12 max-w-2xl mx-auto">Complete digital solutions to transform your business. From idea to deploy.</p>

        <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 reveal"><div class="service-card"><div class="service-icon bg-red-500/10 text-red-400"><i class="fa-solid fa-mobile-screen-button w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">Mobile Apps</h3>
                <p class="text-slate-400 text-sm mb-4">Native apps for Android and iOS with .NET MAUI. Fluid UX, offline-first, and app store publishing.</p>
                <ul class="text-xs text-slate-500 space-y-1"><li>• Android &amp; iOS</li>
                    <li>• .NET MAUI / Xamarin</li>
                    <li>• App store publishing</li></ul></div>

            
            <div class="service-card"><div class="service-icon bg-cyan-500/10 text-cyan-400"><i class="fa-solid fa-chart-line w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">Web Systems</h3>
                <p class="text-slate-400 text-sm mb-4">Interactive dashboards and modern systems with Blazor. Robust APIs with ASP.NET Core.</p>
                <ul class="text-xs text-slate-500 space-y-1"><li>• Blazor WASM/Server</li>
                    <li>• RESTful APIs</li>
                    <li>• Cloud-ready</li></ul></div>

            
            <div class="service-card"><div class="service-icon bg-green-500/10 text-green-400"><i class="fa-solid fa-gamepad w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">Digital Games</h3>
                <p class="text-slate-400 text-sm mb-4">2D/3D game development with Unity. From concept to multi-platform publishing.</p>
                <ul class="text-xs text-slate-500 space-y-1"><li>• Unity 2D &amp; 3D</li>
                    <li>• PC, Mobile, Consoles</li>
                    <li>• Corporate gamification</li></ul></div>

            
            <div class="service-card"><div class="service-icon bg-blue-500/10 text-blue-400"><i class="fa-solid fa-desktop w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">Desktop Software</h3>
                <p class="text-slate-400 text-sm mb-4">Robust Windows applications for internal operations, POS, and administrative management.</p>
                <ul class="text-xs text-slate-500 space-y-1"><li>• WPF / WinForms</li>
                    <li>• Hardware integration</li>
                    <li>• High performance</li></ul></div></div></div></section>


<section id="companies" class="py-24 relative z-10 border-t border-border"><div class="container mx-auto px-6"><div class="flex items-center gap-4 mb-12"><div class="h-px bg-white/10 flex-grow"></div>
            <h2 class="text-3xl font-bold text-white tracking-tight">MY ECOSYSTEM</h2>
            <div class="h-px bg-white/10 flex-grow"></div></div>

        <div class="grid grid-cols-1 md:grid-cols-3 gap-8 reveal"><article class="company-card rounded-2xl p-8 flex flex-col" style="--brand-color: #3b82f6; --brand-shadow: rgba(59, 130, 246, 0.2);"><div class="w-14 h-14 bg-blue-500/10 rounded-xl flex items-center justify-center mb-6 text-blue-500 border border-blue-500/20"><i class="fa-solid fa-code w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">CW SOFTWARE</h3>
                <p class="text-xs font-mono text-blue-400 mb-4 tracking-widest">DIGITAL SOLUTIONS</p>
                <p class="text-slate-400 text-sm leading-relaxed mb-6 flex-grow">Specialist in Cross-Platform Mobile Apps and high-performance Web Systems. Transforming corporate needs into robust and scalable software.</p>
                <a href="https://cwsoftware.com.br" target="_blank" class="inline-flex items-center text-sm font-bold text-white hover:text-blue-400 transition">Visit Website <i class="fa-solid fa-arrow-right w-4 h-4 ml-2"></i></a></article>

            
            <article class="company-card rounded-2xl p-8 flex flex-col" style="--brand-color: #22c55e; --brand-shadow: rgba(34, 197, 94, 0.2);"><div class="w-14 h-14 bg-green-500/10 rounded-xl flex items-center justify-center mb-6 text-green-500 border border-green-500/20"><i class="fa-solid fa-gamepad w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">GREEN SAUCE GAMES</h3>
                <p class="text-xs font-mono text-green-400 mb-4 tracking-widest">CASUAL GAMES</p>
                <p class="text-slate-400 text-sm leading-relaxed mb-6 flex-grow">Studio focused on Premium Match-3 and Solitaire experiences for PC, Nintendo Switch, and Xbox. Acclaimed titles like Hope&#x27;s Farm 2, Storm Tale, and Secrets of Magic.</p>
                <a href="https://greensaucegames.com" target="_blank" class="inline-flex items-center text-sm font-bold text-white hover:text-green-400 transition">View Games <i class="fa-solid fa-arrow-right w-4 h-4 ml-2"></i></a></article>

            
            <article class="company-card rounded-2xl p-8 flex flex-col" style="--brand-color: #0ea5e9; --brand-shadow: rgba(14, 165, 233, 0.2);"><div class="w-14 h-14 bg-cyan-500/10 rounded-xl flex items-center justify-center mb-6 text-cyan-500 border border-cyan-500/20"><i class="fa-solid fa-anchor w-8 h-8"></i></div>
                <h3 class="text-xl font-bold text-white mb-2">SEVEN SAILS GAMES</h3>
                <p class="text-xs font-mono text-cyan-400 mb-4 tracking-widest">PUZZLE &amp; ADVENTURE</p>
                <p class="text-slate-400 text-sm leading-relaxed mb-6 flex-grow">Studio with over 40 titles released globally. My focus was on the acclaimed Queen&#x27;s Garden franchise, a sales hit combining Match-3 and gardening mechanics.</p>
                <a href="#" class="inline-flex items-center text-sm font-bold text-white hover:text-cyan-400 transition">Explore <i class="fa-solid fa-arrow-right w-4 h-4 ml-2"></i></a></article></div></div></section>


<section id="games" class="py-24 bg-surface relative z-10 border-t border-border"><div class="container mx-auto px-6"><div class="flex items-center gap-4 mb-4"><div class="h-px bg-white/10 flex-grow"></div>
            <h2 class="text-3xl font-bold text-white tracking-tight">FEATURED GAMES</h2>
            <div class="h-px bg-white/10 flex-grow"></div></div>
        <p class="text-center text-slate-400 mb-12 max-w-2xl mx-auto reveal">Some of the titles I&#x27;ve helped create over the years.</p>

        <div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4 reveal reveal-delay-200"><a href="https://greensaucegames.com/games/hopes-farm-2" target="_blank" class="game-card group relative overflow-hidden rounded-xl bg-transparent border-0 block" title="Step into the world of Hope&#x27;s Farm 2, where farming meets puzzle-solving! Help Hope and Noah transform a simple farmland into a thriving paradise."><div class="game-cover relative aspect-square overflow-hidden"><img src="/images/blog/header-e892200b-4346-4318-a26c-67acbab045b0.webp" alt="Hope&#x27;s Farm 2" class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-110" loading="lazy" /><div class="absolute inset-0 bg-gradient-to-t from-slate-900 via-slate-900/95 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex flex-col items-center justify-end p-4"><p class="text-white text-xs text-center leading-relaxed mb-2 line-clamp-4">Step into the world of Hope&#x27;s Farm 2, where farming meets puzzle-solving! Help Hope and Noah transform a simple farmland into a thriving paradise.</p>
                                <span class="text-brand-cyan text-xs font-bold bg-slate-900/80 px-3 py-1 rounded-full border border-brand-cyan/30">View Details</span></div></div>

                        <div class="p-3"><h4 class="text-white text-xs md:text-sm font-semibold truncate" title="Hope&#x27;s Farm 2">Hope&#x27;s Farm 2</h4>
                            <div class="flex gap-1 mt-2 flex-wrap"><span class="platform-tag text-[10px] bg-slate-800 text-slate-400 border border-slate-700 px-1.5 py-0.5 rounded">Match3</span></div></div></a><a href="https://greensaucegames.com/games/ancient-relics---egypt" target="_blank" class="game-card group relative overflow-hidden rounded-xl bg-transparent border-0 block" title="Solve match-3 puzzles, rebuild a village, and unearth ancient Egypt&#x27;s secrets."><div class="game-cover relative aspect-square overflow-hidden"><img src="/images/blog/header-35d270b6-a834-4b6b-b84c-2c23c9206ea7.webp" alt="Ancient Relics - Egypt" class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-110" loading="lazy" /><div class="absolute inset-0 bg-gradient-to-t from-slate-900 via-slate-900/95 to-transparent opacity-0 group-hover:opacity-100 transition-opacity duration-300 flex flex-col items-center justify-end p-4"><p class="text-white text-xs text-center leading-relaxed mb-2 line-clamp-4">Solve match-3 puzzles, rebuild a village, and unearth ancient Egypt&#x27;s secrets.</p>
                                <span class="text-brand-cyan text-xs font-bold bg-slate-900/80 px-3 py-1 rounded-full border border-brand-cyan/30">View Details</span></div></div>

                        <div class="p-3"><h4 class="text-white text-xs md:text-sm font-semibold truncate" title="Ancient Relics - Egypt">Ancient Relics - Egypt</h4>
                            <div class="flex gap-1 mt-2 flex-wrap"><span class="platform-tag text-[10px] bg-slate-800 text-slate-400 border border-slate-700 px-1.5 py-0.5 rounded">Match3</span></div></div></a></div>

        <div class="text-center mt-10"><a href="https://greensaucegames.com" target="_blank" class="inline-flex items-center gap-2 text-brand-cyan hover:text-white transition font-semibold">View all games <i class="fa-solid fa-arrow-up-right-from-square text-sm"></i></a></div></div></section>


<section id="blog" class="py-24 relative z-10 border-t border-border"><div class="container mx-auto px-6"><div class="flex items-center gap-4 mb-4"><div class="h-px bg-white/10 flex-grow"></div>
            <h2 class="text-3xl font-bold text-white tracking-tight">BLOG</h2>
            <div class="h-px bg-white/10 flex-grow"></div></div>
        <p class="text-center text-slate-400 mb-12 max-w-2xl mx-auto">Articles about development, games, and technology.</p><div class="grid grid-cols-1 md:grid-cols-3 gap-8 reveal"><article class="blog-card group reveal reveal-delay-100"><div class="blog-card-image relative overflow-hidden h-48"><img src="/images/blog/header-c40e16df-ebfc-4eb2-8a80-2fd3e713c739.webp" alt="Don&#x27;t Let Android 15 Break Your MAUI App: The 3-Step Edge-to-Edge Fix" class="w-full h-full object-cover group-hover:scale-110 transition duration-500" /></div>
                        <div class="p-6"><div class="flex items-center gap-2 mb-3"><span class="text-xs text-slate-500 font-mono">25 May 2026</span><span class="text-xs bg-brand-violet/20 text-brand-violet px-2 py-0.5 rounded">Dotnet MAUI</span></div>
                            <h3 class="text-lg font-bold text-white mb-2 group-hover:text-brand-cyan transition"><a href="/blog/dont-let-android-15-break-your-maui-app-the-3-step-edge-to-edge-fix">Don&#x27;t Let Android 15 Break Your MAUI App: The 3-Step Edge-to-Edge Fix</a></h3>
                            <p class="text-slate-400 text-sm line-clamp-2">Stop wrestling with compatibility mode. Learn why your app looks like a tiny box on Android 15 and how a single XAML style fixes it forever.</p></div></article><article class="blog-card group reveal reveal-delay-100"><div class="blog-card-image relative overflow-hidden h-48"><img src="/images/blog/header-4fa923e2-b578-4ed8-884f-a8b2ce70e9c4.webp" alt="The End of Silent Localization Errors in .NET Apps - Meet resx-lint" class="w-full h-full object-cover group-hover:scale-110 transition duration-500" /></div>
                        <div class="p-6"><div class="flex items-center gap-2 mb-3"><span class="text-xs text-slate-500 font-mono">21 May 2026</span><span class="text-xs bg-brand-violet/20 text-brand-violet px-2 py-0.5 rounded">Blazor</span></div>
                            <h3 class="text-lg font-bold text-white mb-2 group-hover:text-brand-cyan transition"><a href="/blog/the-end-of-silent-localization-errors-in-net-apps---meet-resx-lint">The End of Silent Localization Errors in .NET Apps - Meet resx-lint</a></h3>
                            <p class="text-slate-400 text-sm line-clamp-2">Stop silent localization errors in .NET apps. resx-lint validates .resx keys in XAML and C#, auto-fixes errors, and integrates into your build pipeline.</p></div></article><article class="blog-card group reveal reveal-delay-100"><div class="blog-card-image relative overflow-hidden h-48"><img src="/images/blog/header-71e6253a-2cdc-4c4f-8675-0e14effc939e.webp" alt="MAUI Forge &#x2014; My second open source project, and why it exists" class="w-full h-full object-cover group-hover:scale-110 transition duration-500" /></div>
                        <div class="p-6"><div class="flex items-center gap-2 mb-3"><span class="text-xs text-slate-500 font-mono">19 May 2026</span><span class="text-xs bg-brand-violet/20 text-brand-violet px-2 py-0.5 rounded">Dotnet MAUI</span></div>
                            <h3 class="text-lg font-bold text-white mb-2 group-hover:text-brand-cyan transition"><a href="/blog/maui-forge-my-second-open-source-project-and-why-it-exists">MAUI Forge &#x2014; My second open source project, and why it exists</a></h3>
                            <p class="text-slate-400 text-sm line-clamp-2">Meet MAUI Forge, an open source CLI tool to automate versioning, build, and device management in .NET MAUI projects.</p></div></article></div><div class="text-center mt-10"><a href="/blog" class="inline-flex items-center gap-2 text-brand-cyan hover:text-white transition font-semibold">View all posts <i class="fa-solid fa-arrow-right text-sm"></i></a></div></div></section>


<section id="contact" class="py-24 bg-surface relative overflow-hidden border-t border-border"><div class="container mx-auto px-6 relative z-10"><div class="max-w-4xl mx-auto glass-card rounded-2xl p-8 md:p-12 shadow-2xl reveal"><div class="text-center mb-10"><h2 class="text-3xl font-bold text-white mb-4">Let&#x27;s Create Something Amazing?</h2>
                <p class="text-slate-400">Have a project in mind? Get in touch to discuss how I can help.</p></div><form method="post" data-enhance="" class="space-y-6" action="/?feed=comments-rss2"><input type="hidden" name="_handler" value="MainContactForm" /><input type="hidden" name="__RequestVerificationToken" value="CfDJ8NRCqDKvNZ5EoYOk4v5QwQHjWlv5L3f8fc0iSkQbO7SWfyc9Asc8QBwYNo4miXDHMYRnvC8Lej4CRjYSvytXBnSUu8IaDLnYCiu-vWaERnj0ntI6kbYOIqWealCr_j6-K2ukbhcrAoa17oB0ckm5t_g" />
                    <div class="grid grid-cols-1 md:grid-cols-2 gap-6"><div class="space-y-2"><label class="text-xs font-mono text-slate-500 uppercase">Name</label>
                            <input placeholder="Your Name" name="contactModel.Name" class="w-full bg-black/50 border border-white/10 rounded-lg px-4 py-3 text-white focus:outline-none focus:border-brand-violet transition valid" value="" />
                            </div>
                        
                        
                        <div class="opacity-0 absolute -z-50 w-0 h-0 overflow-hidden"><label for="website-field">Website</label>
                            <input id="website-field" tabindex="-1" autocomplete="off" name="contactModel.Website" class="valid" value="" /></div>
                        
                        
                        <input step="any" type="number" name="contactModel.Timestamp" class="hidden valid" value="639165898928729089" />

                        <div class="space-y-2"><label class="text-xs font-mono text-slate-500 uppercase">Email</label>
                            <input placeholder="your@email.com" name="contactModel.Email" class="w-full bg-black/50 border border-white/10 rounded-lg px-4 py-3 text-white focus:outline-none focus:border-brand-violet transition valid" value="" />
                            </div></div>

                    <div class="space-y-2"><label class="text-xs font-mono text-slate-500 uppercase">Project Type</label>
                        <div class="cyber-select-wrapper" id="project-type-select"><div class="cyber-select-trigger"><span id="selected-project-text">Other</span>
                                <i class="fa-solid fa-chevron-down text-xs opacity-50"></i></div>
                            <div class="cyber-select-options"><div class="cyber-select-option" data-value="Mobile App">Mobile App</div>
                                <div class="cyber-select-option" data-value="Web System">Web System</div>
                                <div class="cyber-select-option" data-value="Game Development">Game Development</div>
                                <div class="cyber-select-option" data-value="Desktop App">Desktop App</div>
                                <div class="cyber-select-option" data-value="Software Consultancy">Software Consultancy</div>
                                <div class="cyber-select-option" data-value="Other">Other</div></div>
                            <select id="hidden-project-select" name="contactModel.ProjectType" class="hidden valid" value="Other"><option value="Mobile App">Mobile App</option>
                                <option value="Web System">Web System</option>
                                <option value="Game Development">Game Development</option>
                                <option value="Desktop App">Desktop App</option>
                                <option value="Software Consultancy">Software Consultancy</option>
                                <option value="Other" selected>Other</option></select></div>
                        </div>
                    <div class="space-y-2"><label class="text-xs font-mono text-slate-500 uppercase">Message</label>
                        <textarea rows="4" name="contactModel.Message" class="w-full bg-black/50 border border-white/10 rounded-lg px-4 py-3 text-white focus:outline-none focus:border-brand-violet transition valid"></textarea>
                        </div>
                    <button type="submit" class="w-full bg-gradient-to-r from-brand-violet to-brand-cyan hover:opacity-90 disabled:opacity-50 disabled:cursor-not-allowed text-white font-bold py-4 rounded-lg transition shadow-lg flex items-center justify-center gap-2"><span>SEND MESSAGE</span></button></form></div></div></section></main>


<footer class="bg-obsidian border-t border-white/5 py-12 relative z-10"><div class="container mx-auto px-6"><div class="footer-seo-grid mb-10"><div class="flex items-start gap-3"><div class="w-10 h-10 bg-slate-700 rounded-xl flex items-center justify-center font-bold text-white font-cyber text-xs border border-slate-600">
                    CW</div>
                <div><span class="font-bold text-white">wagenheimer<span class="text-slate-400">.com</span></span>
                    <p class="text-slate-500 text-sm mt-2 max-w-xs">Practical content about .NET, Unity and game development focused on performance and product strategy.</p></div></div>

            <div><h4 class="footer-seo-title">Navigation</h4>
                <div class="footer-seo-links"><a href="/" class="footer-seo-link">Home</a>
                    <a href="/#about" class="footer-seo-link">About</a>
                    <a href="/#stack" class="footer-seo-link">Stack</a>
                    <a href="/#companies" class="footer-seo-link">Companies</a>
                    <a href="/#contact" class="footer-seo-link">Contact</a>
                    <a href="/blog" class="footer-seo-link">Blog</a></div></div>

            <div><h4 class="footer-seo-title">Topics</h4>
                <div class="footer-seo-links"><a href="/blog?tag=.NET" class="footer-seo-link">.NET</a>
                    <a href="/blog?tag=Unity" class="footer-seo-link">Unity</a>
                    <a href="/blog?tag=Blazor" class="footer-seo-link">Blazor</a>
                    <a href="/blog?tag=MAUI" class="footer-seo-link">MAUI</a>
                    <a href="/blog?tag=GameDev" class="footer-seo-link">GameDev</a></div></div>

            <div><h4 class="footer-seo-title">Popular Guides</h4>
                <div class="footer-seo-links"><a href="/blog/how-and-where-to-sell-my-game-microsoftstore" class="footer-seo-link">Sell your game on Microsoft Store</a>
                    <a href="/blog/how-and-where-to-sell-my-game-mac-game-store" class="footer-seo-link">Sell your game on Mac Game Store</a>
                    <a href="/blog/eventocommandbehaviors-dotnet9" class="footer-seo-link">
                        EventToCommandBehavior .NET 9
                    </a>
                    <a href="/blog/execute-operation-each-x-frames-on-unity-update-method" class="footer-seo-link">Unity: run operation each X frames</a></div>
                <div class="footer-social"><a href="https://github.com/wagenheimer" target="_blank" class="w-9 h-9 rounded-full bg-white/5 border border-white/10 flex items-center justify-center text-slate-500 hover:text-white hover:bg-white/10 transition"><i class="devicon-github-original text-lg"></i></a>
                    <a href="https://linkedin.com/in/wagenheimer" target="_blank" class="w-9 h-9 rounded-full bg-white/5 border border-white/10 flex items-center justify-center text-slate-500 hover:text-white hover:bg-white/10 transition"><i class="devicon-linkedin-plain text-lg"></i></a>
                    <a href="https://twitter.com/wagenheimer" target="_blank" class="w-9 h-9 rounded-full bg-white/5 border border-white/10 flex items-center justify-center text-slate-500 hover:text-white hover:bg-white/10 transition"><i class="fa-brands fa-x-twitter w-4 h-4"></i></a></div></div></div>

        
        <div class="footer-bottom-bar"><p class="footer-bottom-copy">&#xA9; 2025 Cezar Wagenheimer. All rights reserved.</p>
            <div class="footer-bottom-meta"><i class="devicon-blazor-plain text-sm text-brand-cyan"></i>
                <span>Powered by .NET Blazor</span></div></div></div></footer>
    <script>
        // Global Mobile Menu Toggle
        document.addEventListener('click', function (e) {
            const btn = e.target.closest('#mobile-menu-btn');
            const close = e.target.closest('#mobile-menu-close');
            const link = e.target.closest('.mobile-nav-link');
            const backdrop = e.target.closest('#mobile-menu-backdrop');

            if (btn || close || link || backdrop) {
                const menu = document.getElementById('mobile-menu');
                const backdropEl = document.getElementById('mobile-menu-backdrop');
                if (menu) {
                    const isOpen = !menu.classList.contains('translate-x-full');

                    if (btn && !isOpen) {
                        menu.classList.remove('translate-x-full');
                        if (backdropEl) {
                            backdropEl.classList.remove('opacity-0', 'pointer-events-none');
                            backdropEl.classList.add('opacity-100', 'pointer-events-auto');
                        }
                        document.body.classList.add('overflow-hidden');
                    } else {
                        menu.classList.add('translate-x-full');
                        if (backdropEl) {
                            backdropEl.classList.add('opacity-0', 'pointer-events-none');
                            backdropEl.classList.remove('opacity-100', 'pointer-events-auto');
                        }
                        document.body.classList.remove('overflow-hidden');
                    }
                }
            }

            // Smooth Scroll
            const anchor = e.target.closest('a[href^="#"]');
            if (anchor && anchor.getAttribute('href') !== '#') {
                e.preventDefault();
                const targetId = anchor.getAttribute('href').substring(1);
                const targetEl = document.getElementById(targetId);
                if (targetEl) {
                    const offset = 80;
                    const bodyRect = document.body.getBoundingClientRect().top;
                    const elementRect = targetEl.getBoundingClientRect().top;
                    const elementPosition = elementRect - bodyRect;
                    const offsetPosition = elementPosition - offset;

                    window.scrollTo({
                        top: offsetPosition,
                        behavior: 'smooth'
                    });
                }
            }
        });

        // Improved Scroll Reveal System
        const observerOptions = {
            root: null,
            rootMargin: '0px 0px -20px 0px', // Slightly before bottom
            threshold: 0 // Trigger as soon as 1 pixel is visible
        };

        const observer = new IntersectionObserver((entries, observer) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    entry.target.classList.add('active');
                    // Optional: Stop observing once revealed to save performance
                    // observer.unobserve(entry.target); 
                }
            });
        }, observerOptions);

        window.initSectionNavHighlight = function () {
            const navLinks = document.querySelectorAll('.nav-track[data-nav-target]');
            if (!navLinks.length) return;

            if (typeof window.__navHighlightCleanup === 'function') {
                window.__navHighlightCleanup();
            }

            let sectionObserver = null;
            let scrollHandler = null;

            const clearCurrent = () => {
                navLinks.forEach(link => link.classList.remove('nav-current'));
            };

            const setCurrent = (target) => {
                clearCurrent();
                navLinks.forEach(link => {
                    if (link.dataset.navTarget === target) {
                        link.classList.add('nav-current');
                    }
                });
            };

            const path = window.location.pathname.toLowerCase();
            const isBlogRoute = path.includes('/blog');

            if (isBlogRoute) {
                setCurrent('blog');
                return;
            }

            const sections = ['about', 'stack', 'companies', 'contact']
                .map(id => document.getElementById(id))
                .filter(Boolean);

            if (!sections.length) {
                setCurrent('home');
                return;
            }

            sectionObserver = new IntersectionObserver((entries) => {
                const visible = entries
                    .filter(e => e.isIntersecting)
                    .sort((a, b) => b.intersectionRatio - a.intersectionRatio);

                if (visible.length) {
                    setCurrent(visible[0].target.id);
                }
            }, {
                root: null,
                rootMargin: '-35% 0px -45% 0px',
                threshold: [0.2, 0.4, 0.6]
            });

            sections.forEach(section => sectionObserver.observe(section));

            if (window.scrollY < 200) {
                setCurrent('home');
            }

            scrollHandler = () => {
                if (window.scrollY < 200) {
                    setCurrent('home');
                }
            };

            window.addEventListener('scroll', scrollHandler, { passive: true });

            window.__navHighlightCleanup = () => {
                if (sectionObserver) {
                    sectionObserver.disconnect();
                }
                if (scrollHandler) {
                    window.removeEventListener('scroll', scrollHandler);
                }
            };
        };

        window.initScrollAnimations = function () {
            const skip = sessionStorage.getItem('skipAnimations') === '1';

            // Reset opacity and pointer events (fix for "stuck" state)
            document.body.style.opacity = '1';
            document.body.style.pointerEvents = 'auto';

            const selectors = '.reveal, .reveal-left, .reveal-right, .reveal-pop, .reveal-rotate';
            const elements = document.querySelectorAll(selectors);

            elements.forEach(el => {
                if (skip) {
                    el.classList.add('active');
                } else {
                    // If element is already visible in viewport, activate immediately
                    const rect = el.getBoundingClientRect();
                    const inView = (rect.top < window.innerHeight && rect.bottom > 0);

                    if (inView) {
                        el.classList.add('active');
                    }

                    observer.observe(el);
                }
            });
        };

        // Standard initialization
        window.initPageVisuals = function () {
            try {
                if (window.initScrollAnimations) window.initScrollAnimations();
                if (window.initCyberSelect) window.initCyberSelect();
                if (window.initReadingProgressBar) window.initReadingProgressBar();
                if (window.initGlobalStarfield) window.initGlobalStarfield();
                if (window.initSectionNavHighlight) window.initSectionNavHighlight();
                
                // --- PREMIUM CYBER TERMINAL INITIALIZATION ---
                document.querySelectorAll('pre:not(.terminal-initialized)').forEach(pre => {
                    pre.classList.add('terminal-initialized');
                    
                    const code = pre.querySelector('code');
                    let labelText = 'C#';
                    let labelIco = 'fa-code';

                    if (code && code.className && code.className.includes('language-')) {
                        const classes = code.className.split(' ');
                        for (let cls of classes) {
                            if (cls.startsWith('language-')) {
                                labelText = cls.replace('language-', '').toUpperCase();
                                break;
                            }
                        }
                        
                        // Beautify common names
                        if (labelText === 'CS' || labelText === 'CSHARP' || labelText === 'C#') labelText = 'C#';
                        if (labelText === 'JS' || labelText === 'JAVASCRIPT') labelText = 'JavaScript';
                        if (labelText === 'TS' || labelText === 'TYPESCRIPT') labelText = 'TypeScript';
                        if (labelText === 'RAZOR' || labelText === 'CSHTML') labelText = 'Blazor/Razor';
                        if (labelText === 'XAML' || labelText === 'XML' || labelText === 'MARKUP') labelText = 'XAML';
                    } else if (code) {
                        // SMART DETECT: If no language, check content
                        const content = code.textContent.trim();
                        if (content.startsWith('<?xml') || content.startsWith('<')) {
                            code.classList.add('language-xml');
                            labelText = 'XAML';
                        } else {
                            // Default to C# if no language specified
                            code.classList.add('language-csharp');
                            labelText = 'C#';
                        }
                    }

                    // 1. Create Terminal Wrapper
                    const terminal = document.createElement('div');
                    terminal.className = 'cyber-terminal relative group';

                    // 2. Create Terminal Header
                    const header = document.createElement('div');
                    header.className = 'cyber-terminal-header';

                    // 2.1 Traffic Lights
                    const controls = document.createElement('div');
                    controls.className = 'terminal-controls';
                    ['bg-red-500', 'bg-yellow-500', 'bg-green-500'].forEach(color => {
                        const dot = document.createElement('div');
                        dot.className = `control-dot ${color}`;
                        controls.appendChild(dot);
                    });
                    header.appendChild(controls);

                    // 2.2 Title / Language Label
                    const title = document.createElement('div');
                    title.className = 'terminal-title';
                    
                    // SMART DETECT: Check previous element for "File: filename.ext"
                    const prevEl = pre.previousElementSibling;
                    if (prevEl && prevEl.textContent.toLowerCase().includes('file:')) {
                        const text = prevEl.textContent.trim();
                        const fileMatch = text.match(/(?:file:\s*)(.+)/i);
                        if (fileMatch && fileMatch[1]) {
                            labelText = fileMatch[1].trim();
                            labelIco = 'fa-file-code';
                            prevEl.style.display = 'none'; // Hide the raw text label
                        }
                    }

                    title.innerHTML = `<i class="fa-solid ${labelIco} text-[#00ff41] mr-2 text-xs"></i>${labelText}`;
                    header.appendChild(title);

                    // 2.3 Copy Button
                    const copyBtn = document.createElement('button');
                    copyBtn.className = 'cyber-terminal-copy-btn'; // Fix: sync with CSS if needed, using existing patterns
                    copyBtn.innerHTML = '<i class="fa-regular fa-copy"></i>';
                    copyBtn.title = 'Copy Code';

                    copyBtn.addEventListener('click', async () => {
                        const textToCopy = code ? code.innerText : pre.innerText;
                        try {
                            await navigator.clipboard.writeText(textToCopy);
                            copyBtn.innerHTML = '<i class="fa-solid fa-check"></i>';
                            copyBtn.classList.add('success');
                            setTimeout(() => {
                                copyBtn.innerHTML = '<i class="fa-regular fa-copy"></i>';
                                copyBtn.classList.remove('success');
                            }, 2000);
                        } catch (err) {
                            console.error('Copy failed', err);
                        }
                    });
                    header.appendChild(copyBtn);

                    // 3. Re-assemble DOM
                    pre.parentNode.insertBefore(terminal, pre);
                    terminal.appendChild(header);
                    terminal.appendChild(pre);
                });

                if (typeof Prism !== 'undefined') {
                    // Force refresh Prism on any blocks that might have been dynamically added
                    Prism.highlightAll();
                }
                if (typeof initGameEngine === 'function') {
                    const restartGameSafely = () => {
                        try {
                            initGameEngine();
                        } catch (err) {
                            console.warn('Game init retry failed:', err);
                        }
                    };

                    // First run after two frames to ensure layout metrics are stable.
                    requestAnimationFrame(() => requestAnimationFrame(restartGameSafely));
                    // Fallback in case transitions keep size unstable for a bit longer.
                    setTimeout(restartGameSafely, 180);
                }
            } catch (e) {
                console.warn('Initial visuals failed:', e);
            }
        };

        requestAnimationFrame(window.initPageVisuals);

        // Premium Cyber Select Logic
        window.initCyberSelect = function () {
            document.addEventListener('click', function (e) {
                const trigger = e.target.closest('.cyber-select-trigger');
                const option = e.target.closest('.cyber-select-option');
                const wrappers = document.querySelectorAll('.cyber-select-wrapper');

                // Toggle dropdown
                if (trigger) {
                    const wrapper = trigger.closest('.cyber-select-wrapper');
                    const isOpen = wrapper.classList.contains('open');

                    // Close others
                    wrappers.forEach(w => w.classList.remove('open'));

                    if (!isOpen) {
                        wrapper.classList.add('open');
                    }
                }
                // Select option
                else if (option) {
                    const wrapper = option.closest('.cyber-select-wrapper');
                    const value = option.dataset.value;
                    const text = option.textContent;
                    const hiddenSelect = wrapper.querySelector('select');
                    const triggerText = wrapper.querySelector('#selected-project-text');

                    if (hiddenSelect) {
                        hiddenSelect.value = value;
                        // Trigger change event for Blazor binding (if interactive)
                        hiddenSelect.dispatchEvent(new Event('change', { bubbles: true }));
                    }

                    if (triggerText) {
                        triggerText.textContent = text;
                    }

                    // highlight selected
                    wrapper.querySelectorAll('.cyber-select-option').forEach(opt => opt.classList.remove('selected'));
                    option.classList.add('selected');

                    wrapper.classList.remove('open');
                }
                // Close on outside click
                else {
                    wrappers.forEach(w => w.classList.remove('open'));
                }
            });
        };

        // Form Loading State (Enhanced Navigation)
        document.addEventListener('submit', function (e) {
            const form = e.target.closest('form[data-enhance]');
            if (form) {
                const btn = form.querySelector('button[type="submit"]');
                if (btn) {
                    const originalText = btn.innerHTML;
                    btn.disabled = true;
                    btn.innerHTML = '<span class="animate-spin h-5 w-5 border-2 border-white border-t-transparent rounded-full"></span> <span>SENDING...</span>';

                    // Failsafe in case of failure
                    setTimeout(() => {
                        if (btn.disabled) {
                            btn.disabled = false;
                            btn.innerHTML = originalText;
                        }
                    }, 5000);
                }
            }
        });

        // Failsafe to prevent stuck content (long timeout)
        setTimeout(() => {
            document.querySelectorAll('.reveal, .reveal-left, .reveal-right, .reveal-pop').forEach(el => {
                if (getComputedStyle(el).opacity === '0') {
                    el.classList.add('active');
                }
            });
        }, 3000);

        // Redundant event listeners for safety
        window.addEventListener('DOMContentLoaded', () => {
            window.initPageVisuals();

            // Initialize on Blazor enhanced navigation (if applicable)
            // Checked inside DOMContentLoaded to ensure Blazor script has executed
            if (typeof Blazor !== 'undefined') {
                Blazor.addEventListener('enhancedload', window.initPageVisuals);
            }
        });

        window.addEventListener('load', window.initPageVisuals);


        // Fallback MutationObserver for dynamic updates
        let debounceTimer;
        const mutationObserver = new MutationObserver((mutations) => {
            clearTimeout(debounceTimer);
            debounceTimer = setTimeout(window.initScrollAnimations, 100);
        });

        mutationObserver.observe(document.body, { childList: true, subtree: true });

        // Clear bypass flag after initial render to restore animations for future navigation
        window.addEventListener('load', () => {
            setTimeout(() => {
                sessionStorage.removeItem('skipAnimations');
                document.documentElement.classList.remove('no-animate');
            }, 500);
        });
    </script>
    <script src="_framework/blazor.web.ej96puwv3k.js"></script>
    <script src="js/starfield.f4uaf8sun6.js?v=639165898928724322"></script>
    <script src="js/game.ewuisqbj79.js?v=639165898928724334"></script>
    <script src="js/blog-interaction.6vxbi3zla9.js?v=639165898928724343"></script>
    <script src="/js/progressbar.js?v=639165898928724347"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js?v=639165898928724349"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-markup.min.js?v=639165898928724354"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-csharp.min.js?v=639165898928724356"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-xaml.min.js?v=639165898928724358"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-javascript.min.js?v=639165898928724360"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-css.min.js?v=639165898928724376"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-json.min.js?v=639165898928724378"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/components/prism-cshtml.min.js?v=639165898928724380"></script></body></html><!--Blazor-Server-Component-State:CfDJ8NRCqDKvNZ5EoYOk4v5QwQGFb19fTwnQvXiWrZt7TOixWq9kVz9CFiaMl5l3eVrlcead2FnKsNHY5WMDcz69MqG3eA8x2vyWbdT+fZq5+5A9IY0cqfOeI75YEb4f9XUclA2CibHdZibXv2HRenof4SaCTStwiOEPi5rmnpi8AQAGZHU+xKQh7k0/fiEanW9sRvEt88vRJIvSRVg2I3glnwj0gZarB/zrS38Bi5SuXTgvBCd7/gH49wgJspUoD8ZA8Wr+9GwZ1yVfnpLSE9PDgpM6U5G6DwYfqJinpeT4TJA7Xc6//mWc/cy00iOgHoBkwFtCT8X0m/YyYJrdfN/ZCp7RaqnPyiDA5NyL8xMn0xiwPCEsbaQDPjjfa/5Ayy4EbWopQvyEu7fVZ52Z/S/jJEH2HlAS3ywbfPC3izFdBBV2aHjRyUGmGc3y4tAWnOtWWG5rZ0Ek6eOH/n163GPXTmdq7d8dJoTnXCtf0u0HFN6+SXnlVCwiyYN4hhLg1ixRNtdiWeolS59mpuMJ+JxH1KUjpqih6SO9AOPqftONqF8fsz0MSy/4CYMc/youtKSaiNxPGx9tN3Yul1VE3gUCfaMQpBc1hptBo/uzq+9pOqpypZ5i22XtW9xSv34GXqlWl8bZrxUDjox4lcb0NDOqUSdop4O7yF4MMFCMmypCxIuTGVPUgs2ByooPZYhqzZ+q8NkDj+Se2dR/vEaIi0tDJoEt2vR0Tc67L3gdOEICzsYRfNw5SYLNP93vaCCITfgkWsqXrRJpxKHKVrCWGZL9YXAy0iZlelaYRlvF0RnGV5f78qtNWAfe6otd/sSCmYdoVvmPkGo1nFhiq16PGMxm2dFxoPwcWqmrVwMXSmbe4VXMZGgDzDWQGqx3onxljsKqLjPPIYjGuVkmu7knJOFCrWI7NUiC0PzH4R5JOxQrvXTXEMtAJd0AnRm/UWIzAQqQxNOVTf1frp1ypF6cFka/ygcOBsPaZqB0iTQZfibVr+gdpUhyPgE68QlWREF1DEI6VNmlpOeeL7bdjcwkbmFHv7L50cE3yZ2Wj2fpv/WLLksQZOuCNMtr7IwxTnnQKYHMWo8LmvoP8I6ym2Wd7YVj+To8MdrlIKQ3B5qtnrBpHJ78MNX0Tnt/YZtDebV1NTQVwQ==-->