{"id":7,"date":"2023-04-24T12:44:00","date_gmt":"2023-04-24T11:44:00","guid":{"rendered":"https:\/\/lightbearsoftware.com\/?page_id=7"},"modified":"2026-09-13T21:00:10","modified_gmt":"2026-09-13T20:00:10","slug":"contact","status":"publish","type":"page","link":"https:\/\/lightbearsoftware.com\/index.php\/contact\/","title":{"rendered":"TEAM"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>About LightBear Software | Cinematic Experience<\/title>\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;600;700;800;900&#038;display=swap\" rel=\"stylesheet\">\n    \n    <style>\n        \/* Break out of WordPress theme boxed containers *\/\n        body, html {\n            margin: 0 !important;\n            padding: 0 !important;\n            background-color: #03030c !important;\n            color: #ffffff;\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n            width: 100vw !important;\n            max-width: 100vw !important;\n            overflow-x: hidden !important;\n        }\n\n        \/* Target WordPress specific wrappers that create boxed layouts *\/\n        .site-content, .entry-content, .page-content, .content-area, article, main {\n            max-width: 100% !important;\n            width: 100% !important;\n            margin: 0 !important;\n            padding: 0 !important;\n            background: transparent !important;\n            box-shadow: none !important;\n        }\n\n        #lb-root {\n            --primary: #00f7ff;\n            --accent: #7000ff;\n            --secondary-glow: #ff00b7;\n            --bg-dark: #03030c;\n            --glass: rgba(255, 255, 255, 0.04);\n            --glass-border: rgba(255, 255, 255, 0.12);\n            --modal-bg: rgba(5, 5, 18, 0.95);\n            --text-main: #ffffff;\n            --text-muted: rgba(255, 255, 255, 0.65);\n            \n            position: relative;\n            background-color: var(--bg-dark);\n            color: var(--text-main);\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\n            overflow-x: hidden;\n            line-height: 1.6;\n            min-height: 100vh;\n            width: 100vw;\n            margin-left: calc(-50vw + 50%);\n            margin-right: calc(-50vw + 50%);\n            padding: 0;\n            box-sizing: border-box;\n            z-index: 10;\n        }\n\n        #lb-root * {\n            box-sizing: border-box;\n        }\n\n        #star-canvas {\n            position: absolute;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            z-index: 0;\n            pointer-events: none;\n            background: radial-gradient(circle at 50% 30%, #0d0b2e 0%, #03030c 100%);\n        }\n\n        .lb-container {\n            max-width: 1280px;\n            margin: 0 auto;\n            padding: 0 24px;\n            position: relative;\n            z-index: 2;\n        }\n\n        .lb-navbar {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            padding: 24px 0;\n            border-bottom: 1px solid var(--glass-border);\n            position: relative;\n            z-index: 10;\n        }\n\n        .lb-nav-logo {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n            text-decoration: none;\n            color: #ffffff !important;\n            font-weight: 800;\n            letter-spacing: 2.5px;\n            font-size: 1.25rem;\n            text-transform: uppercase;\n        }\n\n        .lb-nav-logo img {\n            width: 38px;\n            height: 38px;\n            filter: drop-shadow(0 0 10px var(--primary));\n            transition: transform 0.3s ease;\n        }\n\n        .lb-nav-logo:hover img {\n            transform: scale(1.1) rotate(5deg);\n        }\n\n        .lb-hero {\n            min-height: 42vh;\n            display: flex;\n            flex-direction: column;\n            justify-content: center;\n            align-items: center;\n            text-align: center;\n            padding: 50px 20px 20px 20px;\n            position: relative;\n        }\n\n        .lb-hero-logo-wrap {\n            position: relative;\n            cursor: pointer;\n            margin-bottom: 22px;\n        }\n\n        .lb-hero-logo-glow {\n            position: absolute;\n            top: 50%;\n            left: 50%;\n            transform: translate(-50%, -50%);\n            width: 220px;\n            height: 220px;\n            background: radial-gradient(circle, var(--primary) 0%, transparent 70%);\n            opacity: 0.25;\n            filter: blur(35px);\n            animation: pulseGlow 4s ease-in-out infinite alternate;\n        }\n\n        @keyframes pulseGlow {\n            0% { opacity: 0.18; transform: translate(-50%, -50%) scale(0.9); }\n            100% { opacity: 0.38; transform: translate(-50%, -50%) scale(1.18); }\n        }\n\n        .lb-hero-logo {\n            width: 160px;\n            height: auto;\n            position: relative;\n            z-index: 2;\n            filter: drop-shadow(0 0 22px var(--primary));\n            animation: heroFloat 6s ease-in-out infinite;\n            transition: transform 0.3s ease;\n        }\n\n        .lb-hero-logo-wrap:hover .lb-hero-logo {\n            transform: scale(1.08) rotate(4deg);\n        }\n\n        @keyframes heroFloat {\n            0%, 100% { transform: translateY(0) rotate(0deg); }\n            50% { transform: translateY(-14px) rotate(2deg); }\n        }\n\n        .lb-hero-title {\n            font-size: clamp(2.2rem, 5vw, 4rem);\n            font-weight: 900;\n            letter-spacing: -1px;\n            line-height: 1.15;\n            background: linear-gradient(135deg, #ffffff 20%, var(--primary) 70%, var(--accent) 100%);\n            -webkit-background-clip: text;\n            -webkit-text-fill-color: transparent;\n            margin: 0 0 14px 0;\n        }\n\n        .lb-hero-subtitle {\n            font-size: clamp(0.95rem, 1.8vw, 1.2rem);\n            color: var(--text-muted);\n            max-width: 620px;\n            margin: 0 auto 30px auto;\n            font-weight: 300;\n            letter-spacing: 0.5px;\n        }\n\n        .lb-stats-bar {\n            display: inline-flex;\n            justify-content: center;\n            align-items: center;\n            background: rgba(12, 11, 43, 0.7);\n            border: 1px solid rgba(0, 247, 255, 0.35);\n            padding: 10px 28px;\n            border-radius: 50px;\n            margin-bottom: 35px;\n            box-shadow: 0 0 25px rgba(0, 247, 255, 0.12);\n            backdrop-filter: blur(10px);\n        }\n\n        .lb-stat-item {\n            display: flex;\n            align-items: center;\n            gap: 12px;\n        }\n\n        .lb-stat-badge-pulse {\n            width: 10px;\n            height: 10px;\n            background-color: var(--primary);\n            border-radius: 50%;\n            box-shadow: 0 0 10px var(--primary);\n            animation: ping 1.8s cubic-bezier(0, 0, 0.2, 1) infinite;\n        }\n\n        @keyframes ping {\n            75%, 100% { transform: scale(2.2); opacity: 0; }\n        }\n\n        .lb-stat-number {\n            font-size: 1.7rem;\n            font-weight: 900;\n            color: var(--primary);\n            text-shadow: 0 0 12px rgba(0, 247, 255, 0.7);\n        }\n\n        .lb-stat-label {\n            font-size: 0.8rem;\n            text-transform: uppercase;\n            letter-spacing: 2px;\n            color: var(--text-muted);\n            font-weight: 700;\n        }\n\n        .lb-filter-section {\n            margin-bottom: 40px;\n            display: flex;\n            flex-direction: column;\n            gap: 20px;\n            align-items: center;\n        }\n\n        .lb-filter-pills {\n            display: flex;\n            flex-wrap: wrap;\n            justify-content: center;\n            gap: 10px;\n        }\n\n        .lb-pill {\n            background: rgba(255, 255, 255, 0.04);\n            border: 1px solid var(--glass-border);\n            color: var(--text-muted);\n            padding: 8px 18px;\n            border-radius: 20px;\n            font-size: 0.85rem;\n            font-weight: 600;\n            cursor: pointer;\n            transition: all 0.25s ease;\n        }\n\n        .lb-pill:hover {\n            color: #fff;\n            border-color: rgba(0, 247, 255, 0.4);\n            background: rgba(0, 247, 255, 0.06);\n        }\n\n        .lb-pill.active {\n            background: linear-gradient(135deg, rgba(0, 247, 255, 0.2), rgba(112, 0, 255, 0.3));\n            border-color: var(--primary);\n            color: #ffffff;\n            box-shadow: 0 0 15px rgba(0, 247, 255, 0.25);\n        }\n\n        .lb-team {\n            padding-bottom: 80px;\n        }\n\n        .lb-team-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));\n            gap: 28px;\n        }\n\n        .lb-card {\n            background: var(--glass);\n            border: 1px solid var(--glass-border);\n            border-radius: 24px;\n            padding: 32px 24px;\n            text-align: center;\n            backdrop-filter: blur(12px);\n            transition: transform 0.25s ease, border-color 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;\n            cursor: pointer;\n            position: relative;\n            overflow: hidden;\n            display: flex;\n            flex-direction: column;\n            align-items: center;\n        }\n\n        .lb-card::before {\n            content: '';\n            position: absolute;\n            top: 0;\n            left: -100%;\n            width: 100%;\n            height: 100%;\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.08), transparent);\n            transition: left 0.6s ease;\n        }\n\n        .lb-card:hover::before {\n            left: 100%;\n        }\n\n        .lb-card:hover {\n            background: rgba(255, 255, 255, 0.07);\n            border-color: var(--primary);\n            box-shadow: 0 15px 35px rgba(0, 0, 0, 0.5), 0 0 25px rgba(0, 247, 255, 0.2);\n        }\n\n        .lb-card-avatar-wrap {\n            position: relative;\n            width: 120px;\n            height: 120px;\n            margin-bottom: 20px;\n        }\n\n        .lb-profile-img {\n            width: 100%;\n            height: 100%;\n            border-radius: 50%;\n            object-fit: cover;\n            border: 2px solid var(--primary);\n            box-shadow: 0 0 18px rgba(0, 247, 255, 0.3);\n            transition: transform 0.4s ease, box-shadow 0.4s ease;\n        }\n\n        .lb-card:hover .lb-profile-img {\n            transform: scale(1.05) rotate(3deg);\n            box-shadow: 0 0 25px rgba(0, 247, 255, 0.6);\n        }\n\n        .lb-member-name {\n            font-size: 1.35rem;\n            font-weight: 700;\n            margin: 0 0 6px 0;\n            color: #ffffff;\n        }\n\n        .lb-member-role {\n            font-size: 0.8rem;\n            color: var(--primary);\n            font-weight: 700;\n            letter-spacing: 1.5px;\n            text-transform: uppercase;\n            margin-bottom: 16px;\n        }\n\n        .lb-skill-tags {\n            display: flex;\n            flex-wrap: wrap;\n            justify-content: center;\n            gap: 6px;\n            margin-top: auto;\n        }\n\n        .lb-tag {\n            background: rgba(255, 255, 255, 0.06);\n            border: 1px solid rgba(255, 255, 255, 0.1);\n            color: rgba(255, 255, 255, 0.8);\n            font-size: 0.72rem;\n            padding: 4px 10px;\n            border-radius: 12px;\n            font-weight: 500;\n        }\n\n        #lb-profile-modal {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100vw;\n            height: 100vh;\n            background: rgba(2, 2, 10, 0.85);\n            backdrop-filter: blur(16px);\n            z-index: 99999;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            padding: 20px;\n            opacity: 0;\n            pointer-events: none;\n            transition: opacity 0.35s ease;\n        }\n\n        #lb-profile-modal.active {\n            opacity: 1;\n            pointer-events: auto;\n        }\n\n        .lb-modal-card {\n            background: var(--modal-bg);\n            border: 1px solid rgba(0, 247, 255, 0.35);\n            max-width: 540px;\n            width: 100%;\n            border-radius: 30px;\n            position: relative;\n            padding: 40px 32px 32px 32px;\n            box-shadow: 0 0 50px rgba(0, 247, 255, 0.25);\n            transform: scale(0.9) translateY(20px);\n            transition: transform 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);\n        }\n\n        #lb-profile-modal.active .lb-modal-card {\n            transform: scale(1) translateY(0);\n        }\n\n        .lb-modal-close {\n            position: absolute;\n            top: 20px;\n            right: 20px;\n            background: rgba(255, 255, 255, 0.08);\n            border: 1px solid var(--glass-border);\n            color: #fff;\n            width: 38px;\n            height: 38px;\n            border-radius: 50%;\n            cursor: pointer;\n            font-size: 20px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            transition: all 0.2s ease;\n            z-index: 10;\n        }\n\n        .lb-modal-close:hover {\n            background: rgba(255, 0, 85, 0.3);\n            border-color: #ff0055;\n            transform: rotate(90deg);\n        }\n\n        .lb-modal-nav-btn {\n            position: absolute;\n            top: 50%;\n            transform: translateY(-50%);\n            background: rgba(255, 255, 255, 0.08);\n            border: 1px solid var(--glass-border);\n            color: #fff;\n            width: 42px;\n            height: 42px;\n            border-radius: 50%;\n            cursor: pointer;\n            font-size: 16px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            transition: all 0.25s ease;\n            z-index: 10;\n        }\n\n        .lb-modal-nav-btn:hover {\n            background: rgba(0, 247, 255, 0.2);\n            border-color: var(--primary);\n            color: var(--primary);\n        }\n\n        .lb-modal-prev { left: -20px; }\n        .lb-modal-next { right: -20px; }\n\n        .lb-modal-header {\n            text-align: center;\n            margin-bottom: 20px;\n        }\n\n        .lb-modal-img {\n            width: 140px;\n            height: 140px;\n            border-radius: 50%;\n            object-fit: cover;\n            border: 3px solid var(--primary);\n            box-shadow: 0 0 25px rgba(0, 247, 255, 0.4);\n            margin-bottom: 16px;\n        }\n\n        .lb-modal-name {\n            font-size: 1.8rem;\n            font-weight: 800;\n            margin: 0 0 4px 0;\n            background: linear-gradient(90deg, #fff, var(--primary));\n            -webkit-background-clip: text;\n            -webkit-text-fill-color: transparent;\n        }\n\n        .lb-modal-role {\n            color: var(--primary);\n            font-size: 0.85rem;\n            font-weight: 700;\n            letter-spacing: 2px;\n            text-transform: uppercase;\n        }\n\n        .lb-modal-tabs {\n            display: flex;\n            justify-content: center;\n            gap: 12px;\n            border-bottom: 1px solid var(--glass-border);\n            padding-bottom: 12px;\n            margin-bottom: 18px;\n        }\n\n        .lb-tab-btn {\n            background: none;\n            border: none;\n            color: var(--text-muted);\n            font-size: 0.9rem;\n            font-weight: 600;\n            cursor: pointer;\n            padding: 6px 14px;\n            border-radius: 12px;\n            transition: all 0.2s ease;\n        }\n\n        .lb-tab-btn.active {\n            color: var(--primary);\n            background: rgba(0, 247, 255, 0.1);\n        }\n\n        .lb-tab-content {\n            display: none;\n            font-size: 0.98rem;\n            line-height: 1.7;\n            color: rgba(255, 255, 255, 0.88);\n            text-align: center;\n            min-height: 90px;\n        }\n\n        .lb-tab-content.active {\n            display: block;\n        }\n\n        .lb-footer {\n            padding: 40px 20px;\n            text-align: center;\n            border-top: 1px solid var(--glass-border);\n            position: relative;\n            z-index: 2;\n        }\n\n        .lb-footer-text {\n            font-size: 0.9rem;\n            color: var(--text-muted);\n            letter-spacing: 1px;\n        }\n\n        @media (max-width: 768px) {\n            .lb-modal-card { padding: 32px 20px 24px 20px; }\n            .lb-modal-name { font-size: 1.5rem; }\n            .lb-modal-prev { left: 4px; }\n            .lb-modal-next { right: 4px; }\n        }\n    <\/style>\n<\/head>\n<body>\n\n<div id=\"lb-root\">\n    <canvas id=\"star-canvas\"><\/canvas>\n\n    <div class=\"lb-container\">\n        <header class=\"lb-navbar\">\n            <a href=\"#\" class=\"lb-nav-logo\">\n                <img decoding=\"async\" src=\"http:\/\/lightbearsoftware.com\/wp-content\/uploads\/2026\/07\/Logo_Light_Blush.png\" alt=\"LightBear Logo\" onerror=\"this.src='https:\/\/placehold.co\/38x38\/0b0b2b\/00f7ff?text=LB'\">\n                <span>LIGHTBEAR<\/span>\n            <\/a>\n        <\/header>\n\n        <section class=\"lb-hero\">\n            <div class=\"lb-hero-logo-wrap\" id=\"main-logo-trigger\">\n                <div class=\"lb-hero-logo-glow\"><\/div>\n                <img decoding=\"async\" class=\"lb-hero-logo\" src=\"http:\/\/lightbearsoftware.com\/wp-content\/uploads\/2026\/07\/Logo_Light_Blush.png\" alt=\"LightBear Logo\" onerror=\"this.src='https:\/\/placehold.co\/180x180\/0b0b2b\/00f7ff?text=LightBear'\">\n            <\/div>\n            <h1 class=\"lb-hero-title\">About LightBear Software<\/h1>\n            <p class=\"lb-hero-subtitle\">An independent game development studio dedicated to creating inspiring, uplifting, and joyful digital worlds.<\/p>\n            \n            <div class=\"lb-stats-bar\">\n                <div class=\"lb-stat-item\">\n                    <span class=\"lb-stat-badge-pulse\"><\/span>\n                    <span class=\"lb-stat-label\">Est. Year<\/span>\n                    <span class=\"lb-stat-number\" data-target=\"2023\">0<\/span>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section class=\"lb-filter-section\">\n            <div class=\"lb-filter-pills\" id=\"filter-container\">\n                <button class=\"lb-pill active\" data-dept=\"all\">All Members<\/button>\n                <button class=\"lb-pill\" data-dept=\"leadership\">Leadership<\/button>\n                <button class=\"lb-pill\" data-dept=\"development\">Development<\/button>\n                <button class=\"lb-pill\" data-dept=\"creative\">Design &#038; Prototypes<\/button>\n                <button class=\"lb-pill\" data-dept=\"marketing\">Marketing &#038; Outreach<\/button>\n            <\/div>\n        <\/section>\n\n        <section class=\"lb-team\">\n            <div class=\"lb-team-grid\" id=\"team-container\"><\/div>\n        <\/section>\n    <\/div>\n\n    <div id=\"lb-profile-modal\" aria-hidden=\"true\">\n        <div class=\"lb-modal-card\">\n            <button class=\"lb-modal-nav-btn lb-modal-prev\" id=\"modal-prev-btn\" title=\"Previous Member\">\u276e<\/button>\n            <button class=\"lb-modal-nav-btn lb-modal-next\" id=\"modal-next-btn\" title=\"Next Member\">\u276f<\/button>\n            <button class=\"lb-modal-close\" onclick=\"closeModal()\">&times;<\/button>\n            \n            <div class=\"lb-modal-header\">\n                <img decoding=\"async\" id=\"modal-img\" class=\"lb-modal-img\" src=\"\" alt=\"Profile\">\n                <h2 id=\"modal-name\" class=\"lb-modal-name\">Member Name<\/h2>\n                <div id=\"modal-role\" class=\"lb-modal-role\">Role Title<\/div>\n            <\/div>\n\n            <div class=\"lb-modal-tabs\">\n                <button class=\"lb-tab-btn active\" data-tab=\"bio\">Biography<\/button>\n                <button class=\"lb-tab-btn\" data-tab=\"skills\">Tech &#038; Skills<\/button>\n            <\/div>\n\n            <div id=\"tab-bio\" class=\"lb-tab-content active\"><\/div>\n            <div id=\"tab-skills\" class=\"lb-tab-content\"><\/div>\n        <\/div>\n    <\/div>\n\n    <footer class=\"lb-footer\">\n        <div class=\"lb-footer-text\">\u2728 Creating games that inspire, educate, and uplift \u2728<\/div>\n    <\/footer>\n<\/div>\n\n<script>\nlet audioCtx = null;\n\nfunction initAudio() {\n    if (!audioCtx) {\n        const AudioContext = window.AudioContext || window.webkitAudioContext;\n        if (AudioContext) {\n            audioCtx = new AudioContext();\n        }\n    }\n    if (audioCtx && audioCtx.state === 'suspended') {\n        audioCtx.resume();\n    }\n}\n\nwindow.addEventListener('click', initAudio, { once: true });\n\nfunction playSynthSound(freq = 440, type = 'sine', duration = 0.1, maxVol = 0.04) {\n    if (!audioCtx) return;\n    try {\n        const osc = audioCtx.createOscillator();\n        const gain = audioCtx.createGain();\n        osc.type = type;\n        osc.frequency.setValueAtTime(freq, audioCtx.currentTime);\n        gain.gain.setValueAtTime(0, audioCtx.currentTime);\n        gain.gain.linearRampToValueAtTime(maxVol, audioCtx.currentTime + 0.01);\n        gain.gain.exponentialRampToValueAtTime(0.0001, audioCtx.currentTime + duration);\n        osc.connect(gain);\n        gain.connect(audioCtx.destination);\n        osc.start();\n        osc.stop(audioCtx.currentTime + duration);\n    } catch (e) {}\n}\n\nconst teamMembers = [\n    {\n        id: \"brian\",\n        name: \"Brian Wilmeth\",\n        role: \"CEO \u2022 Founder\",\n        department: \"leadership\",\n        img: \"http:\/\/lightbearsoftware.com\/wp-content\/uploads\/2025\/03\/1743281632285.jpg\",\n        bio: \"Founder of LightBear Software and creative director guiding the studio vision toward uplifting and innovative gaming experiences.\",\n        skills: [\"Vision & Leadership\", \"Game Design\", \"Executive Strategy\", \"Creative Direction\"]\n    },\n    {\n        id: \"heather\",\n        name: \"Heather Brown\",\n        role: \"Game Prototype Developer\",\n        department: \"creative\",\n        img: \"https:\/\/lightbearsoftware.com\/wp-content\/uploads\/2025\/10\/hbrown.png\",\n        bio: \"An artist at heart, Heather specializes in bringing visual game concepts to life through rapid prototyping and conceptual design.\",\n        skills: [\"Rapid Prototyping\", \"UI\/UX Design\", \"2D\/3D Art\", \"Concept Visuals\"]\n    },\n    {\n        id: \"jerry\",\n        name: \"Jerry Walton\",\n        role: \"Game Developer\",\n        department: \"development\",\n        img: \"http:\/\/lightbearsoftware.com\/wp-content\/uploads\/2026\/03\/jw_cedar_lake-1-scaled.jpg\",\n        bio: \"Designs, builds, and maintains interactive games, collaborating on gameplay, graphics, and systems for engaging player experiences.\",\n        skills: [\"C# \/ Unity\", \"Unreal Engine\", \"Systems Programming\", \"Physics Mechanics\"]\n    },\n    {\n        id: \"gregory\",\n        name: \"Gregory Beaudoin\",\n        role: \"Prototype Developer\",\n        department: \"creative\",\n        img: \"https:\/\/lightbearsoftware.com\/wp-content\/uploads\/2025\/10\/greg-507x1024.jpg\",\n        bio: \"Gregory is the bridge between idea and reality, transforming mechanics into playable, polished demos that define the fun factor.\",\n        skills: [\"Mechanics Design\", \"Gameplay Polish\", \"Level Design\", \"Scripting\"]\n    },\n    {\n        id: \"sofiane\",\n        name: \"Sofiane Ben\",\n        role: \"Marketing & Promotion\",\n        department: \"marketing\",\n        img: \"https:\/\/lightbearsoftware.com\/wp-content\/uploads\/2025\/10\/1732811261205_VishaCropImage-462x1024.jpg\",\n        bio: \"The voice of LightBear, Sofiane builds community engagement and ensures our projects reach the players who will love them most.\",\n        skills: [\"Community Management\", \"Social Media Strategy\", \"PR & Outreach\", \"Content Creation\"]\n    },\n    {\n        id: \"nathan\",\n        name: \"Nathan Juranek\",\n        role: \"Gameplay Programmer\",\n        department: \"development\",\n        img: \"https:\/\/lightbearsoftware.com\/wp-content\/uploads\/2025\/10\/FB_IMG_1760290744856-1013x1024.jpg\",\n        bio: \"Nathan breathes life into our games through complex systems and seamless mechanics, ensuring every interaction feels perfect.\",\n        skills: [\"Gameplay Logic\", \"AI Behaviors\", \"Optimization\", \"Character Controllers\"]\n    },\n    {\n        id: \"robert\",\n        name: \"Robert Chaney\",\n        role: \"Developer\",\n        department: \"development\",\n        img: \"https:\/\/lightbearsoftware.com\/wp-content\/uploads\/2025\/10\/T05TE6PDW01-U08MZHQNJRJ-5de7ffb72309-512.jpg\",\n        bio: \"A multi-talented developer focused on cross-platform deployment and creating modular project structures.\",\n        skills: [\"Cross-Platform Architecture\", \"Tools Programming\", \"Backend Systems\", \"Bug Fixes\"]\n    },\n    {\n        id: \"gabrielle\",\n        name: \"Gabrielle Pastore\",\n        role: \"Outreach Coordinator\",\n        department: \"marketing\",\n        img: \"https:\/\/lightbearsoftware.com\/wp-content\/uploads\/2026\/02\/gabs.webp\",\n        bio: \"Gabrielle expands the LightBear universe by building partnerships and pitching our vision to the wider gaming industry.\",\n        skills: [\"Industry Relations\", \"Event Management\", \"Partnerships\", \"Brand Strategy\"]\n    }\n];\n\nlet currentFilteredMembers = [...teamMembers];\nlet currentMemberIndex = 0;\n\nconst teamContainer = document.getElementById('team-container');\n\nfunction renderTeam(members) {\n    teamContainer.innerHTML = '';\n    \n    if (members.length === 0) {\n        teamContainer.innerHTML = `\n            <div style=\"grid-column: 1 \/ -1; text-align: center; padding: 40px; color: var(--text-muted);\">\n                <p style=\"font-size: 1.1rem;\">No team members found matching your selected category.<\/p>\n            <\/div>\n        `;\n        return;\n    }\n\n    members.forEach((member, idx) => {\n        const card = document.createElement('div');\n        card.className = 'lb-card';\n\n        const skillBadges = member.skills.slice(0, 3).map(s => `<span class=\"lb-tag\">${s}<\/span>`).join('');\n\n        card.innerHTML = `\n            <div class=\"lb-card-avatar-wrap\">\n                <img decoding=\"async\" class=\"lb-profile-img\" src=\"${member.img}\" alt=\"${member.name}\" onerror=\"this.src='https:\/\/placehold.co\/150x150\/0b0b2b\/00f7ff?text=${encodeURIComponent(member.name.charAt(0))}'\">\n            <\/div>\n            <h3 class=\"lb-member-name\">${member.name}<\/h3>\n            <div class=\"lb-member-role\">${member.role}<\/div>\n            <div class=\"lb-skill-tags\">${skillBadges}<\/div>\n        `;\n\n        card.onmouseenter = () => {\n            playSynthSound(320 + idx * 30, 'sine', 0.08, 0.02);\n        };\n\n        let cardAnimationFrame = null;\n        card.onmousemove = (e) => {\n            if (cardAnimationFrame) return;\n            cardAnimationFrame = requestAnimationFrame(() => {\n                const rect = card.getBoundingClientRect();\n                const x = e.clientX - rect.left;\n                const y = e.clientY - rect.top;\n                const centerX = x - rect.width \/ 2;\n                const centerY = y - rect.height \/ 2;\n                card.style.transform = `rotateY(${centerX \/ 16}deg) rotateX(${-centerY \/ 16}deg) translateY(-4px)`;\n                cardAnimationFrame = null;\n            });\n        };\n\n        card.onmouseleave = () => {\n            if (cardAnimationFrame) cancelAnimationFrame(cardAnimationFrame);\n            card.style.transform = 'rotateY(0deg) rotateX(0deg) translateY(0px)';\n        };\n\n        card.onclick = () => {\n            playSynthSound(500, 'triangle', 0.15, 0.05);\n            openModalByMember(member);\n        };\n\n        teamContainer.appendChild(card);\n    });\n}\n\nconst filterPills = document.querySelectorAll('.lb-pill');\n\nfunction applyFilters() {\n    const activeDept = document.querySelector('.lb-pill.active').dataset.dept;\n\n    currentFilteredMembers = teamMembers.filter(m => {\n        return activeDept === 'all' || m.department === activeDept;\n    });\n\n    renderTeam(currentFilteredMembers);\n}\n\nfilterPills.forEach(pill => {\n    pill.onclick = () => {\n        filterPills.forEach(p => p.classList.remove('active'));\n        pill.classList.add('active');\n        playSynthSound(440, 'sine', 0.08, 0.04);\n        applyFilters();\n    };\n});\n\nconst modal = document.getElementById('lb-profile-modal');\n\nfunction openModalByMember(member) {\n    currentMemberIndex = currentFilteredMembers.findIndex(m => m.id === member.id);\n    if (currentMemberIndex === -1) currentMemberIndex = 0;\n    \n    updateModalContent(currentFilteredMembers[currentMemberIndex]);\n    modal.classList.add('active');\n}\n\nfunction updateModalContent(member) {\n    const modalImg = document.getElementById('modal-img');\n    modalImg.src = member.img;\n    modalImg.onerror = function() {\n        this.src = `https:\/\/placehold.co\/150x150\/0b0b2b\/00f7ff?text=${encodeURIComponent(member.name.charAt(0))}`;\n    };\n    \n    document.getElementById('modal-name').innerText = member.name;\n    document.getElementById('modal-role').innerText = member.role;\n    document.getElementById('tab-bio').innerText = member.bio;\n    \n    const skillsHtml = member.skills.map(s => `<span class=\"lb-tag\" style=\"font-size:0.8rem; padding:5px 12px; margin:3px; display:inline-block;\">${s}<\/span>`).join('');\n    document.getElementById('tab-skills').innerHTML = `<div style=\"margin-top:8px;\">${skillsHtml}<\/div>`;\n\n    switchTab('bio');\n}\n\nfunction switchTab(tabName) {\n    document.querySelectorAll('.lb-tab-btn').forEach(btn => {\n        btn.classList.toggle('active', btn.dataset.tab === tabName);\n    });\n    document.querySelectorAll('.lb-tab-content').forEach(content => {\n        content.classList.toggle('active', content.id === `tab-${tabName}`);\n    });\n    playSynthSound(360, 'sine', 0.06, 0.02);\n}\n\ndocument.querySelectorAll('.lb-tab-btn').forEach(btn => {\n    btn.onclick = () => switchTab(btn.dataset.tab);\n});\n\ndocument.getElementById('modal-prev-btn').onclick = (e) => {\n    e.stopPropagation();\n    if (currentFilteredMembers.length === 0) return;\n    currentMemberIndex = (currentMemberIndex - 1 + currentFilteredMembers.length) % currentFilteredMembers.length;\n    updateModalContent(currentFilteredMembers[currentMemberIndex]);\n};\n\ndocument.getElementById('modal-next-btn').onclick = (e) => {\n    e.stopPropagation();\n    if (currentFilteredMembers.length === 0) return;\n    currentMemberIndex = (currentMemberIndex + 1) % currentFilteredMembers.length;\n    updateModalContent(currentFilteredMembers[currentMemberIndex]);\n};\n\nfunction closeModal() {\n    modal.classList.remove('active');\n}\n\nmodal.onclick = (e) => {\n    if (e.target === modal) closeModal();\n};\n\nwindow.addEventListener('keydown', (e) => {\n    if (!modal.classList.contains('active')) return;\n    if (e.key === 'Escape') closeModal();\n    if (e.key === 'ArrowLeft') document.getElementById('modal-prev-btn').click();\n    if (e.key === 'ArrowRight') document.getElementById('modal-next-btn').click();\n});\n\nconst canvas = document.getElementById('star-canvas');\nconst rootElem = document.getElementById('lb-root');\nconst ctx = canvas.getContext('2d');\nlet stars = [];\n\nfunction resizeCanvas() {\n    canvas.width = rootElem.clientWidth;\n    canvas.height = rootElem.clientHeight;\n}\nwindow.addEventListener('resize', resizeCanvas);\nsetTimeout(resizeCanvas, 100);\n\nclass Star {\n    constructor() {\n        this.reset();\n    }\n    reset() {\n        this.x = Math.random() * canvas.width;\n        this.y = Math.random() * canvas.height;\n        this.size = Math.random() * 1.8 + 0.5;\n        this.speed = Math.random() * 0.3 + 0.1;\n        this.alpha = Math.random() * 0.7 + 0.3;\n    }\n    update() {\n        this.y -= this.speed;\n        if (this.y < 0) {\n            this.y = canvas.height;\n            this.x = Math.random() * canvas.width;\n        }\n    }\n    draw() {\n        ctx.fillStyle = `rgba(255, 255, 255, ${this.alpha})`;\n        ctx.beginPath();\n        ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);\n        ctx.fill();\n    }\n}\n\nfor (let i = 0; i < 60; i++) stars.push(new Star());\n\nfunction animateStarfield() {\n    if (canvas.width > 0 && canvas.height > 0) {\n        ctx.clearRect(0, 0, canvas.width, canvas.height);\n        for (let i = 0; i < stars.length; i++) {\n            stars[i].update();\n            stars[i].draw();\n        }\n    }\n    requestAnimationFrame(animateStarfield);\n}\nanimateStarfield();\n\nfunction animateCounters() {\n    const statNumbers = document.querySelectorAll('.lb-stat-number');\n    statNumbers.forEach(num => {\n        const target = parseInt(num.dataset.target);\n        let current = 0;\n        const increment = target \/ 40;\n        const timer = setInterval(() => {\n            current += increment;\n            if (current >= target) {\n                num.innerText = target;\n                clearInterval(timer);\n            } else {\n                num.innerText = Math.floor(current);\n            }\n        }, 30);\n    });\n}\n\nrenderTeam(teamMembers);\nanimateCounters();\n\n\/\/ Force breakout from WordPress theme parent containers on load\nwindow.addEventListener('DOMContentLoaded', () => {\n    let parent = document.getElementById('lb-root').parentElement;\n    while (parent && parent !== document.body) {\n        parent.style.maxWidth = '100%';\n        parent.style.width = '100%';\n        parent.style.margin = '0';\n        parent.style.padding = '0';\n        parent.style.background = 'transparent';\n        parent = parent.parentElement;\n    }\n});\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>About LightBear Software | Cinematic Experience LIGHTBEAR About LightBear Software An independent game development studio dedicated to creating inspiring, uplifting, and joyful digital worlds. Est. Year 0 All Members Leadership Development Design &#038; Prototypes Marketing &#038; Outreach \u276e \u276f &times; Member Name Role Title Biography Tech &#038; Skills \u2728 Creating games that inspire, educate, and &#8230; <a title=\"TEAM\" class=\"read-more\" href=\"https:\/\/lightbearsoftware.com\/index.php\/contact\/\">Read more<span class=\"screen-reader-text\">TEAM<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":48,"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":638,"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/pages\/7\/revisions\/638"}],"wp:attachment":[{"href":"https:\/\/lightbearsoftware.com\/index.php\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}