{"id":16013,"date":"2026-04-02T07:41:24","date_gmt":"2026-04-02T02:41:24","guid":{"rendered":"http:\/\/hobbi.st\/?page_id=16013"},"modified":"2026-04-05T11:30:29","modified_gmt":"2026-04-05T06:30:29","slug":"ozgeris","status":"publish","type":"page","link":"https:\/\/hobbi.st\/ru\/","title":{"rendered":"ozgeris"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"16013\" class=\"elementor elementor-16013\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-305e1c6 e-flex e-con-boxed e-con e-parent\" data-id=\"305e1c6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-61e861d elementor-widget elementor-widget-shortcode\" data-id=\"61e861d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">    <script src=\"https:\/\/telegram.org\/js\/telegram-web-app.js\"><\/script>\n    <script>\n        \/\/ Immediate TMA initialization to prevent stuck loading screen\n        (function() {\n            var tg = window.Telegram ? window.Telegram.WebApp : null;\n            if (tg) {\n                tg.ready();\n                tg.expand();\n                try { if (tg.disableVerticalSwipes) tg.disableVerticalSwipes(); } catch(e) {}\n            }\n        })();\n    <\/script>\n    <script>\n        \/\/ High priority Mini App startup (Executed before style\/HTML parsing completes)\n        (function() {\n            window.ozgOpenHappyOverlay = function() {\n                var overlay = document.getElementById('ozgHappyOverlay');\n                if (overlay) {\n                    overlay.classList.add('show');\n                    return true;\n                }\n                return false;\n            };\n\n            var tg = window.Telegram ? window.Telegram.WebApp : null;\n            if (tg) {\n                var urlParams = new URLSearchParams(window.location.search);\n                var isDeepLink = urlParams.has('startapp') || urlParams.has('ozg_post') || urlParams.has('ozg_slug') || window.location.hash.includes('feed-');\n                var popupEnabled = false;\n\n                if (!isDeepLink && popupEnabled) {\n                    var retries = 0;\n                    var tryAuto = function() {\n                        if (window.ozgOpenHappyOverlay()) return;\n                        if (retries++ < 50) setTimeout(tryAuto, 50);\n                    };\n                    tryAuto();\n                }\n            }\n        })();\n\n        function ozgOpenTrophyManually(e) {\n            if (e) e.preventDefault();\n            window.ozgOpenHappyOverlay();\n        }\n    <\/script>\n    <style>\n        \/* Base Reset & Variables *\/\n        header#masthead, footer#colophon, .site-header, .site-footer, .entry-header { display: none !important; }\n        .site-content, .site-inner, .entry-content, .ast-container, .container, #page, .site, #wrapper, .elementor, .elementor-page { padding: 0 !important; margin: 0 !important; max-width: 100% !important; width: 100% !important; border: none !important; overflow-x: clip !important; overflow-y: visible !important; box-sizing: border-box !important; }\n        html, body { overflow-x: clip !important; margin: 0 !important; padding: 0 !important; width: 100% !important; max-width: 100% !important; box-sizing: border-box !important; }\n        body { background-color: #05070f !important; }\n        .ozgeris-dashboard-wrapper { --bg-color: #05070f; --glass-bg: rgba(255, 255, 255, 0.03); --glass-border: rgba(255, 255, 255, 0.08); --accent-cyan: #00f0ff; --accent-purple: #8a2be2; --warning-color: #ff3366; --success-color: #00e676; --text-main: #ffffff; --text-muted: #8b9bb4; --tg-color: #2AABEE; background-color: var(--bg-color); color: var(--text-main); font-family: 'Inter', sans-serif; position: relative; min-height: 100vh; width: 100% !important; max-width: 100% !important; overflow-x: clip !important; box-sizing: border-box !important; }\n        .ozgeris-dashboard-wrapper * { box-sizing: border-box !important; max-width: 100%; }\n        .ozg-bg-glow-1 { position: fixed; top: -10%; left: -10%; width: 300px; height: 300px; background: radial-gradient(circle, rgba(0, 240, 255, 0.15) 0%, rgba(0,0,0,0) 70%); filter: blur(60px); z-index: 0; pointer-events: none; }\n        .ozg-bg-glow-2 { position: fixed; bottom: -10%; right: -10%; width: 300px; height: 300px; background: radial-gradient(circle, rgba(138, 43, 226, 0.15) 0%, rgba(0,0,0,0) 70%); filter: blur(60px); z-index: 0; pointer-events: none; }\n\n        \/* Game Header Styles *\/\n        .ozg-header-panel { position: fixed; top: 0; left: 0; right: 0; width: 100%; z-index: 1000; background: rgba(5, 7, 15, 0.85); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--glass-border); padding: 12px 20px; display: flex; flex-direction: column; gap: 10px; pointer-events: none; transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); will-change: transform; }\n        .ozg-header-hidden { transform: translateY(-100%) !important; }\n        .ozg-header-panel * { pointer-events: auto; }\n        .ozg-header-main { display: flex; justify-content: space-between; align-items: center; width: 100%; max-width: 1440px; margin: 0 auto; gap: 10px; }\n        .ozg-profile-header { display: flex; align-items: center; gap: 12px; text-decoration: none !important; color: #fff; transition: 0.2s; }\n        .ozg-profile-header:hover { opacity: 0.8; }\n        .ozg-profile-header img { width: 40px; height: 40px; border-radius: 50%; border: 2px solid var(--accent-purple); object-fit: cover; }\n        .ozg-profile-header-info { display: flex; flex-direction: column; justify-content: center; }\n        .ozg-profile-name { font-weight: 700; font-size: 0.95rem; color: var(--success-color); line-height: 1.2; }\n        .ozg-profile-trophy { font-size: 0.8rem; color: #fbbf24; display: flex; align-items: center; gap: 4px; margin-top: 2px; font-weight: 600; }\n        .ozg-trophy-button { background: transparent; padding: 0; margin: 0; border: none; text-decoration: none; color: #fbbf24; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; gap: 2px; }\n        .ozg-trophy-button:hover { text-decoration: underline; }\n        .ozg-trophy-button:active { transform: scale(0.95); opacity: 0.8; }\n        .ozg-header-resources { display: flex; gap: 12px; align-items: center; justify-content: center; flex-wrap: wrap; }\n        .ozg-resource-item { display: flex; align-items: center; gap: 6px; background: rgba(255,255,255,0.05); padding: 6px 12px; border-radius: 12px; color: #fff !important; font-size: 0.9rem; font-weight: 600; text-decoration: none !important; border: 1px solid rgba(255,255,255,0.05); transition: 0.2s; }\n        .ozg-resource-item:hover { background: rgba(255,255,255,0.1); border-color: var(--glass-border); transform: translateY(-1px); }\n        .ozg-header-menu-btn { background: none; border: none; color: #fff; cursor: pointer; padding: 8px; border-radius: 8px; display: flex; align-items: center; justify-content: center; transition: 0.2s; }\n        .ozg-header-menu-btn:hover { background: rgba(255,255,255,0.1); color: var(--accent-cyan); }\n        .ozg-header-expanded { display: flex; justify-content: space-between; align-items: flex-start; padding-top: 12px; border-top: 1px solid var(--glass-border); max-width: 1440px; margin: 0 auto; width: 100%; animation: ozgFadeDown 0.3s ease forwards; }\n        .ozg-rank-badge { background: #fbbf24; color: #000 !important; padding: 6px 16px; border-radius: 20px; font-weight: 800; font-size: 0.9rem; text-decoration: none !important; box-shadow: 0 4px 15px rgba(251, 191, 36, 0.3); height: fit-content; transition: 0.2s; }\n        .ozg-rank-badge:hover { transform: scale(1.05); }\n        .ozg-header-actions { display: flex; flex-direction: column; gap: 8px; align-items: flex-end; }\n        .ozg-action-btn { display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.05); border: 1px solid var(--glass-border); padding: 8px 16px; border-radius: 12px; color: #fff !important; font-size: 0.85rem; font-weight: 500; text-decoration: none !important; width: 140px; transition: 0.2s; }\n        .ozg-action-btn:hover { background: rgba(255,255,255,0.1); border-color: var(--accent-cyan); color: var(--accent-cyan) !important; }\n        .ozg-icon-action-btn { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 50%; background: var(--glass-bg); color: #fff !important; text-decoration: none !important; border: 1px solid var(--glass-border); transition: 0.2s; }\n        .ozg-icon-action-btn:hover { background: var(--accent-purple); border-color: var(--accent-purple); transform: translateY(-2px); }\n        .ozg-toast { position: fixed; top: 80px; left: 50%; transform: translateX(-50%); background: rgba(0, 240, 255, 0.1); border: 1px solid var(--accent-cyan); color: #fff; padding: 12px 24px; border-radius: 12px; box-shadow: 0 4px 20px rgba(0,0,0,0.5); font-size: 0.9rem; z-index: 2147483647; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; backdrop-filter: blur(10px); }\n        @keyframes ozgFadeDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }\n\n        \/* Layout *\/\n        .ozg-layout { display: grid; grid-template-columns: 280px 1fr; gap: 30px; max-width: 1440px; margin: 0 auto; padding: 80px 20px 120px 20px; position: relative; z-index: 1; width: 100%; box-sizing: border-box; transition: all 0.3s ease; --header-h: 70px; }\n        @media (max-width: 900px) {\n            .ozg-layout { padding-top: 70px !important; padding-left: 10px !important; padding-right: 10px !important; gap: 15px; }\n            .ozg-section { padding-top: 0 !important; }\n        }\n        .ozg-main { min-width: 0; width: 100%; }\n        .ozg-glass { background: var(--glass-bg); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid var(--glass-border); border-radius: 24px; padding: 24px; }\n        .ozg-section { display: none; animation: fadeIn 0.4s ease; width: 100%; padding-top: 8px; } .ozg-section.active { display: block; }\n        @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }\n\n        \/* Sidebar Navigation *\/\n        .ozg-sidebar { display: flex; flex-direction: column; gap: 32px; position: sticky; top: 100px; height: max-content; z-index: 10; }\n        .ozg-nav-link { display: flex; align-items: center; gap: 12px; padding: 14px 20px; color: var(--text-muted); text-decoration: none; border-radius: 14px; font-weight: 500; transition: all 0.3s; border: 1px solid transparent; background: transparent; cursor: pointer; text-align: left; width: 100%; font-size: 1rem; }\n        .ozg-nav-link:hover { color: #fff; background: rgba(255,255,255,0.02); border-color: rgba(255,255,255,0.05); }\n        .ozg-nav-link.active { color: #fff; background: rgba(0, 240, 255, 0.05); border-color: rgba(0, 240, 255, 0.2); box-shadow: 0 0 20px rgba(0, 240, 255, 0.1); }\n\n        \/* Buttons & Inputs *\/\n        .ozg-btn { background: linear-gradient(135deg, #00f0ff, #0080ff); border: none; padding: 12px 24px; border-radius: 12px; color: #000; font-weight: 700; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; transition: 0.3s; box-shadow: 0 4px 15px rgba(0,240,255,0.3); text-decoration: none; }\n        .ozg-btn:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,240,255,0.4); }\n        .ozg-btn-sec { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); padding: 12px 24px; border-radius: 12px; color: #fff; font-weight: 600; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; transition: 0.3s; }\n        .ozg-btn-sec:hover { background: rgba(255,255,255,0.1); border-color: var(--accent-cyan); }\n        .ozg-icon-btn { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); color: #fff; width: 36px; height: 36px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; transition: 0.2s; }\n        .ozg-icon-btn:hover { background: rgba(255,255,255,0.1); border-color: var(--accent-cyan); color: var(--accent-cyan); }\n        .ozg-icon-btn.danger:hover { border-color: var(--warning-color); color: var(--warning-color); }\n        .ozg-btn-tg { background: var(--tg-color); color: #fff; border: none; padding: 8px 16px; border-radius: 12px; font-weight: 600; text-decoration: none; display: inline-flex; align-items: center; gap: 6px; transition: 0.3s; }\n        .ozg-btn-tg:hover { background: #1b9de0; transform: translateY(-2px); color: #fff; }\n               .ozg-input { width: 100%; background: rgba(0,0,0,0.2); border: 1px solid var(--glass-border); color: #fff; padding: 12px 16px; border-radius: 12px; outline: none; transition: 0.3s; font-family: inherit; margin-bottom: 16px; }\n        .ozg-input:focus { border-color: var(--accent-cyan); box-shadow: 0 0 10px rgba(0,240,255,0.1); }\n\n        \/* Quiz & Cards *\/\n        .q-view { display: none; flex-direction: column; opacity: 0; transition: opacity 0.4s; }\n        .q-view.active { display: flex; opacity: 1; }\n        .rating-btn { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); width: 50px; height: 50px; border-radius: 14px; color: #fff; font-size: 1.2rem; font-weight: 700; cursor: pointer; transition: 0.2s; }\n        .rating-btn:hover { background: rgba(255,255,255,0.1); transform: scale(1.05); }\n        .rating-btn.selected { background: var(--active-color); border-color: var(--active-color); color: #000; box-shadow: 0 0 15px var(--active-color); transform: scale(1.1); }\n        .sphere-chip { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); border-radius: 12px; padding: 16px; cursor: pointer; position: relative; overflow: hidden; transition: 0.3s; }\n        .sphere-chip:hover:not(.locked) { border-color: var(--glass-border); background: rgba(255,255,255,0.08); transform: translateY(-2px); }\n        .sphere-chip.selected { border-color: var(--accent-cyan); box-shadow: 0 0 15px rgba(0,240,255,0.2); }\n        .sphere-chip.locked { opacity: 0.6; cursor: not-allowed; border-color: rgba(255,255,255,0.05); }\n        .sphere-fill { position: absolute; top: 0; left: 0; bottom: 0; opacity: 0; transition: opacity 0.5s ease-in-out, width 1s ease-in-out; z-index: 0; }\n        .sphere-content { position: relative; z-index: 1; display: flex; justify-content: space-between; align-items: center; }\n\n        \/* Track & Nodes *\/\n        .ozg-skill-node { display: flex; align-items: center; gap: 16px; background: rgba(255,255,255,0.03); border: 1px solid rgba(255,255,255,0.1); padding: 16px; border-radius: 16px; transition: 0.3s; position: relative; z-index: 2; }\n        .ozg-skill-node:hover:not(.ozg-skill-locked) { border-color: var(--accent-purple); transform: translateY(-2px); background: rgba(255,255,255,0.05); }\n        .ozg-skill-node.completed { border-color: var(--success-color); background: rgba(0,230,118,0.05); }\n        .ozg-skill-node.completed .ozg-node-icon { background: var(--success-color); color: #000; }\n        .ozg-node-icon { width: 48px; height: 48px; border-radius: 12px; background: rgba(255,255,255,0.05); display: flex; align-items: center; justify-content: center; color: var(--text-muted); transition: 0.3s; }\n        .ozg-tree-connector { width: 2px; height: 30px; background: rgba(255,255,255,0.1); margin: 0 auto; transition: 0.3s; }\n        .ozg-tree-connector.unlocked { background: var(--accent-cyan); box-shadow: 0 0 10px var(--accent-cyan); }\n        .ozg-skill-locked { opacity: 0.5; filter: grayscale(1); }\n        .ozg-lock-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.6); backdrop-filter: blur(2px); border-radius: 16px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #fff; font-size: 0.8rem; font-weight: 600; z-index: 10; gap: 4px; }\n\n        .ozg-habit-card { display: flex; align-items: center; gap: 12px; background: rgba(255,255,255,0.02); padding: 12px 16px; border-radius: 12px; margin-bottom: 8px; cursor: pointer; transition: 0.2s; border: 1px solid transparent; }\n        .ozg-habit-card:hover { background: rgba(255,255,255,0.04); border-color: rgba(255,255,255,0.05); }\n        .ozg-habit-card.completed { background: rgba(0,230,118,0.05); border-color: rgba(0,230,118,0.2); }\n        .ozg-habit-check { width: 20px; height: 20px; border-radius: 6px; border: 2px solid var(--text-muted); display: flex; align-items: center; justify-content: center; transition: 0.2s; }\n        .ozg-habit-card.completed .ozg-habit-check { background: var(--success-color); border-color: var(--success-color); }\n        .ozg-habit-card.completed .ozg-habit-check::after { content: '\u2713'; color: #000; font-size: 14px; font-weight: bold; }\n        .ozg-habit-card.completed .ozg-habit-title { color: var(--success-color) !important; text-decoration: line-through; opacity: 0.8; }\n\n        .ozg-milestone { display: flex; gap: 16px; position: relative; margin-bottom: 16px; }\n        .ozg-milestone::before { content: ''; position: absolute; left: 7px; top: 20px; bottom: -16px; width: 2px; background: rgba(255,255,255,0.1); }\n        .ozg-milestone:last-child::before { display: none; }\n        .ozg-m-dot { width: 16px; height: 16px; border-radius: 50%; background: var(--bg-color); border: 2px solid var(--accent-purple); position: relative; z-index: 1; margin-top: 4px; flex-shrink: 0; }\n        .ozg-m-content { flex: 1; background: rgba(255,255,255,0.02); border-radius: 12px; padding: 16px; border: 1px solid rgba(255,255,255,0.05); transition: 0.3s; }\n\n        \/* Filters - Original hidden bar *\/\n        .filter-bar-original { display: none; }\n\n        \/* FIXED: Filters - Sticky Wrapper with proper hide\/show *\/\n        .ozg-filter-sticky {\n            position: fixed;\n            top: 65px;\n            left: 0;\n            right: 0;\n            width: 100%;\n            z-index: 99;\n            background: rgba(5, 7, 15, 0.98);\n            backdrop-filter: blur(12px);\n            -webkit-backdrop-filter: blur(12px);\n            border-bottom: 1px solid var(--glass-border);\n            border-top: 1px solid rgba(255,255,255,0.05);\n            transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n            will-change: transform;\n            padding: 0;\n            display: none;\n            transform: translateY(0);\n        }\n        .ozg-filter-sticky.visible {\n            display: block;\n        }\n        .ozg-filter-sticky.sticky-hidden {\n            transform: translateY(-100%);\n            display: block;\n        }\n        .ozg-filter-sticky .filter-bar {\n            margin: 0 !important;\n            padding: 15px 20px !important;\n            border: none !important;\n            background: transparent !important;\n            position: relative;\n            top: auto;\n        }\n        @media (max-width: 900px) {\n            .ozg-filter-sticky .filter-bar {\n                padding: 15px 10px !important;\n            }\n            .ozg-filter-sticky {\n                top: 65px;\n            }\n        }\n        @media (max-width: 768px) {\n            .ozg-filter-sticky {\n                top: 52px;\n            }\n        }\n\n        \/* Regular filter bar (non-sticky) *\/\n        .filter-bar {\n            display: flex;\n            gap: 10px;\n            flex-wrap: wrap;\n            margin-bottom: 24px;\n        }\n        .filter-select {\n            background: rgba(255,255,255,0.05);\n            border: 1px solid rgba(255,255,255,0.1);\n            color: #fff;\n            padding: 10px 16px;\n            border-radius: 12px;\n            outline: none;\n            font-size: 0.9rem;\n            cursor: pointer;\n        }\n        .filter-select option {\n            background: #0f121e;\n            color: #fff;\n        }\n\n        \/* Feed Styles *\/\n        .ozg-sticky-feed-header { position: fixed; top: 60px; left: 0; right: 0; width: 100%; z-index: 199; background: rgba(5,7,15,0.98); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--glass-border); border-top: 1px solid rgba(255,255,255,0.05); padding: 15px 20px; transform: translateY(0); transition: transform 0.3s ease, top 0.3s ease; }\n        .ozg-sticky-feed-header.feed-hidden { transform: translateY(-100%); }\n        @media (max-width: 900px) {\n            .ozg-sticky-feed-header { padding: 12px 10px; top: 56px; position: fixed !important; }\n        }\n        #view-result { padding-top: 0; }\n        @media (max-width: 768px) { .ozg-sticky-feed-header { top: 52px; } }\n\n        \/* TikTok \/ Instagram Feed Styles *\/\n        .ozg-feed-tags-scroll::-webkit-scrollbar { display: none; }\n        .ozg-feed-tag-btn { background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); color: var(--text-muted); padding: 8px 16px; border-radius: 20px; font-size: 0.85rem; font-weight: 600; cursor: pointer; white-space: nowrap; transition: 0.2s; }\n        .ozg-feed-tag-btn:hover { background: rgba(255,255,255,0.1); color: #fff; }\n        .ozg-feed-tag-btn.active { background: var(--accent-purple); border-color: var(--accent-purple); color: #fff; box-shadow: 0 0 15px rgba(138, 43, 226, 0.4); }\n        #ozg-feed-loader { text-align: center; padding: 20px; grid-column: 1\/-1; display: none; }\n        .ozg-feed-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; margin-top: 20px; }\n        .ozg-feed-card { position: relative; border-radius: 16px; overflow: hidden; aspect-ratio: 9 \/ 16; transition: all 0.3s; box-shadow: 0 4px 20px rgba(0,0,0,0.3); text-decoration: none !important; display: block; border: 1px solid transparent; cursor: pointer; }\n        .ozg-feed-card:hover { transform: translateY(-5px); border-color: var(--card-color, var(--accent-cyan)); box-shadow: 0 10px 30px rgba(0,0,0,0.5), 0 0 15px var(--card-color, transparent); }\n        .ozg-feed-card:active { transform: scale(0.96) !important; border-color: var(--card-color) !important; box-shadow: 0 0 25px var(--card-color), inset 0 0 15px var(--card-color) !important; transition: all 0.1s !important; }\n        .ozg-feed-card-bg { position: absolute; inset: 0; background-size: cover; background-position: center; transition: transform 0.5s; z-index: 1; }\n        .ozg-feed-card:hover .ozg-feed-card-bg { transform: scale(1.05); }\n        .ozg-feed-card::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,0.9) 0%, rgba(0,0,0,0.1) 40%, rgba(0,0,0,0.7) 100%); z-index: 2; pointer-events: none; transition: opacity 0.3s; }\n        .ozg-feed-card.is-playing .ozg-feed-card-bg { display: none; }\n        .ozg-feed-card.is-playing::after { opacity: 0.3; }\n        .ozg-feed-play-btn { background: rgba(0,0,0,0.6); border: 2px solid rgba(255,255,255,0.8); border-radius: 50%; width: 50px; height: 50px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: 0.3s; backdrop-filter: blur(4px); position: absolute; z-index: 4; top: 50%; left: 50%; transform: translate(-50%, -50%); }\n        .ozg-feed-play-btn:hover { transform: translate(-50%, -50%) scale(1.1); background: var(--accent-cyan); border-color: var(--accent-cyan); }\n        .ozg-feed-media-container iframe, .ozg-feed-media-container video, .ozg-feed-media-container audio { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; z-index: 10; border: none; }\n        .ozg-feed-media-container audio { object-fit: contain; background: #000; }\n        .ozg-raw-embed iframe { width: 100% !important; height: 100% !important; position: absolute; top: 0; left: 0; border: none; }\n        .ozg-feed-content { position: relative; z-index: 5; height: 100%; display: flex; flex-direction: column; justify-content: space-between; padding: 16px; }\n        .ozg-feed-tags span { display: inline-block; padding: 6px 10px; border-radius: 8px; font-size: 0.7rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; box-shadow: 0 4px 10px rgba(0,0,0,0.4); }\n        .ozg-feed-title { margin: 0 0 12px 0; font-size: 1.15rem; line-height: 1.3; text-shadow: 0 2px 4px rgba(0,0,0,0.8); }\n        .ozg-feed-title a { color: #fff; text-decoration: none; }\n        .ozg-feed-title a::after { content: ''; position: absolute; inset: 0; }\n        .ozg-feed-author-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }\n        .ozg-feed-author-avatar { width: 24px; height: 24px; border-radius: 50%; border: 1px solid rgba(255,255,255,0.5); object-fit: cover; }\n        .ozg-feed-author-name { font-size: 0.85rem; color: #ddd; font-weight: 500; text-shadow: 0 1px 2px rgba(0,0,0,0.8); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n        .ozg-feed-stats { display: flex; align-items: center; gap: 12px; font-size: 0.8rem; color: #fff; font-weight: 600; text-shadow: 0 1px 2px rgba(0,0,0,0.8); }\n        .ozg-feed-actions { position: relative; z-index: 4; display: flex; gap: 8px; justify-content: flex-end; }\n\n        @media (max-width: 600px) {\n            .ozg-feed-grid {\n                grid-template-columns: repeat(2, 1fr) !important;\n                gap: 8px !important;\n                margin-top: 10px !important;\n            }\n            .ozg-feed-card { border-radius: 12px !important; border: 1px solid rgba(255,255,255,0.05) !important; }\n            .ozg-feed-content { padding: 10px !important; }\n            .ozg-feed-tags span { font-size: 0.6rem !important; padding: 4px 6px !important; }\n            .ozg-feed-title { font-size: 0.85rem !important; margin-bottom: 6px !important; line-height: 1.2 !important; }\n            .ozg-feed-author-avatar { width: 16px !important; height: 16px !important; }\n            .ozg-feed-author-name { font-size: 0.7rem !important; }\n            .ozg-feed-stats { font-size: 0.7rem !important; }\n            .ozg-feed-actions .ozg-icon-btn { width: 28px !important; height: 28px !important; }\n            .ozg-feed-actions .ozg-icon-btn i { width: 12px !important; height: 12px !important; }\n        }\n\n        \/* P2P Campaign Modal Enhancements *\/\n        .ozg-modal#ozgP2PModal .ozg-modal {\n            max-width: 700px;\n            background: #ffffff;\n            border-radius: 24px;\n            overflow: hidden;\n            animation: ozgModalFadeIn 0.3s ease;\n        }\n\n        @keyframes ozgModalFadeIn {\n            from { opacity: 0; transform: scale(0.95); }\n            to { opacity: 1; transform: scale(1); }\n        }\n\n        .ozg-p2p-campaign-header .ozg-p2p-author img {\n            border: 2px solid #e5e7eb;\n        }\n\n        .ozg-p2p-actions button {\n            transition: all 0.2s ease;\n        }\n\n        .ozg-p2p-actions button:hover {\n            transform: translateY(-2px);\n        }\n\n        .ozg-p2p-actions button.liked {\n            background: #fee2e2 !important;\n            color: #dc2626 !important;\n        }\n\n        .ozg-p2p-actions button.liked i {\n            fill: currentColor;\n        }\n\n        .ozg-p2p-campaign-body {\n            font-family: inherit;\n            line-height: 1.5;\n        }\n\n        .ozg-p2p-campaign-body .give-form,\n        .ozg-p2p-campaign-body .give-embed-form {\n            margin: 0;\n        }\n\n        @media (max-width: 640px) {\n            .ozg-modal#ozgP2PModal .ozg-modal {\n                width: 95%;\n                max-width: 95%;\n                margin: 10px;\n                border-radius: 20px;\n            }\n\n            .ozg-p2p-campaign-header > div {\n                flex-direction: column;\n                align-items: flex-start;\n            }\n\n            .ozg-p2p-stats {\n                margin-top: 8px;\n            }\n        }\n\n        \/* Enhanced P2P Campaign Modal Styles *\/\n        .ozg-modal#ozgP2PModal {\n            z-index: 100000;\n        }\n\n        .ozg-modal#ozgP2PModal .ozg-modal {\n            max-width: 800px;\n            width: 90%;\n            background: #ffffff;\n            border-radius: 28px;\n            overflow-y: auto;\n            max-height: 85vh;\n            animation: ozgModalSlideUp 0.35s ease-out;\n            box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n        }\n\n        @keyframes ozgModalSlideUp {\n            from {\n                opacity: 0;\n                transform: translateY(30px) scale(0.95);\n            }\n            to {\n                opacity: 1;\n                transform: translateY(0) scale(1);\n            }\n        }\n\n        .ozg-modal#ozgP2PModal .ozg-modal::-webkit-scrollbar {\n            width: 6px;\n        }\n\n        .ozg-modal#ozgP2PModal .ozg-modal::-webkit-scrollbar-track {\n            background: #f1f1f1;\n            border-radius: 10px;\n        }\n\n        .ozg-modal#ozgP2PModal .ozg-modal::-webkit-scrollbar-thumb {\n            background: #22c55e;\n            border-radius: 10px;\n        }\n\n        \/* P2P Campaign Content Styling *\/\n        .ozg-p2p-campaign-body {\n            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;\n            line-height: 1.6;\n            color: #374151;\n        }\n\n        .ozg-p2p-campaign-body h1,\n        .ozg-p2p-campaign-body h2,\n        .ozg-p2p-campaign-body h3 {\n            color: #111827;\n            margin-top: 1.5em;\n            margin-bottom: 0.5em;\n        }\n\n        .ozg-p2p-campaign-body p {\n            margin-bottom: 1em;\n        }\n\n        .ozg-p2p-campaign-body img {\n            max-width: 100%;\n            height: auto;\n            border-radius: 12px;\n        }\n\n        \/* GiveWP Form Styling inside Modal *\/\n        .ozg-p2p-campaign-body .give-form,\n        .ozg-p2p-campaign-body .give-embed-form {\n            background: #f9fafb;\n            border-radius: 16px;\n            padding: 20px;\n            margin: 20px 0;\n            border: 1px solid #e5e7eb;\n        }\n\n        .ozg-p2p-campaign-body .give-btn,\n        .ozg-p2p-campaign-body .give-submit {\n            background: linear-gradient(135deg, #22c55e, #16a34a);\n            border: none;\n            padding: 12px 28px;\n            border-radius: 40px;\n            color: white;\n            font-weight: 700;\n            cursor: pointer;\n            transition: all 0.2s;\n        }\n\n        .ozg-p2p-campaign-body .give-btn:hover,\n        .ozg-p2p-campaign-body .give-submit:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 4px 15px rgba(34, 197, 94, 0.3);\n        }\n\n        \/* Goal Progress Bar Styling *\/\n        .ozg-p2p-campaign-body .give-progress-bar,\n        .ozg-p2p-campaign-body .campaign-progress {\n            background: #e5e7eb;\n            border-radius: 20px;\n            height: 12px;\n            overflow: hidden;\n        }\n\n        .ozg-p2p-campaign-body .give-progress-bar > span,\n        .ozg-p2p-campaign-body .progress-fill {\n            background: linear-gradient(90deg, #22c55e, #16a34a);\n            height: 100%;\n            display: block;\n            border-radius: 20px;\n        }\n\n        \/* Campaign Stats Display *\/\n        .ozg-p2p-campaign-body .campaign-stats {\n            display: flex;\n            gap: 24px;\n            justify-content: space-around;\n            background: #f0fdf4;\n            padding: 16px;\n            border-radius: 16px;\n            margin: 20px 0;\n        }\n\n        .ozg-p2p-campaign-body .stat-item {\n            text-align: center;\n        }\n\n        \/* Course & Lesson Modal Styles *\/\n        #ozgCourseModal .ozg-modal, #ozgLessonModal .ozg-modal, #ozgFundraisingModal .ozg-modal { max-width: 800px; width: 95%; background: #0f121e; border: 1px solid var(--glass-border); padding: 0; overflow-y: auto; max-height: 90vh; display: block; }\n        .ozg-course-modal-header, .ozg-lesson-modal-header, .ozg-fundraising-modal-header { height: 200px; background-size: cover; background-position: center; position: relative; width: 100%; }\n        .ozg-course-modal-header::after, .ozg-lesson-modal-header::after, .ozg-fundraising-modal-header::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, #0f121e, transparent); }\n        .ozg-course-modal-content, .ozg-lesson-modal-content, .ozg-fundraising-modal-content { padding: 24px; color: #fff; width: 100%; box-sizing: border-box; }\n        .ozg-course-modal-title, .ozg-lesson-modal-title, .ozg-fundraising-modal-title { font-size: 1.8rem; font-weight: 700; margin-bottom: 16px; font-family: 'Playfair Display', serif; }\n        .ozg-course-description, .ozg-lesson-description, .ozg-fundraising-description { color: var(--text-muted); line-height: 1.6; margin-bottom: 24px; font-size: 0.95rem; }\n        .ozg-course-stats, .ozg-lesson-stats { display: flex; gap: 20px; margin-bottom: 24px; flex-wrap: wrap; }\n        .ozg-course-stat-item, .ozg-lesson-stat-item { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; color: var(--text-muted); }\n        .ozg-course-sections, .ozg-lesson-sections { display: flex; flex-direction: column; gap: 16px; }\n        .ozg-course-section-title, .ozg-lesson-section-title { font-size: 1.1rem; font-weight: 600; color: var(--accent-cyan); margin-bottom: 12px; display: flex; align-items: center; gap: 8px; border-bottom: 1px solid var(--glass-border); padding-bottom: 8px; }\n        .ozg-video-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; border-radius: 12px; background: #000; margin-bottom: 20px; }\n        .ozg-video-container iframe, .ozg-video-container video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; }\n        .ozg-lesson-nav { display: flex; justify-content: space-between; margin-top: 30px; padding-top: 20px; border-top: 1px solid var(--glass-border); }\n\n        .ozg-p2p-campaign-body .stat-value {\n            font-size: 1.5rem;\n            font-weight: 800;\n            color: #22c55e;\n        }\n\n        .ozg-p2p-campaign-body .stat-label {\n            font-size: 0.75rem;\n            color: #6b7280;\n            text-transform: uppercase;\n        }\n\n        \/* Action Buttons *\/\n        .ozg-p2p-share-btn:hover,\n        .ozg-p2p-like-btn:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n        }\n\n\n\n        .ozg-p2p-like-btn.liked {\n            background: #fecaca !important;\n            color: #dc2626 !important;\n            border: 1px solid #dc2626 !important;\n        }\n\n        .ozg-p2p-like-btn.liked i {\n            fill: currentColor;\n        }\n\n\n        \/* Responsive *\/\n        @media (max-width: 640px) {\n            .ozg-modal#ozgP2PModal .ozg-modal {\n                width: 95%;\n                max-height: 90vh;\n                border-radius: 20px;\n            }\n\n            .ozg-p2p-campaign-header > div {\n                flex-direction: column;\n                align-items: flex-start;\n            }\n\n            .ozg-p2p-stats {\n                width: 100%;\n                justify-content: space-between;\n            }\n\n            .ozg-p2p-actions {\n                flex-direction: column;\n            }\n\n            .ozg-p2p-actions button {\n                width: 100%;\n                justify-content: center;\n            }\n        }\n\n        \/* ===== MOBILE-FRIENDLY HABIT TRACKER ===== *\/\n        .tracker-wrapper { background: rgba(0,0,0,.2); border-radius: 16px; border: 1px solid var(--glass-border); padding: 12px 8px; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: thin; margin-bottom: 24px; }\n        .tracker-table { width: 100%; min-width: 0; border-collapse: collapse; table-layout: fixed; }\n        .tracker-table th {\n            color: var(--text-muted); font-weight: 600; font-size: 0.52rem;\n            padding: 0 1px 5px; text-align: center; width: 30px;\n            white-space: nowrap; overflow: hidden;\n        }\n        .tracker-table th:first-child {\n            text-align: left; padding-left: 6px;\n            width: 96px; min-width: 0;\n        }\n        .tracker-table td { padding: 3px 1px; text-align: center; }\n        .tracker-table td:first-child { text-align: left; padding-left: 4px; }\n        .tracker-table th .day-label { font-size: 0.46rem; text-transform: uppercase; letter-spacing: 0; }\n        .tracker-table th .day-number { font-size: 0.62rem; font-weight: 700; }\n        .habit-name-cell { display: flex; align-items: center; gap: 3px; min-width: 0; overflow: hidden; }\n        .habit-alias { font-size: 0.72rem; font-weight: 500; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; min-width: 0; }\n        .edit-alias-btn { background: none; border: none; color: var(--text-muted); cursor: pointer; padding: 1px; border-radius: 3px; display: inline-flex; align-items: center; flex-shrink: 0; opacity: 0.6; }\n        .edit-alias-btn:hover { color: var(--accent-cyan); opacity: 1; }\n        .tracker-cell {\n            width: 22px; height: 22px; margin: 0 auto;\n            border-radius: 5px; background: rgba(255,255,255,.05);\n            border: 1px solid rgba(255,255,255,.1); cursor: pointer;\n            transition: all .15s; display: flex; align-items: center; justify-content: center;\n        }\n        .tracker-cell.completed { background: var(--success-color); border-color: var(--success-color); box-shadow: 0 0 4px rgba(0,230,118,.3); }\n        .tracker-cell.completed::after { content: '\u2713'; font-size: 0.62rem; font-weight: bold; color: #000; }\n        .tracker-cell:hover { border-color: var(--accent-cyan); transform: scale(1.08); }\n        .tracker-view-tabs { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }\n        .tracker-view-btn { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1); padding: 5px 12px; border-radius: 20px; color: var(--text-muted); font-size: 0.78rem; cursor: pointer; transition: .2s; }\n        .tracker-view-btn.active { background: var(--accent-cyan); color: #000; border-color: var(--accent-cyan); font-weight: 700; }\n\n        @media (max-width: 640px) {\n            .tracker-wrapper { padding: 6px 2px; }\n            .tracker-cell { width: 20px; height: 20px; }\n            .tracker-table th { width: 28px; }\n            .tracker-table th:first-child { width: 88px; }\n        }\n\n        \/* \u2500\u2500 CREATION BAR \u2500\u2500 *\/\n        .ozg-creation-bar { position: fixed; bottom: 8px; left: 50%; transform: translateX(-50%); width: calc(100% - 24px); max-width: 560px; z-index: 20000; background: rgba(10,13,28,.92); backdrop-filter: blur(16px); padding: 10px 0; border: 1px solid var(--accent-cyan); border-radius: 20px; display: none; box-shadow: 0 0 20px rgba(0,240,255,.15); }\n        .ozg-creation-bar.visible { display: block !important; }\n        .ozg-creation-scroll { display: flex; overflow-x: auto; gap: 10px; padding: 0 14px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }\n        .ozg-creation-scroll::-webkit-scrollbar { display: none; }\n        .ozg-create-btn { flex-shrink: 0; background: rgba(0,240,245,.08); border: 1px solid rgba(0,240,245,.25); padding: 8px 16px; border-radius: 16px; color: #fff; font-size: 0.78rem; font-weight: 700; display: flex; align-items: center; gap: 7px; cursor: pointer; transition: .2s; white-space: nowrap; text-transform: uppercase; letter-spacing: .4px; }\n        .ozg-create-btn:hover { background: rgba(0,240,255,.18); border-color: var(--accent-cyan); box-shadow: 0 0 12px rgba(0,240,255,.2); }\n\n        \/* \u2500\u2500 FLOATING CREATION MODAL \u2500\u2500 *\/\n        .ozg-fs-modal { position: fixed; left: 260px; top: 64px; right: 0; bottom: 0; z-index: 13000; background: #0d1020; display: none; flex-direction: column; overflow: hidden; border-left: 1px solid var(--glass-border); box-shadow: -6px 0 30px rgba(0,0,0,.5); }\n        .ozg-fs-modal.show { display: flex; }\n        .ozg-fs-header { padding: 11px 18px; display: flex; justify-content: space-between; align-items: center; background: rgba(255,255,255,.04); border-bottom: 1px solid var(--glass-border); flex-shrink: 0; gap: 8px; }\n        .ozg-fs-body { flex: 1; overflow: hidden; }\n        .ozg-fs-body iframe { width: 100%; height: 100%; border: none; display: block; }\n        .ozg-fs-modal.ozg-fs-minimised .ozg-fs-body { display: none; }\n        .ozg-fs-modal.ozg-fs-minimised { top: auto; bottom: calc(62px + 4px); height: 46px; border-radius: 12px 0 0 12px; box-shadow: -4px 0 16px rgba(0,240,255,.2); }\n\n        @media (max-width: 900px) {\n            .ozg-creation-bar { bottom: calc(62px + env(safe-area-inset-bottom, 0px)); width: calc(100% - 16px); border-radius: 16px; }\n            .ozg-fs-modal { left: 0; bottom: 62px; border-left: none; border-top: 1px solid var(--glass-border); }\n            .ozg-fs-modal.ozg-fs-minimised { left: 0; border-radius: 12px 12px 0 0; }\n        }\n\n        \/* Profile Connection & Notification Sub-tabs *\/\n        .ozg-profile-tab.active { border-bottom: 2px solid var(--accent-cyan) !important; color: #fff !important; }\n        .ozg-profile-subtab-content { animation: fadeIn 0.3s ease; }\n\n        \/* Share Sheet *\/\n        #ozgShareSheet { animation: ozgSlideUp 0.3s cubic-bezier(0.32, 0.72, 0, 1); }\n        @keyframes ozgSlideUp { from { transform: translateY(100%); } to { transform: translateY(0); } }\n\n        \/* ===== END MOBILE HABIT TRACKER ===== *\/\n\n        \/* Quiz Modal Styles *\/\n        .ozg-quiz-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.9); z-index: 10000; display: none; align-items: center; justify-content: center; backdrop-filter: blur(8px); }\n        .ozg-quiz-modal-overlay.show { display: flex; }\n        .ozg-quiz-modal { background: #0f121e; border: 1px solid var(--glass-border); border-radius: 24px; width: 90%; max-width: 600px; max-height: 85vh; overflow-y: auto; padding: 0; box-shadow: 0 20px 40px rgba(0,0,0,0.5); }\n        .ozg-quiz-header { padding: 20px 24px; border-bottom: 1px solid var(--glass-border); display: flex; justify-content: space-between; align-items: center; background: rgba(0,0,0,0.3); border-radius: 24px 24px 0 0; }\n        .ozg-quiz-body { padding: 24px; }\n        .ozg-quiz-close { background: rgba(255,255,255,0.1); border: none; color: #fff; width: 32px; height: 32px; border-radius: 50%; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: 0.2s; }\n        .ozg-quiz-close:hover { background: var(--warning-color); }\n\n        \/* Profile Grid Styling *\/\n        .ozg-profile-tab { border-radius: 0 !important; font-family: inherit; font-size: 0.9rem; letter-spacing: 0.5px; text-transform: uppercase; }\n        .ozg-profile-tab:hover { color: #fff !important; }\n        .ozg-profile-post-item { position: relative; border-radius: 4px; overflow: hidden; background: #1a1d2e; }\n        .ozg-profile-post-item img { transition: transform 0.5s ease; }\n        .ozg-profile-post-item:hover img { transform: scale(1.1); }\n        .ozg-profile-post-item .item-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.4); opacity: 0; transition: opacity 0.3s ease; display: flex; align-items: center; justify-content: center; z-index: 2; }\n        .ozg-profile-post-item:hover .item-overlay { opacity: 1; }\n\n        @media (max-width: 600px) {\n            #ozgUserProfileHeader { padding: 20px !important; }\n            #ozgProfileAvatar { width: 80px !important; height: 80px !important; }\n            #ozgProfileName { font-size: 1.4rem !important; }\n        }\n        .ozg-modal-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.8); z-index: 9999; display: none; align-items: center; justify-content: center; backdrop-filter: blur(5px); }\n        .ozg-modal-overlay.active, .ozg-modal-overlay.show { display: flex; }\n        .ozg-modal { background: #0f121e; border: 1px solid var(--glass-border); border-radius: 20px; width: 90%; max-width: 400px; padding: 24px; box-shadow: 0 10px 40px rgba(0,0,0,0.5); position: relative; max-height: 90vh; overflow-y: auto;}\n        .user-search-input { width: 100%; background: rgba(255,255,255,0.05); border: 1px solid var(--glass-border); color: #fff; padding: 12px; border-radius: 10px; margin-bottom: 16px; outline: none; }\n        .user-search-results { max-height: 200px; overflow-y: auto; margin-bottom: 16px; }\n        .user-search-item { display: flex; align-items: center; gap: 12px; padding: 10px; cursor: pointer; border-radius: 8px; transition: 0.2s; color: #fff; }\n        .user-search-item:hover { background: rgba(255,255,255,0.1); }\n        .user-search-item.selected { background: rgba(0,240,255,0.2); border: 1px solid var(--accent-cyan); color: #fff; }\n\n        \/* Gamer Panel CSS *\/\n        .mr-1 { margin-right: 0.25rem; }\n        .footer-content-wrapper { display: flex; align-items: flex-end; justify-content: space-between; max-width: 1100px; box-sizing: border-box; padding: 0.8rem; gap: 0.8rem; pointer-events: none; position: fixed; bottom: 0; cursor: grab; z-index: 10000; touch-action: none; left: 50%; transform: translateX(-50%); width: 95%; right: auto; transition: opacity 0.3s; }\n        .left-column-footer { display: none; flex-direction: column; gap: 0.8rem; flex-shrink: 0; width: 160px; pointer-events: auto; transition: opacity 0.3s ease-in-out; opacity: 0; }\n        .left-column-footer.is-active { display: flex; opacity: 1; }\n        .left-side-footer-buttons-group { display: flex; flex-direction: column; gap: 0.5rem; padding: 0.5rem; background-color: #615dfa; border-radius: 0.75rem; box-shadow: 0 2px 4px rgba(0,0,0,0.2); width: 100%; }\n        .left-side-footer-buttons-group .footer-button { background-color: #4e4ac8; border-radius: 0.75rem; padding: 0.5rem 0.8rem; color: white !important; font-size: 0.8rem; font-weight: 500; display: flex; align-items: center; justify-content: flex-start; gap: 0.125rem; cursor: pointer; transition: background-color 0.2s; text-decoration: none; box-sizing: border-box; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n        .left-side-footer-buttons-group .footer-button:hover { background-color: #3a3788; }\n        .config-skin-row { display: flex; flex-direction: row; gap: 0.5rem; justify-content: center; padding: 0.5rem; background-color: #615dfa; border-radius: 0.75rem; box-shadow: 0 2px 4px rgba(0,0,0,0.2); width: 100%; box-sizing: border-box; }\n        .config-skin-row .action-button-round { background-color: #4e4ac8; border-radius: 9999px; width: 2.5rem; height: 2.5rem; display: flex; align-items: center; justify-content: center; color: white; font-size: 1.25rem; cursor: pointer; transition: background-color 0.2s, transform 0.2s; box-shadow: 0 2px 4px rgba(0,0,0,0.2); text-decoration: none; flex-shrink: 0; pointer-events: auto; }\n        .config-skin-row .action-button-round:hover { background-color: #3a3788; transform: translateY(-2px); }\n        .bottom-info-bar { background-color: #615dfa; padding: 1rem; display: flex; flex-direction: row; align-items: center; justify-content: space-between; border-radius: 1.5rem; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); box-sizing: border-box; gap: 1rem; flex-grow: 1; pointer-events: auto; }\n        .bottom-bar-top-row { display: flex; align-items: center; width: auto; gap: 0.5rem; justify-content: flex-start; flex-grow: 1; }\n        .xp-progress-group { display: flex; align-items: center; width: auto; max-width: none; gap: 0.5rem; cursor: pointer; flex-grow: 1; }\n        .progress-bar { background-color: #4e4ac8; border-radius: 9999px; height: 0.75rem; overflow: hidden; flex-grow: 1; }\n        .progress-fill { background-color: #FBBF24; height: 100%; width: 75%; border-radius: 9999px; }\n        .xp-text { color: white; font-size: 0.875rem; font-weight: 600; white-space: nowrap; }\n        .event-info { background-color: #4e4ac8; border-radius: 0.75rem; padding: 0.75rem 1rem; color: white; font-size: 0.875rem; display: flex; align-items: center; justify-content: center; gap: 0.5rem; box-sizing: border-box; width: auto; max-width: none; text-align: center; white-space: nowrap; cursor: pointer; flex-grow: 1; }\n        .event-info-icon { color: #FBBF24; font-size: 1.25rem; }\n        .event-time { color: #9CA3AF; font-size: 0.75rem; white-space: nowrap; }\n        .footer-menu-toggle { color: white !important; font-size: 1.5rem; cursor: pointer; text-decoration: none; flex-shrink: 0; position: relative; transform: translateY(0); display: flex; }\n        @media (max-width: 767px) {\n            .footer-content-wrapper { padding: 1.5vw; flex-direction: row; align-items: flex-end; justify-content: space-between; gap: 0.5rem; left: 2.5vw; right: 2.5vw; width: auto; transform: none; }\n            .left-column-footer { width: 140px; gap: 0.5rem; }\n            .left-side-footer-buttons-group { padding: 0.3rem; gap: 0.3rem; }\n            .left-side-footer-buttons-group .footer-button { padding: 0.3rem 0.5rem; font-size: 0.75rem; border-radius: 0.5rem; justify-content: flex-start; }\n            .config-skin-row { padding: 0.3rem; gap: 0.3rem; }\n            .config-skin-row .action-button-round { width: 2.2rem; height: 2.2rem; font-size: 1rem; }\n            .bottom-info-bar { flex-direction: column; gap: 0.4rem; padding: 0.4rem; width: 100%; max-width: none; margin-left: 0; margin-right: 0; }\n            .bottom-bar-top-row { flex-direction: row; justify-content: space-between; gap: 0.5rem; width: 100%; }\n            .xp-progress-group { max-width: none; width: auto; }\n            .event-info { max-width: 100%; width: 100%; font-size: 0.75rem; padding: 0.3rem 0.75rem; }\n            .event-info-icon { font-size: 1rem; }\n            .xp-text { font-size: 0.75rem; }\n            .progress-bar { height: 0.6rem; }\n            .footer-menu-toggle { font-size: 1.2rem; transform: translateY(-2px); }\n        }\n\n        \/* Responsive *\/\n        @media (max-width: 900px) {\n            .ozg-layout { grid-template-columns: 1fr; padding: 90px 10px 160px 10px; }\n            .ozg-sidebar { display: none; }\n            .ozg-mob-nav { display: flex; position: fixed; bottom: 0; left: 0; right: 0; background: rgba(5,7,15,0.9); border-top: 1px solid var(--glass-border); padding: 10px; justify-content: space-around; z-index: 10000; backdrop-filter: blur(10px); transition: all 0.3s; }\n            .ozg-mob-item { display: flex; flex-direction: column; align-items: center; color: #8b9bb4 !important; font-size: 0.7rem; gap: 4px; text-decoration: none; cursor: pointer; }\n            .ozg-mob-item.active { color: #00f0ff !important; }\n            .ozg-mob-item i, .ozg-mob-item svg, .ozg-mob-item svg path { stroke: #8b9bb4 !important; fill: none !important; color: #8b9bb4 !important; }\n            .ozg-mob-item.active i, .ozg-mob-item.active svg, .ozg-mob-item.active svg path { stroke: #00f0ff !important; color: #00f0ff !important; }\n        }\n        @media (max-width: 768px) {\n            .ozg-header-panel { padding: 10px; }\n            .ozg-header-main { gap: 6px; }\n            .ozg-profile-header img { width: 32px; height: 32px; }\n            .ozg-profile-name { font-size: 0.8rem; }\n            .ozg-profile-trophy { font-size: 0.7rem; }\n            .ozg-header-resources { flex-grow: 1; justify-content: flex-end; gap: 6px; }\n            .ozg-resource-item { padding: 4px 8px; font-size: 0.8rem; border-radius: 8px; }\n            .ozg-resource-item i { width: 14px; }\n            .ozg-header-menu-btn { padding: 4px; }\n        }\n\n        \/* Footer Scrollable Buttons - Horizontal Scroll *\/\n        .footer-content-wrapper {\n            overflow-x: auto;\n            overflow-y: visible;\n            white-space: nowrap;\n            -webkit-overflow-scrolling: touch;\n            scrollbar-width: thin;\n            display: flex;\n            align-items: flex-end;\n            justify-content: flex-start;\n            gap: 8px;\n            padding: 8px 12px;\n            background: rgba(5, 7, 15, 0.95);\n            backdrop-filter: blur(12px);\n            border-top: 1px solid rgba(255,255,255,0.1);\n            border-radius: 0;\n            left: 0;\n            transform: none;\n            width: 100%;\n            max-width: 100%;\n        }\n        .footer-content-wrapper::-webkit-scrollbar {\n            height: 3px;\n        }\n        .footer-content-wrapper::-webkit-scrollbar-track {\n            background: rgba(255,255,255,0.05);\n            border-radius: 10px;\n        }\n        .footer-content-wrapper::-webkit-scrollbar-thumb {\n            background: var(--accent-cyan);\n            border-radius: 10px;\n        }\n        .left-column-footer {\n            display: flex !important;\n            flex-direction: row !important;\n            gap: 8px;\n            width: auto;\n            opacity: 1;\n            background: transparent;\n        }\n        .left-side-footer-buttons-group {\n            display: flex;\n            flex-direction: row;\n            gap: 6px;\n            background: transparent;\n            padding: 0;\n            width: auto;\n            box-shadow: none;\n        }\n        .left-side-footer-buttons-group .footer-button {\n            background: rgba(255,255,255,0.08);\n            border-radius: 30px;\n            padding: 6px 14px;\n            font-size: 0.75rem;\n            white-space: nowrap;\n            width: auto;\n            backdrop-filter: blur(4px);\n            border: 1px solid rgba(255,255,255,0.1);\n        }\n        .left-side-footer-buttons-group .footer-button:hover {\n            background: var(--accent-purple);\n            border-color: var(--accent-purple);\n        }\n        .config-skin-row {\n            background: transparent;\n            padding: 0;\n            gap: 6px;\n            width: auto;\n            margin-left: auto;\n            flex-shrink: 0;\n        }\n        .bottom-info-bar {\n            background: rgba(97, 93, 250, 0.8);\n            padding: 6px 12px;\n            border-radius: 30px;\n            gap: 8px;\n            flex-shrink: 0;\n        }\n        .event-info {\n            padding: 4px 10px;\n            font-size: 0.7rem;\n            background: rgba(78, 74, 200, 0.8);\n        }\n        .event-time {\n            font-size: 0.65rem;\n        }\n        .xp-text {\n            font-size: 0.7rem;\n        }\n        .progress-bar {\n            height: 0.5rem;\n        }\n        .footer-menu-toggle {\n            display: none;\n        }\n        @media (max-width: 768px) {\n            .footer-content-wrapper {\n                padding: 6px 10px;\n            }\n            .left-side-footer-buttons-group .footer-button {\n                padding: 4px 10px;\n                font-size: 0.7rem;\n            }\n            .bottom-info-bar {\n                padding: 4px 8px;\n            }\n        }\n\n        \/* Social Buttons - appear only after scrolling *\/\n        .ozg-fab-wrapper {\n            opacity: 0;\n            visibility: hidden;\n            transition: opacity 0.3s ease, visibility 0.3s ease;\n        }\n        .ozg-fab-wrapper.visible {\n            opacity: 1;\n            visibility: visible;\n        }\n        .ozg-floating-bar {\n            transition: all 0.3s ease;\n        }\n    <\/style>\n\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n\n    <!-- Cache buster meta tags for additional protection -->\n    <meta http-equiv=\"Cache-Control\" content=\"no-cache, no-store, must-revalidate\">\n    <meta http-equiv=\"Pragma\" content=\"no-cache\">\n    <meta http-equiv=\"Expires\" content=\"0\">\n    <meta name=\"ozg-user-id\" content=\"0\">\n    <meta name=\"ozg-cache-timestamp\" content=\"1789055888\">\n\n    <div class=\"ozgeris-dashboard-wrapper\">\n        <div class=\"ozg-modal-overlay\" id=\"ozgHappyOverlay\" style=\"z-index: 30000; background: #05070f; padding: 0;\">\n            <div class=\"ozg-modal\" style=\"max-width: 100%; width: 100%; height: 100%; border-radius: 0; padding: 0; background: #05070f; display: flex; flex-direction: column;\">\n                <button class=\"ozg-icon-btn\" style=\"position: absolute; right: 15px; top: 15px; z-index: 30010; background: rgba(255,255,255,0.1); width: 36px; height: 36px; border-radius: 50%;\" onclick=\"document.getElementById('ozgHappyOverlay').classList.remove('show')\">\n                    <i data-lucide=\"x\" style=\"width: 18px;\"><\/i>\n                <\/button>\n                <iframe src=\"\" style=\"flex: 1; width: 100%; height: 100%; border: none; display: block;\" id=\"ozgHappyIframe\"><\/iframe>\n            <\/div>\n        <\/div>\n        <div class=\"ozg-bg-glow-1\"><\/div>\n        <div class=\"ozg-bg-glow-2\"><\/div>\n\n        <!-- HEADER PANEL -->\n        <div class=\"ozg-header-panel\" id=\"ozgHeaderPanel\">\n            <div class=\"ozg-header-main\">\n                <a href=\"#\" class=\"ozg-profile-header\" data-elementor-popup-id=\"11000\" onclick=\"ozgOpenTrophyManually(event)\">\n                    <img alt='' src='https:\/\/secure.gravatar.com\/avatar\/?s=40&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/?s=80&#038;d=mm&#038;r=g 2x' class='avatar avatar-40 photo avatar-default' height='40' width='40' \/>                    <div class=\"ozg-profile-header-info\">\n                        <span class=\"ozg-profile-name\" id=\"ozgHeaderUserName\"><\/span>\n                        <span class=\"ozg-profile-trophy\">\n                            <a href=\"#\" class=\"ozg-trophy-button\" data-elementor-popup-id=\"15938\" onclick=\"ozgOpenTrophyManually(event)\">\n                                $<span id=\"ozgTrophyValue\">1,000,000<\/span>\n                            <\/a>\n                        <\/span>\n                    <\/div>\n                <\/a>\n                <div class=\"ozg-header-resources\">\n                    <a href=\"#\" class=\"ozg-resource-item\" data-elementor-popup-id=\"13801\">\n                        <i data-lucide=\"gem\" style=\"color:#93c5fd; width:16px;\"><\/i>\n                        <span id=\"ozgAchievementsValue\">0<\/span>\n                    <\/a>\n                    <a href=\"#\" class=\"ozg-resource-item\" data-elementor-popup-id=\"11319\">\n                        <i data-lucide=\"coins\" style=\"color:#facc15; width:16px;\"><\/i>\n                        <span id=\"ozgCoinsValue\">0<\/span>\n                    <\/a>\n                    <a href=\"#\" class=\"ozg-resource-item\" data-elementor-popup-id=\"11323\">\n                        <i data-lucide=\"zap\" style=\"color:#4ade80; width:16px;\"><\/i>\n                        <span id=\"ozgEnergyValue\"><\/span>\n                    <\/a>\n                <\/div>\n                <button class=\"ozg-header-menu-btn\" id=\"ozgHeaderMenuToggle\"><i data-lucide=\"menu\"><\/i><\/button>\n            <\/div>\n            <div class=\"ozg-header-expanded\" id=\"ozgHeaderExpanded\" style=\"display:none;\">\n                <a href=\"#\" class=\"ozg-rank-badge\" data-elementor-popup-id=\"11342\">\u041a\u041b\u0410\u0421\u0421\u0418\u0424\u0418\u0426\u0418\u0420\u041e\u0412\u0410\u0422\u042c <span id=\"ozgRankValue\">0<\/span><\/a>\n                <div class=\"ozg-header-actions\">\n                                        <a href=\"https:\/\/hobbi.st\/activity\" class=\"ozg-action-btn\" id=\"ozgNewsButton\"><i data-lucide=\"newspaper\" style=\"width:16px;\"><\/i> \u041d\u043e\u0432\u043e\u0441\u0442\u0438<\/a>\n                    <a href=\"#\" class=\"ozg-action-btn\" data-elementor-popup-id=\"11348\"><i data-lucide=\"users\" style=\"width:16px;\"><\/i> \u0414\u0440\u0443\u0437\u044c\u044f<\/a>\n                    <a href=\"#\" class=\"ozg-action-btn\" data-elementor-popup-id=\"11006\"><i data-lucide=\"tent\" style=\"width:16px;\"><\/i> \u041a\u043b\u0443\u0431<\/a>\n                    <a href=\"#\" class=\"ozg-action-btn\" data-elementor-popup-id=\"11007\"><i data-lucide=\"swords\" style=\"width:16px;\"><\/i> \u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0439\u0442\u0435\u0441\u044c<\/a>\n                    <div style=\"display:flex; gap:8px; margin-top:4px;\">\n                        <a href=\"#\" class=\"ozg-icon-action-btn\" data-elementor-popup-id=\"11459\"><i data-lucide=\"arrow-left-right\" style=\"width:18px;\"><\/i><\/a>\n                        <a href=\"#\" class=\"ozg-icon-action-btn\" data-elementor-popup-id=\"13821\"><i data-lucide=\"crown\" style=\"width:18px;\"><\/i><\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        <div class=\"ozg-toast\" id=\"ozgHeaderToast\"><\/div>\n\n        <div class=\"ozg-layout\">\n            <aside class=\"ozg-sidebar ozg-glass\" id=\"ozgDesktopSidebar\">\n                <div class=\"ozg-user\">\n                    <img alt='' src='https:\/\/secure.gravatar.com\/avatar\/?s=180&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/?s=360&#038;d=mm&#038;r=g 2x' class='avatar avatar-180 photo avatar-default ozg-avatar' height='180' width='180' \/>                    <h3 style=\"margin:0; color:#fff; text-align:center;\" id=\"ozgSidebarUserName\"><\/h3>\n                    <div style=\"text-align:center;\"><span class=\"ozg-badge\" style=\"background:rgba(0,240,255,0.1); color:var(--accent-cyan); padding:4px 10px; border-radius:12px; font-size:0.75rem; margin-top:8px; display:inline-block;\">\u0421\u0442\u0443\u0434\u0435\u043d\u0442<\/span><\/div>\n                <\/div>\n                <nav style=\"display: flex; flex-direction: column; gap: 12px; margin-top: 10px;\">\n                    <a class=\"ozg-nav-link active\" id=\"tab-btn-kingdom\" onclick=\"ozgSwitchTab('kingdom')\"><i data-lucide=\"crown\"><\/i> \u041a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u043e<\/a>\n                                            <a class=\"ozg-nav-link\" href=\"https:\/\/hobbi.st\/wp-login.php\"><i data-lucide=\"log-in\"><\/i> Sign In<\/a>\n                                        <a class=\"ozg-nav-link\" id=\"tab-btn-bookmarks\" onclick=\"ozgSwitchTab('bookmarks')\"><i data-lucide=\"bookmark\"><\/i> Bookmarks<\/a>\n                    <a class=\"ozg-nav-link\" id=\"tab-btn-my-track\" onclick=\"ozgSwitchTab('my-track')\"><i data-lucide=\"map\"><\/i> \u0410\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0434\u043e\u0440\u043e\u0436\u043a\u0430<\/a>\n                    <a class=\"ozg-nav-link\" id=\"tab-btn-coach\" onclick=\"ozgSwitchTab('coach')\"><i data-lucide=\"plus-circle\"><\/i> Addition<\/a>\n                    <a class=\"ozg-nav-link\" id=\"tab-btn-profile\" onclick=\"ozgSwitchTab('profile')\" style=\"position:relative;display:flex;align-items:center;gap:6px;\"><i data-lucide=\"user\"><\/i> Profile                                            <\/a>\n                    <a class=\"ozg-nav-link\" id=\"tab-btn-challenges\" onclick=\"ozgSwitchTab('challenges')\"><i data-lucide=\"swords\"><\/i> \u0410\u0440\u0435\u043d\u0430<\/a>\n                    <a class=\"ozg-nav-link\" id=\"tab-btn-journal\" onclick=\"ozgSwitchTab('journal')\"><i data-lucide=\"book-open\"><\/i> \u0425\u0440\u043e\u043d\u0438\u043a\u0438<\/a>\n                                    <\/nav>\n            <\/aside>\n\n            <main class=\"ozg-main\">\n                <!-- KINGDOM SECTION -->\n                <section id=\"kingdom\" class=\"ozg-section active\">\n                    <div id=\"view-intro\" class=\"q-view active ozg-glass text-center items-center py-12\">\n                        <div style=\"width:80px; height:80px; background:rgba(255,255,255,0.05); border-radius:50%; display:flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,0.1); margin-bottom:24px; margin-left:auto; margin-right:auto;\"><i data-lucide=\"compass\" style=\"width:40px; height:40px; color:var(--accent-cyan);\"><\/i><\/div>\n                        <h1 style=\"font-family:'Playfair Display', serif; font-size:2.5rem; background:linear-gradient(45deg, #fef08a, #fbbf24); -webkit-background-clip:text; -webkit-text-fill-color:transparent; margin-bottom:16px;\">\u0423\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u043d\u044b\u0439 \u0430\u0443\u0434\u0438\u0442<\/h1>\n                        <p style=\"color:var(--text-muted); font-size:1.1rem; max-width:500px; margin:0 auto 30px auto; line-height:1.6;\">\u041e\u0446\u0435\u043d\u0438\u0442\u0435 24 \u0441\u0444\u0435\u0440\u044b \u0441\u0432\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 Ozgeris \u0441\u043c\u043e\u0433 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u0440\u0442\u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u00ab\u0446\u0430\u0440\u0441\u0442\u0432\u0430\u00bb \u0438 \u043f\u043e\u043c\u043e\u0447\u044c \u0432\u0430\u043c \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b.<\/p>\n                        <button class=\"ozg-btn\" style=\"font-size:1.1rem; padding:16px 32px;\" onclick=\"startQuiz()\">\u041d\u0430\u0447\u0430\u0442\u044c \u0430\u0443\u0434\u0438\u0442 <i data-lucide=\"arrow-right\"><\/i><\/button>\n                    <\/div>\n                    <div id=\"view-age\" class=\"q-view ozg-glass py-12 px-6 text-center\">\n                        <div style=\"width:64px; height:64px; background:rgba(255,255,255,0.05); border-radius:50%; display:flex; align-items:center; justify-content:center; border:1px solid rgba(255,255,255,0.1); margin-bottom:24px; margin-left:auto; margin-right:auto;\"><i data-lucide=\"user-square-2\" style=\"width:32px; height:32px; color:var(--accent-purple);\"><\/i><\/div>\n                        <h2 style=\"font-size:2rem; font-family:'Playfair Display', serif; margin-bottom:30px;\">\u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0431\u0435 \u043b\u0435\u0442?<\/h2>\n                        <div style=\"display:flex; justify-content:center; gap:16px; flex-wrap:wrap;\">\n                            <button class=\"ozg-btn-sec\" style=\"padding:16px 32px; font-size:1.1rem; width: 180px; justify-content: center;\" onclick=\"selectAgeGroup('youth')\">\u041c\u043b\u0430\u0434\u0448\u0435 22 \u043b\u0435\u0442<\/button>\n                            <button class=\"ozg-btn\" style=\"padding:16px 32px; font-size:1.1rem; width: 180px; justify-content: center;\" onclick=\"selectAgeGroup('adult')\">22 \u0433\u043e\u0434\u0430 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435<\/button>\n                        <\/div>\n                    <\/div>\n                    <div id=\"view-quiz\" class=\"q-view ozg-glass py-8 px-6\"><div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:20px;\"><button class=\"ozg-btn-sec\" style=\"padding:6px 12px; font-size:0.85rem;\" onclick=\"prevQuestion()\"><i data-lucide=\"arrow-left\" style=\"width:16px;\"><\/i> \u041d\u0430\u0437\u0430\u0434<\/button><span id=\"quiz-progress-text\" style=\"color:var(--text-muted); font-weight:600; font-size:0.9rem;\">1 \/ 48<\/span><\/div><div style=\"height:6px; background:rgba(255,255,255,0.1); border-radius:10px; overflow:hidden; margin-bottom:12px;\"><div id=\"quiz-progress-bar\" style=\"height:100%; background:var(--accent-cyan); width:2%; transition:width 0.3s ease;\"><\/div><\/div><div style=\"text-align:center; margin-bottom:40px;\"><span id=\"quiz-cat-text\" style=\"font-size:0.85rem; font-weight:600; text-transform:uppercase; letter-spacing:1px; display:inline-flex; align-items:center; gap:6px;\"><\/span><div id=\"quiz-sphere-text\" style=\"color:var(--text-muted); font-size:0.9rem; margin-top:6px;\">\u0421\u0444\u0435\u0440\u0430: \u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435<\/div><\/div><div style=\"flex-grow:1; display:flex; align-items:center; justify-content:center; min-height:120px; margin-bottom:40px;\"><h2 id=\"quiz-question\" style=\"font-size:1.5rem; font-weight:500; text-align:center; line-height:1.4;\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0432\u043e\u043f\u0440\u043e\u0441\u0430...<\/h2><\/div><div style=\"max-width:400px; margin:0 auto; width:100%;\"><div style=\"display:flex; justify-content:space-between; font-size:0.75rem; color:var(--text-muted); text-transform:uppercase; margin-bottom:12px;\"><span>\u041d\u0435\u0442 \/ \u041d\u0438\u043a\u043e\u0433\u0434\u0430<\/span><span>\u0414\u0430 \/ \u0412\u0441\u0435\u0433\u0434\u0430<\/span><\/div><div id=\"quiz-rating-container\" style=\"display:flex; justify-content:space-between; align-items:center;\"><\/div><\/div><\/div>\n                    <div id=\"view-select\" class=\"q-view ozg-glass py-8 px-6\"><div style=\"text-align:center; margin-bottom:30px;\"><h2 style=\"font-size:2rem; font-family:'Playfair Display', serif; margin-bottom:12px;\">\u041a\u0430\u0440\u0442\u0430 \u041a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u0430<\/h2><p style=\"color:var(--text-muted); font-size:1rem; max-width:600px; margin:0 auto;\"><span style=\"color:rgba(255,255,255,0.5);\"><i data-lucide=\"lock\" style=\"width:14px; display:inline;\"><\/i> \u0412\u043e\u0441\u0435\u043c\u044c \u0441\u0430\u043c\u044b\u0445 \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0444\u0435\u0440 \u0437\u0430\u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u044b.<\/span><br><b style=\"color:#fff;\">\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 8 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f \u0438\u0437 \u043e\u0441\u0442\u0430\u0432\u0448\u0438\u0445\u0441\u044f 16.<\/b><\/p><\/div><div id=\"kingdom-grid\" style=\"display:grid; grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); gap:24px; margin-bottom:30px;\"><\/div><div id=\"web-save-focus-container\" style=\"display:none; text-align:center; position:sticky; bottom:20px; z-index:100;\"><button id=\"ozgSaveFocusBtn\" class=\"ozg-btn\" disabled onclick=\"confirmFocusSelection()\" style=\"padding:16px 32px; font-size:1.1rem; box-shadow: 0 10px 30px rgba(0,0,0,0.8); opacity: 0.5; cursor: not-allowed;\">\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440 (<span id=\"ozgFocusCount\">0<\/span>\/8)<\/button><\/div><\/div>\n                    <div id=\"view-result\" class=\"q-view px-0\" style=\"background:transparent; border:none;\">\n                        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom: 24px; flex-wrap: wrap; gap: 16px; padding: 0 10px;\">\n                            <h2 style=\"font-size:2.2rem; font-family:'Playfair Display', serif; margin:0; color:#fff;\">Your Kingdom<\/h2>\n                            <button class=\"ozg-btn-sec\" onclick=\"const w = document.getElementById('kingdom-analysis-wrap'); w.style.display = w.style.display === 'none' ? 'block' : 'none';\"><i data-lucide=\"bar-chart-2\" style=\"width:18px;\"><\/i> Toggle Analysis<\/button>\n                        <\/div>\n\n                        <div id=\"kingdom-analysis-wrap\" class=\"ozg-glass\" style=\"display: none; margin-bottom: 0;\">\n                            <div id=\"ai-verdict-container\" style=\"background: rgba(0, 240, 255, 0.05); border: 1px solid rgba(0, 240, 255, 0.2); border-radius: 16px; padding: 24px; margin-bottom: 30px; text-align: left; display: flex; gap: 16px; align-items: flex-start; box-shadow: 0 4px 20px rgba(0, 240, 255, 0.1);\"><div style=\"background: var(--accent-cyan); color: #000; width: 48px; height: 48px; border-radius: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;\"><i data-lucide=\"bot\" style=\"width: 28px; height: 28px;\"><\/i><\/div><div><h3 style=\"color: var(--accent-cyan); margin: 0 0 8px 0; font-size: 1.1rem; display:flex; align-items:center; gap:6px;\">\u0412\u0435\u0440\u0434\u0438\u043a\u0442 \u041e\u0437\u0433\u0435\u0440\u0438\u0441\u0430 \u043f\u043e \u0418\u0418 <i data-lucide=\"sparkles\" style=\"width:16px;\"><\/i><\/h3><p id=\"ai-verdict-text\" style=\"color: #fff; line-height: 1.6; margin: 0; font-size: 0.95rem; min-height: 44px;\">\u0410\u043d\u0430\u043b\u0438\u0437 \u043a\u0430\u0440\u0442\u044b \u0432\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u0430...<\/p><\/div><\/div>\n                            <div id=\"kingdomChartContainer\" style=\"margin-bottom:40px;\"><canvas id=\"kingdomChart\"><\/canvas><\/div>\n                            <div style=\"background:rgba(0,0,0,0.3); border-radius:16px; padding:24px; border:1px solid rgba(255,255,255,0.05); text-align:left; margin-bottom:40px;\">\n                                <h3 style=\"color:#fff; font-size:1.1rem; margin-bottom:16px; display:flex; align-items:center; gap:8px;\"><i data-lucide=\"target\" style=\"width:20px; color:var(--text-muted);\"><\/i> \u0412\u0430\u0448\u0430 \u0441\u0444\u0435\u0440\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f (8 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439)<\/h3>\n                                <div id=\"final-focus-list\" style=\"display:grid; grid-template-columns:repeat(auto-fit, minmax(200px, 1fr)); gap:12px;\"><\/div>\n                            <\/div>\n\n                            <!-- DEVELOPMENT TREE - MOVED FROM TRACK PAD TO KINGDOM PAD -->\n                            <div style=\"background:rgba(0,0,0,0.3); border-radius:16px; padding:24px; border:1px solid rgba(255,255,255,0.05); text-align:left; margin-bottom:40px;\">\n                                <h3 style=\"color: var(--accent-cyan); margin-bottom: 20px; display: flex; align-items: center; gap: 10px; border-bottom: 1px solid var(--glass-border); padding-bottom: 10px;\"><i data-lucide=\"crown\"><\/i> \u0414\u0435\u0440\u0435\u0432\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f: \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u0438\u044f<\/h3>\n                                <p style=\"color: var(--text-muted); font-size: 0.85rem; margin-bottom: 20px;\">Complete these tests to unlock your personalized career path and job shadowing opportunities.<\/p>\n                                <div style=\"display: flex; flex-direction: column; gap: 20px;\">\n                                    <!-- Kingdom Test Button -->\n                                    <div class=\"ozg-skill-node \" style=\"cursor: pointer;\" onclick=\"ozgOpenKingdomTest()\">\n                                        <div class=\"ozg-node-icon\"><i data-lucide=\"crown\"><\/i><\/div>\n                                        <div style=\"flex:1;\">\n                                            <div style=\"font-size:0.95rem; font-weight:600; color:#fff;\">Kingdom Test<\/div>\n                                            <div style=\"font-size:0.75rem; color:var(--text-muted); margin-top:4px;\">Discover your Kingdom personality<\/div>\n                                        <\/div>\n                                                                                    <i data-lucide=\"arrow-right\" style=\"color: var(--accent-cyan);\"><\/i>\n                                                                            <\/div>\n\n                                    <!-- Industry Quiz Button -->\n                                    <div class=\"ozg-skill-node \" style=\"cursor: pointer;\" onclick=\"ozgOpenIndustryQuiz()\">\n                                        <div class=\"ozg-node-icon\"><i data-lucide=\"building-2\"><\/i><\/div>\n                                        <div style=\"flex:1;\">\n                                            <div style=\"font-size:0.95rem; font-weight:600; color:#fff;\">Industry Quiz<\/div>\n                                            <div style=\"font-size:0.75rem; color:var(--text-muted); margin-top:4px;\">Find your ideal industry<\/div>\n                                        <\/div>\n                                                                                    <i data-lucide=\"arrow-right\" style=\"color: var(--accent-cyan);\"><\/i>\n                                                                            <\/div>\n                                <\/div>\n\n                                <div style=\"display:flex; justify-content:space-around; padding: 20px 50px;\">\n                                    <div class=\"ozg-tree-connector \"><\/div>\n                                    <div class=\"ozg-tree-connector \"><\/div>\n                                <\/div>\n\n                                <div class=\"ozg-skill-node ozg-skill-locked\" style=\"margin-top:-5px; background: rgba(0, 240, 255, 0.05); border-color: rgba(0, 240, 255, 0.3);\">\n                                                                            <div class=\"ozg-lock-overlay\"><i data-lucide=\"lock\" style=\"width:24px; height:24px;\"><\/i><span>\u0421\u0435\u043a\u0440\u0435\u0442\u043d\u0430\u044f \u0431\u0430\u0437\u0430<\/span><\/div>\n                                                                        <div class=\"ozg-node-icon\" style=\"background:var(--accent-cyan); color:#000;\"><i data-lucide=\"briefcase\"><\/i><\/div>\n                                    <div style=\"flex:1;\"><div style=\"font-size:1.1rem; font-weight:600; color:#fff;\">\u0421\u0442\u0430\u0436\u0438\u0440\u043e\u0432\u043a\u0430 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435<\/div><\/div>\n                                <\/div>\n\n                                                            <\/div>\n\n                            <div style=\"display:flex; justify-content:center; gap:16px; flex-wrap:wrap;\"><button class=\"ozg-btn\" onclick=\"goToTrackAndReload()\">\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044e <i data-lucide=\"map\"><\/i><\/button><button class=\"ozg-btn-sec\" onclick=\"changeFocusAreas()\"><i data-lucide=\"edit-3\"><\/i> \u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0444\u0435\u0440\u044b<\/button><button class=\"ozg-btn-sec\" onclick=\"resetQuizAndRetake()\" style=\"color: var(--warning-color); border-color: rgba(255, 51, 102, 0.3); background: rgba(255, 51, 102, 0.05);\"><i data-lucide=\"rotate-ccw\"><\/i> \u041f\u0435\u0440\u0435\u0441\u043d\u044f\u0442\u044c<\/button><\/div>\n                        <\/div>\n\n                        <\/div>\n                <!-- Sticky Feed Search & Tags Section (Moved into the flow) -->\n                        <div class=\"ozg-sticky-feed-header\" id=\"ozgStickyFeedHeader\" style=\"display: none;\">\n                            <div class=\"ozg-feed-search-inner\">\n                                <div style=\"position: relative; margin-bottom: 10px;\">\n                                    <input type=\"search\" enterkeyhint=\"search\" id=\"ozgFeedSearchSticky\" class=\"ozg-input\" placeholder=\"Search for courses, jobs, topics...\" oninput=\"debounceFeedSearchSticky()\" onkeydown=\"if(event.key === 'Enter') this.blur();\" style=\"padding-left: 40px; margin-bottom: 0; background: rgba(255,255,255,0.05);\">\n                                    <i data-lucide=\"search\" style=\"position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--text-muted); width: 18px;\"><\/i>\n                                <\/div>\n                                <div class=\"ozg-feed-tags-scroll\" style=\"display: flex; gap: 8px; overflow-x: auto; padding-bottom: 5px; scrollbar-width: none;\">\n                                    <button class=\"ozg-feed-tag-btn active\" data-tag=\"\" onclick=\"setFeedTagSticky('', this)\">Top<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"courses\" onclick=\"setFeedTagSticky('courses', this)\">Courses<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"jobs\" onclick=\"setFeedTagSticky('jobs', this)\">Jobs<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"challenges\" onclick=\"setFeedTagSticky('challenges', this)\">Challenges<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"finance\" onclick=\"setFeedTagSticky('finance', this)\">Finance<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"video\" onclick=\"setFeedTagSticky('video', this)\">Video<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"photo\" onclick=\"setFeedTagSticky('photo', this)\">Photo<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"voice\" onclick=\"setFeedTagSticky('voice', this)\">Voice<\/button>\n                                    <button class=\"ozg-feed-tag-btn\" data-tag=\"audio\" onclick=\"setFeedTagSticky('audio', this)\">Audio<\/button>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                        <!-- JETLIST LISTING (JETSMARTFILTERS ENGINE) -->\n                        <div class=\"ozg-feed-content-wrapper\" style=\"padding-top:0; overflow-x:hidden;\">\n                            <h3 style=\"color:var(--accent-cyan); margin:0 0 14px 0; display:flex; align-items:center; gap:8px; padding:0 10px;\"><i data-lucide=\"compass\"><\/i> Recommended For You<\/h3>\n\n                            <!-- JETSMARTFILTERS \/ MANUAL FEED HYBRID ENGINE -->\n                            <div id=\"ozg-jetlist-kingdom-feed\" class=\"ozg-jsf-engine\">\n                                <div id=\"ozg-smart-feed\" class=\"ozg-feed-grid\"><\/div><div id=\"ozg-feed-loader\" style=\"text-align:center; padding:40px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan); width:32px; height:32px;\"><\/i><\/div>                            <\/div>\n                        <\/div>\n\n                        <style>\n                            \/* GLASSMORPHIC ENGINE OVERRIDES FOR JETLIST\/JETENGINE *\/\n                            .ozg-jsf-engine .jet-listing-grid__items {\n                                display: grid !important;\n                                grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)) !important;\n                                gap: 16px !important;\n                                width: 100% !important;\n                            }\n                            .ozg-jsf-engine .jet-listing-grid__item {\n                                background: rgba(255, 255, 255, 0.03) !important;\n                                backdrop-filter: blur(12px) !important;\n                                border: 1px solid rgba(255, 255, 255, 0.1) !important;\n                                border-radius: 20px !important;\n                                overflow: hidden !important;\n                                transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) !important;\n                                position: relative !important;\n                            }\n                            .ozg-jsf-engine .jet-listing-grid__item:hover {\n                                transform: translateY(-8px) scale(1.02) !important;\n                                border-color: var(--accent-cyan) !important;\n                                box-shadow: 0 15px 40px rgba(0, 240, 255, 0.2) !important;\n                            }\n                            \/* Ensure dynamic images fit glassmorphic cards *\/\n                            .ozg-jsf-engine .jet-listing-grid__item img {\n                                width: 100% !important;\n                                height: auto !important;\n                                display: block !important;\n                            }\n                        <\/style>\n                <\/section>\n                                <!-- BOOKMARKS SECTION -->\n                <section id=\"bookmarks\" class=\"ozg-section\">\n                    <div class=\"ozg-glass\" style=\"margin-bottom: 30px; display:flex; justify-content:space-between; align-items:center;\">\n                        <div>\n                            <h2 style=\"color:#fff; margin:0 0 4px 0; font-size:1.8rem;\">My Bookmarks<\/h2>\n                            <p style=\"color:var(--text-muted); margin:0;\">Your personal collection of saved pages and posts.<\/p>\n                        <\/div>\n                    <\/div>\n\n                    \n                    <div style=\"display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px;\">\n                                                    <div style=\"grid-column: 1 \/ -1; background: rgba(255,255,255,0.02); padding: 40px 20px; text-align: center; border-radius: 16px; border: 1px dashed rgba(255,255,255,0.1); color: var(--text-muted);\">\n                                <i data-lucide=\"bookmark\" style=\"width: 48px; height: 48px; opacity: 0.5; margin-bottom: 16px;\"><\/i>\n                                <p>You haven&#039;t bookmarked anything yet. Use the  shortcode on any page to save it here.<\/p>\n                            <\/div>\n                                            <\/div>\n                <\/section>\n\n                <!-- MY TRACK SECTION (Active Track - without Development Tree) -->\n                <section id=\"my-track\" class=\"ozg-section\">\n                    <div class=\"ozg-glass\" style=\"margin-bottom: 20px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-top:56px;\">\n                        <div>\n                            <h2 style=\"color:#fff; margin:0 0 4px 0; font-size:1.4rem;\">\u041c\u043e\u044f \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/h2>\n                            <p style=\"color:var(--text-muted); font-size:0.9rem; margin:0;\">\u0412\u0430\u0448 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0443\u0442\u044c, \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043d\u0430 8 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445.<\/p>\n                        <\/div>\n                        <div>\n                                                            <button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgBuddyModal').classList.add('show')\"><i data-lucide=\"user-plus\" style=\"width:16px; margin-right:6px;\"><\/i> \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u0430<\/button>\n                                                    <\/div>\n                    <\/div>\n\n                    <!-- Sticky Filter Bar for Track Tab -->\n                    <div class=\"ozg-filter-sticky\" id=\"ozgTrackFilterSticky\">\n                        <div class=\"filter-bar\">\n                            <select id=\"filterPillarSticky\" class=\"filter-select\" onchange=\"filterByPillarSticky()\">\n                                <option value=\"\">\u0412\u0441\u0435 \u0441\u0442\u043e\u043b\u043f\u044b<\/option>\n                                                                    <option value=\"wisdom\">\u0411\u0430\u0448\u043d\u044f \u041f\u0440\u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/option>\n                                                                    <option value=\"strength\">\u0426\u0438\u0442\u0430\u0434\u0435\u043b\u044c<\/option>\n                                                                    <option value=\"wealth\">\u041a\u0430\u0437\u043d\u0430\u0447\u0435\u0439\u0441\u0442\u0432\u043e<\/option>\n                                                                    <option value=\"balance\">\u0421\u0430\u0434\u044b \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u0438<\/option>\n                                                            <\/select>\n                            <select id=\"filterAreaSticky\" class=\"filter-select\" onchange=\"filterByAreaSticky()\">\n                                <option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>\n                            <\/select>\n                            <button class=\"ozg-btn-sec\" onclick=\"clearFiltersSticky()\"><i data-lucide=\"x\"><\/i> \u041f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c<\/button>\n                        <\/div>\n                    <\/div>\n\n\n\n                    \n                                            <div class=\"ozg-glass\" style=\"text-align:center; padding: 40px;\">\n                            <i data-lucide=\"map\" style=\"width: 48px; height: 48px; color: var(--text-muted); margin-bottom: 16px;\"><\/i>\n                            <p style=\"color: var(--text-muted);\">Complete the Kingdom Audit to unlock your personalized development path.<\/p>\n                            <button class=\"ozg-btn\" onclick=\"ozgSwitchTab('kingdom')\">Go to Audit<\/button>\n                        <\/div>\n                    \n                    <!-- My Cohort Section -->\n                    <div style=\"margin-top: 60px;\">\n                        <h2 style=\"color: var(--accent-cyan); margin-bottom: 20px; display: flex; align-items: center; gap: 10px; border-bottom: 1px solid var(--glass-border); padding-bottom: 10px;\"><i data-lucide=\"users\"><\/i> \u041c\u043e\u044f \u0433\u0440\u0443\u043f\u043f\u0430<\/h2>\n                        <div id=\"cohort-activities\" class=\"ozg-glass\" style=\"padding: 20px;\"><div style=\"text-align:center; padding: 20px;\">\u041f\u043e\u0433\u0440\u0443\u0437\u043e\u0447\u043d\u044b\u0435 \u0440\u0430\u0431\u043e\u0442\u044b...<\/div><\/div>\n                    <\/div>\n                <\/section>\n\n                <!-- PROFILE SECTION -->\n                <section id=\"profile\" class=\"ozg-section\">\n                    <div id=\"ozgUserProfileHeader\" class=\"ozg-glass\" style=\"margin-bottom: 24px; padding: 30px;\">\n                        <div style=\"display: flex; align-items: center; gap: 30px; flex-wrap: wrap;\">\n                            <div style=\"position: relative;\">\n                                <img decoding=\"async\" id=\"ozgProfileAvatar\" src=\"https:\/\/secure.gravatar.com\/avatar\/?s=128&d=mm&r=g\" style=\"width: 100px; height: 100px; border-radius: 50%; border: 3px solid var(--accent-purple); object-fit: cover;\">\n                                <div id=\"ozgProfileIsMeBadge\" style=\"position: absolute; bottom: 0; right: 0; background: var(--accent-cyan); color: #000; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid #0f121e;\"><i data-lucide=\"check\" style=\"width: 14px;\"><\/i><\/div>\n                            <\/div>\n                            <div style=\"flex: 1; min-width: 200px;\">\n                                <h2 id=\"ozgProfileName\" style=\"margin: 0; font-size: 1.8rem; color: #fff; font-family: 'Playfair Display', serif;\"><\/h2>\n                                <p id=\"ozgProfileBadge\" style=\"color: var(--accent-cyan); margin: 4px 0 16px 0; font-size: 0.9rem; font-weight: 600;\">Student Practitioner<\/p>\n                                <div style=\"display: flex; gap: 24px; flex-wrap: wrap;\">\n                                    <div style=\"text-align: center;\">\n                                        <div id=\"ozgStatPosts\" style=\"font-size: 1.2rem; font-weight: 800; color: #fff;\">0<\/div>\n                                        <div style=\"font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase;\">Posts<\/div>\n                                    <\/div>\n                                    <div style=\"text-align: center;\">\n                                        <div id=\"ozgStatAchievements\" style=\"font-size: 1.2rem; font-weight: 800; color: #fff;\">0<\/div>\n                                        <div style=\"font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase;\">Badges<\/div>\n                                    <\/div>\n                                    <div style=\"text-align: center;\">\n                                        <div id=\"ozgStatCoins\" style=\"font-size: 1.2rem; font-weight: 800; color: #fff;\">0<\/div>\n                                        <div style=\"font-size: 0.75rem; color: var(--text-muted); text-transform: uppercase;\">Coins<\/div>\n                                    <\/div>\n                                <\/div>\n                                                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                        <div style=\"display: flex; border-bottom: 1px solid var(--glass-border); margin-bottom: 24px;\">\n                            <button class=\"ozg-profile-tab active\" onclick=\"ozgSwitchProfileSubTab('feed', this)\" style=\"flex: 1; background: none; border: none; padding: 12px; color: #fff; font-weight: 600; cursor: pointer; border-bottom: 2px solid var(--accent-cyan); transition: 0.2s;\"><i data-lucide=\"layout-grid\" style=\"width: 18px; vertical-align: middle; margin-right: 8px;\"><\/i> Feed<\/button>\n                            <button class=\"ozg-profile-tab\" onclick=\"ozgSwitchProfileSubTab('connections', this)\" style=\"flex: 1; background: none; border: none; padding: 12px; color: var(--text-muted); font-weight: 600; cursor: pointer; border-bottom: 2px solid transparent; transition: 0.2s;\"><i data-lucide=\"users\" style=\"width: 18px; vertical-align: middle; margin-right: 8px;\"><\/i> Connections<\/button>\n                            <button class=\"ozg-profile-tab\" onclick=\"ozgSwitchProfileSubTab('notifications', this)\" style=\"flex: 1; background: none; border: none; padding: 12px; color: var(--text-muted); font-weight: 600; cursor: pointer; border-bottom: 2px solid transparent; transition: 0.2s;\"><i data-lucide=\"bell\" style=\"width: 18px; vertical-align: middle; margin-right: 8px;\"><\/i> Notifications<\/button>\n                        <\/div>\n\n                    <!-- Profile Feed (3 column grid) -->\n                    <div id=\"ozgProfileSubTab-feed\" class=\"ozg-profile-subtab-content active\">\n                        <div style=\"position:relative;margin-bottom:8px;\"><input type=\"search\" id=\"ozgProfileFeedSearch\" class=\"ozg-input\" placeholder=\"Search...\" oninput=\"ozgFilterProfileFeed()\" style=\"padding-left:38px;margin-bottom:0;\"><i data-lucide=\"search\" style=\"position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--text-muted);width:16px;pointer-events:none;\"><\/i><\/div>\n                        <div id=\"ozgProfileFeedTags\" style=\"display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;scrollbar-width:none;margin-bottom:10px;\"><button class=\"ozg-feed-tag-btn active\" onclick=\"ozgSetProfileFeedTag('',this)\">All<\/button><button class=\"ozg-feed-tag-btn\" onclick=\"ozgSetProfileFeedTag('courses',this)\">Courses<\/button><button class=\"ozg-feed-tag-btn\" onclick=\"ozgSetProfileFeedTag('jobs',this)\">Jobs<\/button><button class=\"ozg-feed-tag-btn\" onclick=\"ozgSetProfileFeedTag('challenges',this)\">Challenges<\/button><button class=\"ozg-feed-tag-btn\" onclick=\"ozgSetProfileFeedTag('finance',this)\">Finance<\/button><button class=\"ozg-feed-tag-btn\" onclick=\"ozgSetProfileFeedTag('video',this)\">Video<\/button><button class=\"ozg-feed-tag-btn\" onclick=\"ozgSetProfileFeedTag('photo',this)\">Photo<\/button><\/div>\n                        <div id=\"ozgProfileFeedGrid\" style=\"display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px;\">\n                            <!-- Posts loaded via JS -->\n                        <\/div>\n                        <div id=\"ozgProfileNoPosts\" style=\"display: none; text-align: center; padding: 60px 20px; color: var(--text-muted);\">\n                            <i data-lucide=\"camera\" style=\"width: 48px; height: 48px; opacity: 0.3; margin-bottom: 16px;\"><\/i>\n                            <p>No content shared yet.<\/p>\n                        <\/div>\n                    <\/div>\n\n                    <div id=\"ozgProfileSubTab-connections\" class=\"ozg-profile-subtab-content\" style=\"display: none;\">\n                        <div id=\"ozgMeProfileConnections\">\n                            <!-- Incoming Requests -->\n                            <h3 style=\"color: var(--warning-color); margin-bottom: 16px; display:flex; align-items:center; gap:8px;\"><i data-lucide=\"bell\" style=\"width:20px;\"><\/i> \u0412\u0445\u043e\u0434\u044f\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b<\/h3>\n                            <div style=\"margin-bottom: 40px;\">\n                                                                    <div style=\"background: rgba(255,255,255,0.02); padding: 20px; border-radius: 12px; text-align: center; color: var(--text-muted);\">\u041d\u043e\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043d\u0435\u0442.<\/div>\n                                                            <\/div>\n                            <!-- My Mentees -->\n                            <h3 style=\"color: var(--accent-cyan); margin-bottom: 16px; display:flex; align-items:center; gap:8px;\"><i data-lucide=\"network\" style=\"width:20px;\"><\/i> \u041c\u043e\u0438 \u043f\u043e\u0434\u043e\u043f\u0435\u0447\u043d\u044b\u0435<\/h3>\n                            <div style=\"display: grid; grid-template-columns: 1fr; gap: 20px;\">\n                                                                    <div style=\"background: rgba(255,255,255,0.02); padding: 20px; border-radius: 12px; text-align: center; color: var(--text-muted);\">\u0423 \u0432\u0430\u0441 \u043f\u043e\u043a\u0430 \u043d\u0435\u0442 \u043f\u043e\u0434\u043e\u043f\u0435\u0447\u043d\u044b\u0445.<\/div>\n                                                            <\/div>\n                        <\/div>\n                        <div id=\"ozgOtherProfileConnections\" style=\"display: none; text-align: center; padding: 40px; color: var(--text-muted);\">\n                            Connections are private.\n                        <\/div>\n                    <\/div>\n\n                    <div id=\"ozgProfileSubTab-notifications\" class=\"ozg-profile-subtab-content\" style=\"display: none;\">\n                        <div id=\"ozgNotificationsList\">\n                            <div style=\"text-align:center; padding: 40px; color: var(--text-muted);\">\n                                <i data-lucide=\"bell\" style=\"width: 48px; height: 48px; opacity: 0.3; margin-bottom: 16px;\"><\/i>\n                                <p>No new notifications.<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/section>\n\n                <!-- CHALLENGES SECTION -->\n                <section id=\"challenges\" class=\"ozg-section\">\n                    <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:10px; margin-bottom:30px;\">\n                        <div>\n                            <h2 style=\"color:#fff; margin:0 0 4px 0; font-size:1.8rem;\">\u0410\u0440\u0435\u043d\u0430 \u0438\u0441\u043f\u044b\u0442\u0430\u043d\u0438\u0439<\/h2>\n                            <p style=\"color:var(--text-muted); font-size:0.9rem; margin:0;\">\u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u0435 \u0441\u0432\u043e\u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438 \u0432 \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u0443\u0447\u0435\u043d\u0438\u043a\u0430\u043c\u0438.<\/p>\n                        <\/div>\n                        <button class=\"ozg-btn\" onclick=\"document.getElementById('ozgCreateChallengeModal').classList.add('show')\"><i data-lucide=\"plus\" style=\"width:18px;\"><\/i> \u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443<\/button>\n                    <\/div>\n                    <div style=\"display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:20px;\">\n                                            <\/div>\n                                            <h3 style=\"color:#fff; margin: 40px 0 20px 0; border-bottom: 1px solid var(--glass-border); padding-bottom: 10px;\">\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438<\/h3>\n                        <div style=\"display:grid; grid-template-columns:repeat(auto-fill, minmax(300px, 1fr)); gap:20px;\">\n                                                            <div class=\"ozg-glass\" style=\"padding:20px; border-top: 4px solid var(--glass-border); display: flex; flex-direction: column;\">\n                                    <h4 style=\"margin-top:0; color:#fff; font-size:1.1rem;\">\u0412\u043e\u0434\u0430 \u0436\u0438\u0437\u043d\u044c 2<\/h4>\n                                    <div style=\"display:flex; align-items:center; gap:8px; color:var(--text-muted); font-size:0.85rem; margin-bottom:20px;\"><i data-lucide=\"users\" style=\"width:14px;\"><\/i> 4 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438<\/div>\n                                    <button class=\"ozg-btn\" style=\"width: 100%; justify-content: center; margin-top: auto;\" onclick=\"ozgJoinChallenge(16319)\"><i data-lucide=\"user-plus\" style=\"width:16px;\"><\/i> \u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f<\/button>\n                                <\/div>\n                                                            <div class=\"ozg-glass\" style=\"padding:20px; border-top: 4px solid var(--glass-border); display: flex; flex-direction: column;\">\n                                    <h4 style=\"margin-top:0; color:#fff; font-size:1.1rem;\">\u0412\u043e\u0434\u0430 - \u0436\u0438\u0437\u043d\u044c<\/h4>\n                                    <div style=\"display:flex; align-items:center; gap:8px; color:var(--text-muted); font-size:0.85rem; margin-bottom:20px;\"><i data-lucide=\"users\" style=\"width:14px;\"><\/i> 3 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438<\/div>\n                                    <button class=\"ozg-btn\" style=\"width: 100%; justify-content: center; margin-top: auto;\" onclick=\"ozgJoinChallenge(16318)\"><i data-lucide=\"user-plus\" style=\"width:16px;\"><\/i> \u041f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0438\u0442\u044c\u0441\u044f<\/button>\n                                <\/div>\n                                                    <\/div>\n                                    <\/section>\n\n                <!-- JOURNAL SECTION -->\n                <section id=\"journal\" class=\"ozg-section\">\n                    <div class=\"tracker-wrapper\" id=\"habit-tracker-container\" style=\"margin-bottom: 30px;\">\n                        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; flex-wrap:wrap; gap:8px;\">\n                            <h3 style=\"color:#fff; margin:0; font-size:1.2rem; display:flex; align-items:center; gap:8px;\"><i data-lucide=\"calendar-days\" style=\"width:18px;\"><\/i> \u0422\u0440\u0435\u043a\u0435\u0440 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a<\/h3>\n                            <div class=\"tracker-view-tabs\">\n                                <button class=\"tracker-view-btn active\" data-view=\"daily\" onclick=\"loadHabitTracker('daily', this)\">\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e<\/button>\n                                <button class=\"tracker-view-btn\" data-view=\"weekly\" onclick=\"loadHabitTracker('weekly', this)\">\u0415\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e<\/button>\n                                <button class=\"tracker-view-btn\" data-view=\"monthly\" onclick=\"loadHabitTracker('monthly', this)\">Monthly<\/button>\n                            <\/div>\n                        <\/div>\n                        <div id=\"habit-tracker-table-wrap\" style=\"overflow-x: auto; -webkit-overflow-scrolling: touch;\"><\/div>\n                    <\/div>\n\n                    <div class=\"ozg-glass\" style=\"margin-bottom: 30px;\">\n                        <div style=\"display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px;\">\n                            <div>\n                                <h2 style=\"color: #fff; margin: 0 0 8px 0; font-size: 1.5rem;\">\u0416\u0443\u0440\u043d\u0430\u043b \u0445\u0440\u043e\u043d\u0438\u043a<\/h2>\n                                <p style=\"color: var(--text-muted); margin: 0; font-size:0.85rem;\">\u0417\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0439\u0442\u0435 \u0441\u0432\u043e\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u044f, \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u043d\u0430 \u043f\u0443\u0442\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f.<\/p>\n                            <\/div>\n                            <button class=\"ozg-btn\" style=\"padding:8px 16px;\" onclick=\"ozgShowJournalModal(null, '')\"><i data-lucide=\"pen-line\" style=\"width:16px;\"><\/i> \u041d\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c<\/button>\n                        <\/div>\n                    <\/div>\n                    <div id=\"journal-entries\" class=\"ozg-glass\" style=\"padding: 20px;\">\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...<\/div>\n                <\/section>\n\n                            <\/main>\n        <\/div>\n\n        <nav class=\"ozg-mob-nav\" id=\"ozgMobileNav\">\n            <a class=\"ozg-mob-item active\" id=\"mtab-btn-kingdom\" onclick=\"ozgSwitchTab('kingdom')\"><i data-lucide=\"crown\"><\/i><\/a>\n                            <a class=\"ozg-mob-item\" href=\"https:\/\/hobbi.st\/wp-login.php\"><i data-lucide=\"log-in\"><\/i><\/a>\n                        <a class=\"ozg-mob-item\" id=\"mtab-btn-bookmarks\" onclick=\"ozgSwitchTab('bookmarks')\"><i data-lucide=\"flame\"><\/i><\/a>\n            <a class=\"ozg-mob-item\" id=\"mtab-btn-my-track\" onclick=\"ozgSwitchTab('my-track')\"><i data-lucide=\"map\"><\/i><\/a>\n            <a class=\"ozg-mob-item\" id=\"mtab-btn-coach\" onclick=\"ozgSwitchTab('coach')\"><i data-lucide=\"plus-circle\"><\/i><\/a>\n            <a class=\"ozg-mob-item\" id=\"mtab-btn-challenges\" onclick=\"ozgSwitchTab('challenges')\"><i data-lucide=\"swords\"><\/i><\/a>\n            <a class=\"ozg-mob-item\" id=\"mtab-btn-journal\" onclick=\"ozgSwitchTab('journal')\"><i data-lucide=\"book-open\"><\/i><\/a>\n            <a class=\"ozg-mob-item\" id=\"mtab-btn-profile\" onclick=\"ozgSwitchTab('profile')\" style=\"position:relative;\">\n                <i data-lucide=\"user\"><\/i>\n                            <\/a>\n        <\/nav>\n\n        <!-- Gamer Panel Footer (Horizontally Scrollable) -->\n        <div class=\"footer-content-wrapper\" id=\"draggableFooter\" style=\"display:none;\">\n            <div class=\"left-column-footer\" id=\"leftFooterArea\">\n                <div class=\"left-side-footer-buttons-group\">\n                    <a href=\"#\" class=\"footer-button\" onclick=\"ozgSwitchTab('kingdom'); return false;\"><span class=\"mr-1\">\ud83d\ude80<\/span> \u041a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u043e<\/a>\n                    <a href=\"#\" class=\"footer-button\" onclick=\"ozgSwitchTab('bookmarks'); return false;\"><span class=\"mr-1\">\ud83d\udd16<\/span> Bookmarks<\/a>\n                    <a href=\"#\" class=\"footer-button\" onclick=\"ozgSwitchTab('my-track'); return false;\"><span class=\"mr-1\">\ud83d\udcdc<\/span> \u041e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c<\/a>\n                    <a href=\"#\" class=\"footer-button\" onclick=\"ozgSwitchTab('profile'); return false;\"><span class=\"mr-1\">\ud83d\udc64<\/span> Profile<\/a>\n                    <a href=\"#\" class=\"footer-button\" onclick=\"ozgSwitchTab('challenges'); return false;\"><span class=\"mr-1\">\u2694\ufe0f<\/span> \u0410\u0440\u0435\u043d\u0430<\/a>\n                    <a href=\"#\" class=\"footer-button\" onclick=\"ozgSwitchTab('journal'); return false;\"><span class=\"mr-1\">\ud83d\udcd6<\/span> \u0425\u0440\u043e\u043d\u0438\u043a\u0438<\/a>\n                                    <\/div>\n                <div class=\"config-skin-row\">\n                    <a href=\"#\" class=\"action-button-round\" onclick=\"ozgChangeTheme('classic'); return false;\" title=\"\u0412\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f \u043a \u043a\u043b\u0430\u0441\u0441\u0438\u043a\u0435\">\ud83d\udd19<\/a>\n                    <a href=\"#\" class=\"action-button-round\" onclick=\"alert('It is your Castle'); return false;\">\ud83c\udff0<\/a>\n                <\/div>\n            <\/div>\n            <div class=\"bottom-info-bar\">\n                <div class=\"bottom-bar-top-row\">\n                    <a href=\"#\" id=\"footerMenuToggle\" class=\"footer-menu-toggle\">\u2630<\/a>\n                    <div class=\"xp-progress-group\">\n                        <span class=\"xp-text\">XP<\/span>\n                        <div class=\"progress-bar\"><div class=\"progress-fill\"><\/div><\/div>\n                        <span class=\"xp-text\">779\/950<\/span>\n                    <\/div>\n                <\/div>\n                <div class=\"event-info\">\n                    <span class=\"event-info-icon\">\u2728<\/span>\n                    <span>New Event: Spirit Wars<\/span>\n                    <span class=\"event-time\">5h 51m<\/span>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- SIGN UP PROMPT MODAL -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgSignUpPrompt\" style=\"z-index: 40000; background: rgba(5,7,15,0.95);\">\n        <div class=\"ozg-modal\" style=\"max-width: 400px; text-align: center; padding: 40px 24px; background: #0f121e; border: 1px solid var(--glass-border); border-radius: 24px;\">\n            <div style=\"width: 70px; height: 70px; background: rgba(0,240,255,0.1); border-radius: 20px; display: flex; align-items: center; justify-content: center; margin: 0 auto 24px auto;\">\n                <i data-lucide=\"rocket\" style=\"width: 32px; height: 32px; color: var(--accent-cyan);\"><\/i>\n            <\/div>\n            <h3 style=\"color: #fff; font-size: 1.5rem; margin: 0 0 12px 0; font-family: 'Playfair Display', serif;\">Get the full app experience<\/h3>\n            <p style=\"color: var(--text-muted); font-size: 1rem; line-height: 1.5; margin: 0 0 32px 0;\">Enjoy more courses, videos and great features on the mini app<\/p>\n            <div style=\"display: flex; flex-direction: column; gap: 12px;\">\n                <button onclick=\"if(window.ozgJoinViaTelegram) ozgJoinViaTelegram(); else window.open('https:\/\/t.me\/Hobbistbot\/miniapp?startapp', '_blank');\" class=\"ozg-btn\" style=\"justify-content: center; padding: 14px; font-size: 1.1rem;\">Open hobbist<\/button>\n                <a href=\"https:\/\/hobbi.st\/wp-login.php\" class=\"ozg-btn-sec\" style=\"justify-content: center; padding: 14px; font-size: 1.1rem; border-color: var(--accent-cyan); color: var(--accent-cyan);\">Standard Login (Admin)<\/a>\n                <button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgSignUpPrompt').classList.remove('show')\" style=\"justify-content: center; border: none; background: transparent; color: var(--text-muted);\">Not now<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Industry Quiz Modal -->\n    <div class=\"ozg-quiz-modal-overlay\" id=\"ozgIndustryQuizModal\">\n        <div class=\"ozg-quiz-modal\">\n            <div class=\"ozg-quiz-header\">\n                <h3 style=\"color:#fff; margin:0;\">Industry Quiz<\/h3>\n                <button class=\"ozg-quiz-close\" onclick=\"document.getElementById('ozgIndustryQuizModal').classList.remove('show')\"><i data-lucide=\"x\"><\/i><\/button>\n            <\/div>\n            <div class=\"ozg-quiz-body\">\n                [forminator_quiz id=\"9633\"]            <\/div>\n        <\/div>\n    <\/div>\n        <!-- MODALS -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgSubscribeModal\"><div class=\"ozg-modal\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"play-circle\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u041d\u0430\u0447\u0430\u0442\u044c \u043a\u0443\u0440\u0441<\/h3><input type=\"hidden\" id=\"ozgSubProgId\"><input type=\"search\" enterkeyhint=\"search\" id=\"subCoachSearch\" class=\"user-search-input\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u0442\u0440\u0435\u043d\u0435\u0440\u0430 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"subCoachResults\" class=\"user-search-results\"><\/div><input type=\"hidden\" id=\"selectedSubCoachId\" value=\"0\"><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgSubscribeModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgConfirmSubscribe()\">\u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgBuddyModal\"><div class=\"ozg-modal\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"users\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0434\u0440\u0443\u0433\u0430<\/h3><input type=\"search\" enterkeyhint=\"search\" id=\"buddySearchInput\" class=\"user-search-input\" placeholder=\"\u041f\u043e\u0438\u0441\u043a (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"buddySearchResults\" class=\"user-search-results\"><\/div><input type=\"hidden\" id=\"selectedBuddyId\" value=\"0\"><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgBuddyModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgSetBuddy()\">\u041f\u0440\u0438\u0433\u043b\u0430\u0448\u0430\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgModal\"><div class=\"ozg-modal\"><h3 id=\"ozgModalTitle\" style=\"color:#fff; margin-top:0; margin-bottom:20px;\">\u0422\u0432\u043e\u0440\u0435\u043d\u0438\u0435<\/h3><input type=\"hidden\" id=\"ozgType\"><input type=\"hidden\" id=\"ozgProgId\"><input type=\"hidden\" id=\"ozgEntityId\" value=\"0\"><input type=\"text\" id=\"ozgTitle\" class=\"ozg-input\" placeholder=\"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"ozgProgramFields\" style=\"display:none;\"><select id=\"ozgPillar\" class=\"ozg-input\" onchange=\"ozgUpdateAreas()\"><option value='wisdom'>\u0411\u0430\u0448\u043d\u044f \u041f\u0440\u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f<\/option><option value='strength'>\u0426\u0438\u0442\u0430\u0434\u0435\u043b\u044c<\/option><option value='wealth'>\u041a\u0430\u0437\u043d\u0430\u0447\u0435\u0439\u0441\u0442\u0432\u043e<\/option><option value='balance'>\u0421\u0430\u0434\u044b \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u0438<\/option><\/select><select id=\"ozgArea\" class=\"ozg-input\"><\/select><\/div><select id=\"ozgFreq\" class=\"ozg-input\" style=\"display:none;\"><option value=\"daily\">\u0415\u0436\u0435\u0434\u043d\u0435\u0432\u043d\u043e<\/option><option value=\"weekly\">\u0415\u0436\u0435\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u043e<\/option><\/select><select id=\"ozgLink\" class=\"ozg-input\" style=\"display:none;\"><option value=\"0\">\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u044d\u0442\u0430\u043f<\/option><option value='16825'>\u0421\u0432\u044f\u0437\u044c: green course<\/option><option value='16819'>\u0421\u0432\u044f\u0437\u044c: construct new building<\/option><option value='16810'>\u0421\u0432\u044f\u0437\u044c: Waterhouse construction<\/option><option value='15257'>\u0421\u0432\u044f\u0437\u044c: The Holy Quran (Arabic)<\/option><option value='16784'>\u0421\u0432\u044f\u0437\u044c: Watching the game<\/option><option value='16781'>\u0421\u0432\u044f\u0437\u044c: Watermelon and lemon<\/option><option value='16778'>\u0421\u0432\u044f\u0437\u044c: Drafting the first round<\/option><option value='16777'>\u0421\u0432\u044f\u0437\u044c: How many times<\/option><option value='16773'>\u0421\u0432\u044f\u0437\u044c: Sunderland was working<\/option><option value='16730'>\u0421\u0432\u044f\u0437\u044c: \u049a\u043e\u0439 \u0441\u043e\u044e\u0434\u0430\u043d \u0441\u0430\u0431\u0430\u049b<\/option><option value='16727'>\u0421\u0432\u044f\u0437\u044c: Intermediate<\/option><option value='16726'>\u0421\u0432\u044f\u0437\u044c: Beginners<\/option><option value='16685'>\u0421\u0432\u044f\u0437\u044c: \u041c\u0430\u0441\u0442\u0435\u0440\u043c\u0430\u0439\u043d\u0434: \u041a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u044e \u043c\u043e\u0449\u044c \u0441\u0442\u0430\u044e<\/option><option value='16314'>\u0421\u0432\u044f\u0437\u044c: Ozgeris Uztazy: \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u043e \u041a\u043e\u0443\u0447\u0438\u043d\u0433\u0430<\/option><option value='16310'>\u0421\u0432\u044f\u0437\u044c: \u0413\u0440\u0430\u043d\u0434-\u0410\u0443\u0434\u0438\u0442 \u041a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u0430: \u041f\u0435\u0440\u0435\u043f\u0440\u043e\u0448\u0438\u0432\u043a\u0430<\/option><option value='16305'>\u0421\u0432\u044f\u0437\u044c: \u0424\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f \u0421\u0442\u043e\u0438\u0446\u0438\u0437\u043c\u0430 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u043c \u0431\u044b\u0442\u0443<\/option><option value='16301'>\u0421\u0432\u044f\u0437\u044c: \u0421\u043c\u044b\u0441\u043b \u0438 \u0426\u0435\u043d\u043d\u043e\u0441\u0442\u0438 (\u041b\u043e\u0433\u043e\u0442\u0435\u0440\u0430\u043f\u0438\u044f \u0424\u0440\u0430\u043d\u043a\u043b\u0430)<\/option><option value='16297'>\u0421\u0432\u044f\u0437\u044c: \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u043e \u042d\u043c\u043f\u0430\u0442\u0438\u0438: \u041a\u0430\u043a \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043b\u044e\u0434\u0435\u0439<\/option><option value='16292'>\u0421\u0432\u044f\u0437\u044c: EQ: \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0440\u0435\u0432\u043e\u0433\u043e\u0439 \u0438 \u0433\u043d\u0435\u0432\u043e\u043c<\/option><option value='16287'>\u0421\u0432\u044f\u0437\u044c: \u0413\u0435\u0439\u043c\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0440\u0443\u0442\u0438\u043d\u044b: \u0416\u0438\u0437\u043d\u044c \u043a\u0430\u043a \u043f\u0440\u0438\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/option><\/select><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgSave()\">\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgCreateChallengeModal\"><div class=\"ozg-modal\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"swords\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u0421\u043e\u0437\u0434\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443<\/h3><input type=\"text\" id=\"ozgChallengeTitle\" class=\"ozg-input\" placeholder=\"\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: \u043c\u0435\u0441\u044f\u0446 \u0431\u0435\u0437 \u0441\u0430\u0445\u0430\u0440\u0430\" style=\"margin-top:20px;\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><select id=\"ozgChallengeHabit\" class=\"ozg-input\" style=\"margin-bottom:16px;\"><option value=\"0\">\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a.<\/option><\/select><select id=\"ozgChallengeType\" class=\"ozg-input\" style=\"margin-bottom:24px;\"><option value=\"open\">\u041e\u0442\u043a\u0440\u044b\u0442\u044c<\/option><option value=\"invite\">\u0427\u0430\u0441\u0442\u043d\u044b\u0439<\/option><\/select><div style=\"display:flex; justify-content:flex-end; gap:10px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgCreateChallengeModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgCreateChallenge()\">\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgJournalModal\"><div class=\"ozg-modal\" style=\"max-width: 500px;\"><h3 id=\"ozgJournalModalTitle\" style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"book-open\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u041d\u043e\u0432\u0430\u044f \u0437\u0430\u043f\u0438\u0441\u044c \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435<\/h3><input type=\"hidden\" id=\"ozgJournalMilestoneId\" value=\"\"><textarea id=\"ozgJournalEntry\" class=\"ozg-input\" placeholder=\"\u041e\u043f\u0438\u0448\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441, \u0432\u044b\u0432\u043e\u0434\u044b \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f...\" rows=\"6\" style=\"resize:vertical;\"><\/textarea><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgJournalModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgSaveJournalEntry()\">\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgAddQuestModal\"><div class=\"ozg-modal\" style=\"max-width: 500px;\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"plus-circle\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u043d\u0438\u0435<\/h3><p style=\"color:var(--text-muted); font-size:0.9rem; margin-bottom:16px;\" id=\"addQuestSphereName\"><\/p><input type=\"hidden\" id=\"addQuestPillar\"><input type=\"hidden\" id=\"addQuestArea\"><select id=\"addQuestProgramId\" class=\"ozg-input\" style=\"margin-bottom: 16px;\"><\/select><input type=\"search\" enterkeyhint=\"search\" id=\"addQuestCoachSearch\" class=\"user-search-input\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u0442\u0440\u0435\u043d\u0435\u0440\u0430 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"addQuestCoachResults\" class=\"user-search-results\"><\/div><input type=\"hidden\" id=\"selectedAddQuestCoachId\" value=\"0\"><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgAddQuestModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgConfirmAddQuest()\">\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgChangeCoachModal\"><div class=\"ozg-modal\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"user-plus\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u041a\u043e\u0443\u0447 \u043f\u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u0430\u043c<\/h3><input type=\"hidden\" id=\"changeCoachProgramId\"><input type=\"search\" enterkeyhint=\"search\" id=\"changeCoachSearch\" class=\"user-search-input\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u0442\u0440\u0435\u043d\u0435\u0440\u0430 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"changeCoachResults\" class=\"user-search-results\"><\/div><input type=\"hidden\" id=\"selectedCoachId\" value=\"0\"><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgChangeCoachModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgConfirmChangeCoach()\">\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgChangeBossModal\"><div class=\"ozg-modal\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"briefcase\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u0421\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a\u0430<\/h3><input type=\"hidden\" id=\"changeBossProgramId\"><input type=\"search\" enterkeyhint=\"search\" id=\"changeBossSearch\" class=\"user-search-input\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u0431\u043e\u0441\u0441\u0430 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"changeBossResults\" class=\"user-search-results\"><\/div><input type=\"hidden\" id=\"selectedBossId\" value=\"0\"><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgChangeBossModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgConfirmChangeBoss()\">\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c<\/button><\/div><\/div><\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgChangeProgramBuddyModal\"><div class=\"ozg-modal\"><h3 style=\"color:#fff; margin-top:0; font-size:1.4rem;\"><i data-lucide=\"user-check\" style=\"display:inline-block; vertical-align:middle; margin-right:8px;\"><\/i>\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043d\u0430\u043f\u0430\u0440\u043d\u0438\u043a\u0430 \u043f\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044e<\/h3><input type=\"hidden\" id=\"changeBuddyProgramId\"><input type=\"search\" enterkeyhint=\"search\" id=\"changeBuddySearch\" class=\"user-search-input\" placeholder=\"\u041f\u043e\u0438\u0441\u043a \u043f\u043e\u043c\u043e\u0449\u043d\u0438\u043a\u0430 (\u043c\u0438\u043d\u0438\u043c\u0443\u043c 2 \u0441\u0438\u043c\u0432\u043e\u043b\u0430)...\" onkeydown=\"if(event.key === 'Enter') this.blur();\"><div id=\"changeBuddyResults\" class=\"user-search-results\"><\/div><input type=\"hidden\" id=\"selectedProgBuddyId\" value=\"0\"><div style=\"display:flex; justify-content:flex-end; gap:10px; margin-top:20px;\"><button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgChangeProgramBuddyModal').classList.remove('show')\">\u041e\u0442\u043c\u0435\u043d\u0430<\/button><button class=\"ozg-btn\" onclick=\"ozgConfirmChangeProgramBuddy()\">\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c<\/button><\/div><\/div><\/div>\n\n    <!-- P2P CAMPAIGN INTEGRATION MODAL -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgP2PModal\">\n        <div class=\"ozg-modal\" style=\"max-width: 600px; padding: 0; overflow: hidden; background: #fff;\">\n            <div style=\"display:flex; justify-content:space-between; align-items:center; padding: 16px 24px; background: #f8f9fa; border-bottom: 1px solid #e5e7eb;\">\n                <h3 style=\"color:#111827; margin:0; font-size:1.2rem; display: flex; align-items: center; gap: 8px;\"><i data-lucide=\"heart-handshake\" style=\"color: var(--success-color);\"><\/i> Support Campaign<\/h3>\n                <button class=\"ozg-icon-btn\" style=\"background: transparent; border: none; color: #6b7280; width: auto; height: auto; padding: 4px;\" onclick=\"document.getElementById('ozgP2PModal').classList.remove('show')\"><i data-lucide=\"x\"><\/i><\/button>\n            <\/div>\n            <div id=\"ozgP2PContent\" style=\"padding: 24px; max-height: 70vh; overflow-y: auto; color: #374151;\"><\/div>\n        <\/div>\n    <\/div>\n\n    <!-- COURSE DETAILS \/ LEARNING MODAL -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgCourseModal\">\n        <div class=\"ozg-modal\" id=\"ozgCourseModalContent\"><\/div>\n    <\/div>\n\n    <!-- LESSON DETAILS \/ LEARNING MODAL -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgLessonModal\">\n        <div class=\"ozg-modal\" id=\"ozgLessonModalContent\"><\/div>\n    <\/div>\n\n    <!-- FUNDRAISING DETAILS MODAL -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgFundraisingModal\">\n        <div class=\"ozg-modal\" id=\"ozgFundraisingModalContent\"><\/div>\n    <\/div>\n\n    <!-- FLOATING CREATION MODAL -->\n    <div class=\"ozg-fs-modal\" id=\"ozgFsModal\">\n        <div class=\"ozg-fs-header\">\n            <div style=\"display:flex; align-items:center; gap:10px; min-width:0; overflow:hidden;\">\n                <i data-lucide=\"pencil-ruler\" style=\"color:var(--accent-cyan); flex-shrink:0; width:18px;\"><\/i>\n                <h3 id=\"ozgFsModalTitle\" style=\"color:#fff; margin:0; font-family:'Playfair Display',serif; font-size:1rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">Creation<\/h3>\n            <\/div>\n            <div style=\"display:flex; gap:8px; align-items:center; flex-shrink:0;\">\n                <button class=\"ozg-icon-btn\" title=\"Minimise\" onclick=\"ozgToggleFsMinimise()\" id=\"ozgFsMinBtn\"><i data-lucide=\"minus\"><\/i><\/button>\n                <button class=\"ozg-icon-btn\" title=\"Close creation panel\" onclick=\"ozgCloseFsModal()\"><i data-lucide=\"x\"><\/i><\/button>\n            <\/div>\n        <\/div>\n        <div class=\"ozg-fs-body\" id=\"ozgFsModalBody\">\n            <iframe src=\"about:blank\" id=\"ozgFsIframe\"><\/iframe>\n        <\/div>\n    <\/div>\n\n    <!-- FLOATING CREATION BAR -->\n    <div class=\"ozg-creation-bar\" id=\"ozgCreationBar\">\n        <div class=\"ozg-creation-scroll\">\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('course')\"><i data-lucide=\"graduation-cap\"><\/i> Course<\/div>\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('campaign')\"><i data-lucide=\"heart-handshake\"><\/i> Financing<\/div>\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('product')\"><i data-lucide=\"shopping-bag\"><\/i> Product<\/div>\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('service')\"><i data-lucide=\"briefcase\"><\/i> Service<\/div>\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('lesson')\"><i data-lucide=\"play-circle\"><\/i> Lesson<\/div>\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('post')\"><i data-lucide=\"pen-tool\"><\/i> Post<\/div>\n            <div class=\"ozg-create-btn\" onclick=\"ozgShowCreationPanel('page')\"><i data-lucide=\"file-text\"><\/i> Page<\/div>\n        <\/div>\n    <\/div>\n\n    <!-- Creation panel modal -->\n    <div class=\"ozg-modal-overlay\" id=\"ozgCreationPanelModal\" style=\"z-index:19500;\">\n        <div class=\"ozg-modal\" style=\"max-width:800px; width: 95%; max-height:92svh; overflow-y:auto; background:#0f121e; color:#fff; border:1px solid rgba(255,255,255,0.1); padding: 0;\">\n            <div style=\"display:flex; justify-content:space-between; align-items:center; padding: 20px; border-bottom: 1px solid rgba(255,255,255,0.05); gap:10px;\">\n                <h3 id=\"ozgCreationPanelTitle\" style=\"margin:0; color:#fff; font-family:'Playfair Display',serif; font-size:1.2rem;\"><\/h3>\n                <button class=\"ozg-icon-btn\" id=\"ozgCreationCloseBtn\" onclick=\"ozgCreationGuardedClose()\"><i data-lucide=\"x\"><\/i><\/button>\n            <\/div>\n            <div id=\"ozgCreationPanelBody\" style=\"padding: 20px;\"><\/div>\n            <div id=\"ozgEditorIframeWrap\" style=\"display:none; width: 100%; border-radius:0; overflow:hidden; border-top:1px solid rgba(255,255,255,0.15); height:85svh;\">\n                <iframe id=\"ozgEditorIframe\" src=\"about:blank\" style=\"width:100%; height:100%; border:none; display:block;\" loading=\"lazy\"><\/iframe>\n            <\/div>\n            <div id=\"ozgCreationActionBar\" style=\"display:none; gap:10px; justify-content:flex-end; padding:14px 20px; border-top:1px solid rgba(255,255,255,0.08);\">\n                <button class=\"ozg-btn\" style=\"background:var(--success-color);border-color:var(--success-color);\" onclick=\"ozgPublishCreationDraft()\"><i data-lucide=\"send\"><\/i> Publish<\/button>\n                <button class=\"ozg-btn-sec\" onclick=\"ozgOpenCreationEditor()\"><i data-lucide=\"pencil-ruler\"><\/i> Content Edit<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n    <div class=\"ozg-modal-overlay\" id=\"ozgUnsavedWarnModal\" style=\"z-index:19600;display:none;\">\n        <div class=\"ozg-modal\" style=\"max-width:360px;background:#0f121e;color:#fff;border:1px solid rgba(255,255,255,0.1);text-align:center;padding:28px 24px;\">\n            <i data-lucide=\"alert-triangle\" style=\"width:36px;height:36px;color:#f59e0b;margin-bottom:12px;\"><\/i>\n            <h3 style=\"margin:0 0 8px;font-family:'Playfair Display',serif;font-size:1.1rem;\">Unsaved changes<\/h3>\n            <p style=\"color:rgba(255,255,255,0.55);font-size:0.88rem;margin-bottom:22px;\">Your draft has not been saved. Closing will discard it.<\/p>\n            <div style=\"display:flex;gap:10px;justify-content:center;\">\n                <button class=\"ozg-btn-sec\" onclick=\"ozgForceCloseCreation()\">Close anyway<\/button>\n                <button class=\"ozg-btn\" onclick=\"document.getElementById('ozgUnsavedWarnModal').style.display='none';\">Continue editing<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        lucide.createIcons();\n\n        \/\/ ==========================================\n        \/\/ GLOBAL CONSTANTS (Defined early for functions)\n        \/\/ ==========================================\n        const dbQuizScores = [];\n        const dbFocusAreas = [];\n        const kingdomStruct = {\"wisdom\":{\"name\":\"\\u0411\\u0430\\u0448\\u043d\\u044f \\u041f\\u0440\\u043e\\u0441\\u0432\\u0435\\u0449\\u0435\\u043d\\u0438\\u044f\",\"desc\":\"\\u041c\\u0443\\u0434\\u0440\\u043e\\u0441\\u0442\\u044c, \\u0443\\u043c \\u0438 \\u0437\\u043d\\u0430\\u043d\\u0438\\u0435\",\"icon\":\"scroll\",\"color\":\"#3b82f6\",\"areas\":{\"mindfulness\":\"\\u041e\\u0441\\u043e\\u0437\\u043d\\u0430\\u043d\\u043d\\u043e\\u0441\\u0442\\u044c\",\"intellect\":\"\\u0418\\u043d\\u0442\\u0435\\u043b\\u043b\\u0435\\u043a\\u0442\",\"skills\":\"\\u0416\\u0435\\u0441\\u0442\\u043a\\u0438\\u0435 \\u043d\\u0430\\u0432\\u044b\\u043a\\u0438\",\"leadership\":\"\\u041b\\u0438\\u0434\\u0435\\u0440\\u0441\\u0442\\u0432\\u043e\",\"creativity\":\"\\u0422\\u0432\\u043e\\u0440\\u0447\\u0435\\u0441\\u0442\\u0432\\u043e \\u0438 \\u0438\\u0441\\u043a\\u0443\\u0441\\u0441\\u0442\\u0432\\u043e\",\"vision\":\"\\u0421\\u0442\\u0440\\u0430\\u0442\\u0435\\u0433\\u0438\\u044f \\u0438 \\u0446\\u0435\\u043b\\u0438\"}},\"strength\":{\"name\":\"\\u0426\\u0438\\u0442\\u0430\\u0434\\u0435\\u043b\\u044c\",\"desc\":\"\\u0421\\u0438\\u043b\\u0430 \\u0442\\u0435\\u043b\\u0430, \\u044d\\u043d\\u0435\\u0440\\u0433\\u0438\\u044f \\u0438 \\u0434\\u0443\\u0445\",\"icon\":\"shield\",\"color\":\"#ef4444\",\"areas\":{\"health\":\"\\u0417\\u0434\\u043e\\u0440\\u043e\\u0432\\u044c\\u0435 \\u0438 \\u0438\\u043c\\u043c\\u0443\\u043d\\u0438\\u0442\\u0435\\u0442\",\"energy\":\"\\u0423\\u0440\\u043e\\u0432\\u0435\\u043d\\u044c \\u044d\\u043d\\u0435\\u0440\\u0433\\u0438\\u0438\",\"appearance\":\"\\u0412\\u043d\\u0435\\u0448\\u043d\\u0438\\u0439 \\u0432\\u0438\\u0434 \\u0438 \\u0441\\u0442\\u0438\\u043b\\u044c\",\"discipline\":\"\\u0414\\u0438\\u0441\\u0446\\u0438\\u043f\\u043b\\u0438\\u043d\\u0430 \\u0438 \\u0432\\u043e\\u043b\\u044f\",\"fitness\":\"\\u0424\\u0438\\u0442\\u043d\\u0435\\u0441 \\u0438 \\u0432\\u044b\\u043d\\u043e\\u0441\\u043b\\u0438\\u0432\\u043e\\u0441\\u0442\\u044c\",\"nutrition\":\"\\u041f\\u0438\\u0442\\u0430\\u043d\\u0438\\u0435 \\u0438 \\u0441\\u043e\\u043d\"}},\"wealth\":{\"name\":\"\\u041a\\u0430\\u0437\\u043d\\u0430\\u0447\\u0435\\u0439\\u0441\\u0442\\u0432\\u043e\",\"desc\":\"\\u0411\\u043e\\u0433\\u0430\\u0442\\u0441\\u0442\\u0432\\u043e, \\u0430\\u043a\\u0442\\u0438\\u0432\\u044b \\u0438 \\u0438\\u0437\\u043e\\u0431\\u0438\\u043b\\u0438\\u0435\",\"icon\":\"gem\",\"color\":\"#eab308\",\"areas\":{\"income\":\"\\u0410\\u043a\\u0442\\u0438\\u0432\\u043d\\u044b\\u0439 \\u0434\\u043e\\u0445\\u043e\\u0434\",\"investments\":\"\\u0418\\u043d\\u0432\\u0435\\u0441\\u0442\\u0438\\u0446\\u0438\\u0438\",\"assets\":\"\\u0421\\u043e\\u0437\\u0434\\u0430\\u043d\\u0438\\u0435 \\u0430\\u043a\\u0442\\u0438\\u0432\\u043e\\u0432\",\"savings\":\"\\u042d\\u043a\\u043e\\u043d\\u043e\\u043c\\u0438\\u044f\",\"business\":\"\\u0411\\u0438\\u0437\\u043d\\u0435\\u0441 \\u0438 \\u043f\\u0440\\u043e\\u0435\\u043a\\u0442\\u044b\",\"career\":\"\\u041a\\u0430\\u0440\\u044c\\u0435\\u0440\\u043d\\u044b\\u0439 \\u0440\\u043e\\u0441\\u0442\"}},\"balance\":{\"name\":\"\\u0421\\u0430\\u0434\\u044b \\u0413\\u0430\\u0440\\u043c\\u043e\\u043d\\u0438\\u0438\",\"desc\":\"\\u0411\\u0430\\u043b\\u0430\\u043d\\u0441, \\u044d\\u043c\\u043e\\u0446\\u0438\\u0438 \\u0438 \\u0441\\u0432\\u044f\\u0437\\u0438\",\"icon\":\"flower-2\",\"color\":\"#22c55e\",\"areas\":{\"family\":\"\\u0421\\u0435\\u043c\\u044c\\u044f \\u0438 \\u0440\\u043e\\u0434\\u043e\\u0441\\u043b\\u043e\\u0432\\u043d\\u0430\\u044f\",\"love\":\"\\u041e\\u0442\\u043d\\u043e\\u0448\\u0435\\u043d\\u0438\\u044f \\u0438 \\u043b\\u044e\\u0431\\u043e\\u0432\\u044c\",\"friends\":\"\\u0421\\u0440\\u0435\\u0434\\u0430 (\\u0441\\u0435\\u0442\\u0438)\",\"rest\":\"\\u041e\\u0442\\u0434\\u044b\\u0445 \\u0438 \\u043e\\u0431\\u0440\\u0430\\u0437 \\u0436\\u0438\\u0437\\u043d\\u0438\",\"emotions\":\"\\u042d\\u043c\\u043e\\u0446\\u0438\\u043e\\u043d\\u0430\\u043b\\u044c\\u043d\\u044b\\u0439 \\u0438\\u043d\\u0442\\u0435\\u043b\\u043b\\u0435\\u043a\\u0442\",\"spirituality\":\"\\u0414\\u0443\\u0445\\u043e\\u0432\\u043d\\u043e\\u0441\\u0442\\u044c \\u0438 \\u043c\\u0438\\u0440\"}}};\n        const nonce = 'f1ea31b34a';\n        const apiBase = 'https:\/\/hobbi.st\/ru\/wp-json\/ozgeris\/v1';\n        const ozgDashboardUrl = 'https:\/\/hobbi.st\/ru\/';\n        const EXPECTED_USER_ID = 0;\n        const EXPECTED_USER_NAME = '';\n\n        \/\/ ==========================================\n        \/\/ CACHE COLLISION VERIFICATION\n        \/\/ ==========================================\n        async function verifySessionAndFixCache() {\n            \/\/ Check if we are already in a nocache reload to prevent infinite loops\n            const urlParams = new URLSearchParams(window.location.search);\n            if (urlParams.has('ozg_retry')) return;\n\n            \/\/ Throttle session verification to once every 10 minutes (increased from 5)\n            const lastVerify = sessionStorage.getItem('ozg_last_verify');\n            const now = Date.now();\n            if (lastVerify && (now - parseInt(lastVerify)) < 600000) return;\n\n            try {\n                const resp = await fetch(apiBase + '\/me\/verify', {\n                    headers: { 'X-WP-Nonce': nonce }\n                });\n\n                if (!resp.ok) return; \/\/ Silent fail on API error to avoid loop\n\n                sessionStorage.setItem('ozg_last_verify', now);\n\n                const data = await resp.json();\n                const actualUserId = data.logged_in ? data.user_id : 0;\n\n                if (actualUserId !== EXPECTED_USER_ID) {\n                    console.warn('Cache collision or session change detected! Expected:', EXPECTED_USER_ID, 'Actual:', actualUserId);\n\n                    const currentUrl = new URL(window.location.href);\n                    currentUrl.searchParams.set('ozg_retry', Date.now());\n\n                    if (typeof showHeaderToast === 'function') {\n                        showHeaderToast('\u26a0\ufe0f Syncing your session...');\n                    }\n\n                    setTimeout(() => {\n                        window.location.href = currentUrl.toString();\n                    }, 300);\n                } else if (sessionStorage.getItem('ozg_login_token')) {\n                    \/\/ Fresh login via Telegram, offer browser sync\n                    const isMiniApp = (window.Telegram && window.Telegram.WebApp && window.Telegram.WebApp.platform && window.Telegram.WebApp.platform !== 'unknown');\n                    if (isMiniApp) {\n                        const token = sessionStorage.getItem('ozg_login_token');\n                        sessionStorage.removeItem('ozg_login_token');\n                        ozgShowBrowserSyncPrompt(token);\n                    }\n                }\n            } catch (e) {\n                console.error('Session verification failed:', e);\n            }\n        }\n\n        if (document.readyState === 'loading') {\n            document.addEventListener('DOMContentLoaded', verifySessionAndFixCache);\n        } else {\n            verifySessionAndFixCache();\n        }\n        \/\/ ==========================================\n        \/\/ END CACHE COLLISION VERIFICATION\n        \/\/ ==========================================\n\n        const ozgCreationConfigs = {\n            course: {\n                title: 'Create Hobbist Course',\n                icon: 'graduation-cap',\n                endpoint: `${apiBase}\/create\/course`,\n                fields: [\n                    { id:'title',       label:'Course Title',       type:'text',     required:true,  placeholder:'e.g. Watercolour for Beginners' },\n                    { id:'description', label:'Short Description',  type:'textarea', required:false, placeholder:'What will students learn?' },\n                    { id:'price',       label:'Price (0 = free)',   type:'number',   required:false, placeholder:'0' },\n                    { id:'category_id', label:'Category',           type:'select',   required:false, optionsApi:`${apiBase}\/tutor\/categories` },\n                ],\n                successAction: 'open_editor',\n                note: 'A draft course is created. After saving you can add lessons and lessons in the course builder.'\n            },\n            campaign: {\n                title: 'New Financing',\n                icon: 'heart-handshake',\n                endpoint: `${apiBase}\/create\/campaign`,\n                fields: [\n                    { id:'title',       label:'Campaign Title',     type:'text',     required:true,  placeholder:'e.g. Help build a community studio' },\n                    { id:'description', label:'Story',              type:'textarea', required:false, placeholder:'Describe your project\u2026' },\n                    { id:'goal',        label:'Funding Goal (\u20b8)',   type:'number',   required:false, placeholder:'e.g. 500000' },\n                    { id:'category_id', label:'Category',           type:'select',   required:false, optionsApi:`${apiBase}\/fundengine\/categories` },\n                    { id:'transfer_methods', label:'Transfer Methods', type:'checkboxes', required:false, options:[\n                        {id:'kaspi_payment', label:'Kaspi.kz', checked:true},\n                        {id:'halyk_payment', label:'Halyk Bank'},\n                        {id:'bank_payment', label:'Other Bank Transfer'},\n                        {id:'offline_payment', label:'Cash'}\n                    ]},\n                    { id:'kaspi_mobile', label:'Kaspi Mobile Number', type:'text', required:false, placeholder:'e.g. +7 707 ...' },\n                    { id:'kaspi_name',   label:'Kaspi Receiver Name', type:'text', required:false, placeholder:'e.g. IVAN I.' },\n                    { id:'halyk_mobile', label:'Halyk Mobile Number', type:'text', required:false, placeholder:'e.g. +7 701 ...' },\n                    { id:'halyk_name',   label:'Halyk Receiver Name', type:'text', required:false, placeholder:'e.g. IVAN I.' },\n                ],\n                successAction: 'open_editor',\n                note: 'Campaign will be published immediately. Use the Edit (pen) button in Management if you want to add more details or gallery items later.'\n            },\n            lesson: {\n                title: 'Add Lesson',\n                icon: 'play-circle',\n                endpoint: `${apiBase}\/create\/lesson`,\n                fields: [\n                    { id:'title',     label:'Lesson Title',         type:'text',     required:true,  placeholder:'e.g. Module 1 \u2014 Introduction' },\n                    { id:'course_id', label:'Attach to Course',     type:'select',   required:false, optionsApi:`${apiBase}\/tutor\/courses` },\n                    { id:'content',   label:'Lesson Content',       type:'textarea', required:false, placeholder:'Write the lesson text\u2026' },\n                    { id:'video_url', label:'Video\/Audio URL',      type:'url',      required:false, placeholder:'https:\/\/\u2026 (mp4, YouTube, etc)' },\n                ],\n                successAction: 'none',\n                note: 'Lesson is published immediately and attached to the selected course.'\n            },\n            product: {\n                title: 'Add Store Product',\n                icon: 'shopping-bag',\n                endpoint: `${apiBase}\/create\/product`,\n                fields: [\n                    { id:'title',       label:'Product Name',       type:'text',     required:true,  placeholder:'e.g. Premium Brush Set' },\n                    { id:'description', label:'Description',        type:'textarea', required:false, placeholder:'What is included?' },\n                    { id:'price',       label:'Price',              type:'number',   required:true,  placeholder:'e.g. 4990' },\n                    { id:'sku',         label:'SKU (optional)',     type:'text',     required:false, placeholder:'e.g. BRUSH-001' },\n                ],\n                successAction: 'open_editor',\n                note: 'WooCommerce product draft created.'\n            },\n            post: {\n                title: 'New Blog Post',\n                icon: 'pen-tool',\n                endpoint: `${apiBase}\/create\/post`,\n                fields: [\n                    { id:'title',   label:'Title',    type:'text',     required:true,  placeholder:'Post title' },\n                    { id:'content', label:'Content',  type:'textarea', required:false, placeholder:'Write your post\u2026' },\n                ],\n                successAction: 'open_editor'\n            },\n            page: {\n                title: 'New Page',\n                icon: 'file-text',\n                endpoint: `${apiBase}\/create\/page`,\n                fields: [\n                    { id:'title',   label:'Page Title', type:'text',     required:true,  placeholder:'Page title' },\n                    { id:'content', label:'Content',    type:'textarea', required:false, placeholder:'Page content\u2026' },\n                ],\n                successAction: 'open_editor'\n            },\n        };\n\n        const gpAjaxUrl = (typeof gamipressAjax !== 'undefined') ? gamipressAjax.ajaxurl : '';\n        const gpNonce = (typeof gamipressAjax !== 'undefined') ? gamipressAjax.nonce : '';\n        const gpUserId = 0;\n\n        const ozgI18n = {\n            isGuest: true,\n            maxSpheres: '\u041c\u0430\u043a\u0441\u0438\u043c\u0443\u043c 8 \u0437\u043e\u043d!',\n            alreadyHigh: '\u042d\u0442\u043e\u0442 \u0440\u0430\u0439\u043e\u043d \u0443\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0440\u0430\u0437\u0432\u0438\u0442. \u0412\u044b\u0431\u0438\u0440\u0430\u0439\u0442\u0435 \u0440\u0430\u0439\u043e\u043d\u044b \u0434\u043b\u044f \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u044f.',\n            saveSelection: '\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432\u044b\u0431\u043e\u0440',\n            confirmErase: '\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b? \u042d\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442 \u0432\u0430\u0448\u0438 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b.',\n            deleteQuestConfirm: '\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u044d\u0442\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u0435 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430? \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d.',\n            deleteConfirm: '\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c?',\n            enterTitleHabit: '\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0438 \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0443.',\n            errorConnection: '\u041e\u0448\u0438\u0431\u043a\u0430 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f',\n            selectQuest: '\u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435',\n            copyCreated: '\u041a\u043e\u043f\u0438\u044f \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432\u044b \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u0442\u0435 \u0447\u0443\u0436\u043e\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b.',\n            leaderboardSoon: '\u0424\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u0430 \u043b\u0438\u0434\u0435\u0440\u043e\u0432. \u0420\u0435\u0439\u0442\u0438\u043d\u0433\u0438 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0441\u043a\u043e\u0440\u043e \u043f\u043e\u044f\u0432\u044f\u0442\u0441\u044f \u0437\u0434\u0435\u0441\u044c!',\n            startTestConfirm: '\u041d\u0430\u0447\u0430\u0442\u044c \u0442\u0435\u0441\u0442',\n            enterJournalText: '\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0432\u043e\u0434\u0430',\n            milestoneCompletedLog: '\u0422\u043e\u043b\u044c\u043a\u043e \u0447\u0442\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u0432\u0430\u0436\u043d\u044b\u0439 \u044d\u0442\u0430\u043f',\n            myImpressions: '\u041c\u043e\u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u044f:',\n            notFound: '\u041d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e',\n            selected: '\u0412\u044b\u0431\u0440\u0430\u043d\u043e:',\n            noAvailableQuests: '\u041d\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439',\n            noHabits: '\u041d\u0435\u0442 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a',\n            noMilestones: '\u041d\u0435\u0442 \u044d\u0442\u0430\u043f\u043e\u0432',\n            habitTracker: '\u0422\u0440\u0435\u043a\u0435\u0440 \u043f\u0440\u0438\u0432\u044b\u0447\u0435\u043a',\n            habitNamePrompt: '\u0412\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u0440\u0430\u0442\u043a\u043e\u0435 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u043f\u0440\u0438\u0432\u044b\u0447\u043a\u0438:',\n            noPrograms: '\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u044b. \u0421\u043e\u0437\u0434\u0430\u0439\u0442\u0435 \u043d\u043e\u0432\u0443\u044e!',\n            habits: '\u041f\u0440\u0438\u0432\u044b\u0447\u043a\u0438',\n            milestones: '\u0412\u0430\u0436\u043d\u044b\u0435 \u044d\u0442\u0430\u043f\u044b',\n            addBtn: '\u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c',\n            loading: '\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...',\n            activeQuests: '\u0410\u043a\u0442\u0438\u0432\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u044f:',\n            noActiveQuests: '\u041d\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u043d\u0438\u0439',\n            hideTrack: '\u0421\u043a\u0440\u044b\u0442\u044c \u0442\u0440\u0435\u043a',\n            viewTrack: '\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0442\u0440\u0435\u043a',\n            edit: '\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c',\n            create: '\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c',\n            v_bal: '\u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0440\u0430\u0432\u043d\u043e\u0432\u0435\u0441\u0438\u0435 (\u0410\u0432\u0430\u0442\u0430\u0440). \u0412\u0430\u0448\u0435 \u043a\u043e\u0440\u043e\u043b\u0435\u0432\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e\u0439 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0438 \u0432\u043e \u0432\u0441\u0435\u0445 \u0447\u0435\u0442\u044b\u0440\u0435\u0445 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u0445. \u042d\u0442\u043e \u0441\u0430\u043c\u044b\u0439 \u0440\u0435\u0434\u043a\u0438\u0439 \u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u044b\u0439 \u043f\u0443\u0442\u044c.',\n            v_pure_w: '\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u041c\u0443\u0434\u0440\u0435\u0446. \u0412\u0430\u0448\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u043e \u043d\u0430 \u043f\u043e\u0437\u043d\u0430\u043d\u0438\u0438, \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0435 \u0438 \u0441\u043c\u044b\u0441\u043b\u0435. \u0412\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u0433\u0440\u0430\u043d\u0434\u0438\u043e\u0437\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043d\u0438\u0435.',\n            v_pure_s: '\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0442\u0438\u0442\u0430\u043d. \u0412\u044b \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0440\u0435\u0448\u0430\u044e\u0449\u0443\u044e \u0441\u0442\u0430\u0432\u043a\u0443 \u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0443\u044e \u0441\u0438\u043b\u0443, \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0443. \u0412\u0430\u0448\u0430 \u044d\u043d\u0435\u0440\u0433\u0438\u044f \u043d\u0435\u0441\u043e\u043a\u0440\u0443\u0448\u0438\u043c\u0430.',\n            v_pure_c: '\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u043c\u0430\u0433\u043d\u0430\u0442. \u041f\u043e\u043b\u043d\u0430\u044f \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0435, \u0431\u0438\u0437\u043d\u0435\u0441\u0435 \u0438 \u043a\u0430\u0440\u044c\u0435\u0440\u0435. \u0412\u044b \u0441\u0442\u0440\u043e\u0438\u0442\u0435 \u043d\u0435\u043f\u043e\u043a\u043e\u043b\u0435\u0431\u0438\u043c\u0443\u044e \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u0443\u044e \u0438\u043c\u043f\u0435\u0440\u0438\u044e.',\n            v_pure_b: '\u0410\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0439 \u0426\u0435\u043b\u0438\u0442\u0435\u043b\u044c. \u0412\u0430\u0448 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0433\u043b\u0443\u0431\u043e\u043a\u0430\u044f \u0434\u0443\u0445\u043e\u0432\u043d\u0430\u044f \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u044f, \u0441\u0435\u043c\u044c\u044f \u0438 \u044d\u043c\u043e\u0446\u0438\u0438. \u0412\u044b \u2014 \u043e\u0441\u043d\u043e\u0432\u0430 \u0432\u0430\u0448\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.',\n            v_dom_w_s: '\u041f\u0443\u0442\u044c \u0422\u0430\u043a\u0442\u0438\u043a\u0430 (\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c + \u0421\u0438\u043b\u0430). \u0418\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u043e\u0439 \u0438 \u0432\u044b\u043d\u043e\u0441\u043b\u0438\u0432\u043e\u0441\u0442\u044c\u044e. \u0412\u044b \u2014 \u0441\u0442\u0440\u0430\u0442\u0435\u0433, \u0437\u043d\u0430\u044e\u0449\u0438\u0439, \u043a\u0430\u043a \u0434\u0435\u0439\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c.',\n            v_dom_w_c: '\u041f\u0443\u0442\u044c \u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u043e\u0440\u0430 (\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c + \u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e). \u0412\u044b \u043c\u043e\u043d\u0435\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0435 \u0441\u0432\u043e\u0438 \u0437\u043d\u0430\u043d\u0438\u044f. \u041e\u0441\u0442\u0440\u044b\u0439 \u0443\u043c \u0438 \u0446\u0435\u043b\u0435\u0443\u0441\u0442\u0440\u0435\u043c\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043c\u043e\u0449\u043d\u044b\u0435 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u0438.',\n            v_dom_w_b: '\u041f\u0443\u0442\u044c \u041f\u0440\u043e\u0441\u0432\u0435\u0442\u0438\u0442\u0435\u043b\u044f (\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c + \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f). \u0413\u043b\u0443\u0431\u043e\u043a\u0438\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0438 \u0441 \u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u043e\u043c. \u0412\u044b \u2014 \u043d\u0430\u0441\u0442\u0430\u0432\u043d\u0438\u043a \u0438 \u043b\u0438\u0434\u0435\u0440 \u043c\u043d\u0435\u043d\u0438\u0439.',\n            v_dom_s_w: '\u041f\u0443\u0442\u044c \u0430\u0441\u043a\u0435\u0442\u0430 (\u0421\u0438\u043b\u0430 + \u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c). \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u0432\u0430\u0448 \u0440\u0430\u0437\u0443\u043c. \u0417\u0434\u043e\u0440\u043e\u0432\u043e\u0435 \u0442\u0435\u043b\u043e \u043f\u043e\u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u0431\u043b\u0435\u0441\u0442\u044f\u0449\u0438\u0435 \u0438\u0434\u0435\u0438.',\n            v_dom_s_c: '\u041f\u0443\u0442\u044c \u0417\u0430\u0432\u043e\u0435\u0432\u0430\u0442\u0435\u043b\u044f (\u0421\u0438\u043b\u0430 + \u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e). \u0411\u0435\u0437\u0433\u0440\u0430\u043d\u0438\u0447\u043d\u0430\u044f \u044d\u043d\u0435\u0440\u0433\u0438\u044f, \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u043d\u0430 \u0437\u0430\u0432\u043e\u0435\u0432\u0430\u043d\u0438\u0435 \u0440\u044b\u043d\u043a\u043e\u0432 \u0438 \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u0445\u043e\u0434\u043e\u0432. \u0413\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0442\u044c \u043e\u0442\u0434\u044b\u0445\u0430\u0442\u044c.',\n            v_dom_s_b: '\u041f\u0443\u0442\u044c \u0417\u0430\u0449\u0438\u0442\u043d\u0438\u043a\u0430 (\u0421\u0438\u043b\u0430 + \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f). \u0412\u044b \u0441\u0438\u043b\u044c\u043d\u044b \u0442\u0435\u043b\u043e\u043c, \u043d\u043e \u0434\u043e\u0431\u0440\u044b \u0441\u0435\u0440\u0434\u0446\u0435\u043c. \u0412\u0430\u0448\u0430 \u0441\u0438\u043b\u0430 \u0441\u043b\u0443\u0436\u0438\u0442 \u043e\u043f\u043e\u0440\u043e\u0439 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0439 \u0441\u0435\u043c\u044c\u0438 \u0438 \u0431\u043b\u0438\u0437\u043a\u0438\u0445.',\n            v_dom_c_w: '\u041f\u0443\u0442\u044c \u0412\u0438\u0437\u0438\u043e\u043d\u0435\u0440\u0430 (\u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e + \u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c). \u0412\u044b \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u0435\u0442\u0435 \u043a\u0430\u043f\u0438\u0442\u0430\u043b \u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u043e\u043c \u0437\u043d\u0430\u043d\u0438\u0439 \u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439. \u0418\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u0437\u043d\u0435\u0441 \u2014 \u0432\u0430\u0448\u0430 \u0441\u0443\u043f\u0435\u0440\u0441\u0438\u043b\u0430.',\n            v_dom_c_s: '\u041f\u0443\u0442\u044c \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 (\u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e + \u0421\u0438\u043b\u0430). \u041d\u0435\u0443\u0442\u043e\u043c\u0438\u043c\u044b\u0439 \u0442\u0440\u0443\u0434 \u0438 \u0436\u0435\u043b\u0435\u0437\u043d\u0430\u044f \u0445\u0432\u0430\u0442\u043a\u0430. \u0412\u044b \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0435 \u0441\u0432\u043e\u0451 \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u0440\u0435\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0434\u0438\u0441\u0446\u0438\u043f\u043b\u0438\u043d\u0435.',\n            v_dom_c_b: '\u041f\u0443\u0442\u044c \u041f\u043e\u043a\u0440\u043e\u0432\u0438\u0442\u0435\u043b\u044f (\u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e + \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f). \u0424\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0439 \u0443\u0441\u043f\u0435\u0445 \u0434\u043b\u044f \u0432\u0430\u0441 \u2014 \u044d\u0442\u043e \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u0430, \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0435\u043c\u044c\u0435 \u0438 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0433\u043e \u043c\u0438\u0440\u0430.',\n            v_dom_b_w: '\u041f\u0443\u0442\u044c \u041e\u0440\u0430\u043a\u0443\u043b\u0430 (\u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f + \u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c). \u0422\u043e\u043d\u043a\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u043c\u0438\u0440\u0430, \u043f\u043e\u0434\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u043d\u0438\u044f\u043c\u0438. \u0412\u044b \u2014 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u044d\u043c\u043f\u0430\u0442 \u0438 \u0430\u043d\u0430\u043b\u0438\u0442\u0438\u043a \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0445 \u0434\u0443\u0448.',\n            v_dom_b_s: '\u041f\u0443\u0442\u044c \u041f\u0430\u043b\u0430\u0434\u0438\u043d\u0430 (\u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f + \u0421\u0438\u043b\u0430). \u0412\u0430\u0448\u0430 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u0430 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0438\u043b\u043e\u0439. \u0412\u044b \u043d\u0435\u043f\u043e\u043a\u043e\u043b\u0435\u0431\u0438\u043c\u044b \u0432 \u0441\u0432\u043e\u0438\u0445 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445.',\n            v_dom_b_c: '\u041f\u0443\u0442\u044c \u0414\u0438\u043f\u043b\u043e\u043c\u0430\u0442\u0430 (\u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f + \u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e). \u0412\u044b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0435\u0441\u044c \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u0432\u044f\u0437\u044f\u043c, \u043d\u0430\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u044e \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432 \u0438 \u044d\u043c\u043e\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443. \u0412\u0430\u0448 \u0441\u043e\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u043f\u0438\u0442\u0430\u043b \u0440\u0430\u0432\u0435\u043d \u0432\u0430\u0448\u0435\u043c\u0443 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u043e\u043c\u0443 \u043a\u0430\u043f\u0438\u0442\u0430\u043b\u0443.',\n            v_dual_w_s: '\u0411\u043e\u0435\u0432\u043e\u0439 \u043c\u0430\u0433 (\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c \u0438 \u0421\u0438\u043b\u0430). \u0418\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0442\u0435\u043b\u0430 \u0438 \u0440\u0430\u0437\u0443\u043c\u0430. \u0412\u044b \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0441\u0438\u043b\u044c\u043d\u044b \u043a\u0430\u043a \u0432 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438, \u0442\u0430\u043a \u0438 \u0432 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.',\n            v_dual_w_c: '\u041c\u0430\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u043e (\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c \u0438 \u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e). \u0412\u044b \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u043a\u0438 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u0442\u0435 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u043f\u0438\u0442\u0430\u043b \u0432 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0431\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e. \u041d\u0430\u0443\u043a\u0430 \u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0438\u0434\u0443\u0442 \u0440\u0443\u043a\u0430 \u043e\u0431 \u0440\u0443\u043a\u0443.',\n            v_dual_w_b: '\u0410\u043b\u0445\u0438\u043c\u0438\u043a (\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c \u0438 \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f). \u0412\u044b \u0438\u0449\u0435\u0442\u0435 \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0441\u043a\u0438\u0439 \u043a\u0430\u043c\u0435\u043d\u044c: \u0431\u0430\u043b\u0430\u043d\u0441 \u043c\u0435\u0436\u0434\u0443 \u043e\u0441\u0442\u0440\u044b\u043c \u0443\u043c\u043e\u043c \u0438 \u0434\u0443\u0448\u0435\u0432\u043d\u044b\u043c \u043f\u043e\u043a\u043e\u0435\u043c.',\n            v_dual_s_c: '\u0412\u043e\u0435\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0438\u043a (\u0421\u0438\u043b\u0430 \u0438 \u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e). \u041c\u043e\u0449\u043d\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0430\u043d\u0441\u0438\u0438. \u0412\u0430\u0448\u0430 \u0432\u044b\u043d\u043e\u0441\u043b\u0438\u0432\u043e\u0441\u0442\u044c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0432\u0430\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u044b\u0435 \u0430\u043a\u0442\u0438\u0432\u044b.',\n            v_dual_s_b: '\u0421\u0442\u0440\u0430\u0436 (\u0421\u0438\u043b\u0430 \u0438 \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f). \u0424\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u0434\u0443\u0445\u043e\u0432\u043d\u043e\u0435 \u0441\u043f\u043e\u043a\u043e\u0439\u0441\u0442\u0432\u0438\u0435. \u0412\u044b \u043f\u043e\u0434\u043e\u0431\u043d\u044b \u0441\u043a\u0430\u043b\u0435, \u043e \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0440\u0430\u0437\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u044e\u0431\u043e\u0435 \u043d\u0430\u043f\u0440\u044f\u0436\u0435\u043d\u0438\u0435.',\n            v_dual_c_b: '\u0413\u043b\u0430\u0432\u0430 \u0433\u0438\u043b\u044c\u0434\u0438\u0438 (\u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e \u0438 \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u044f). \u0412\u044b \u0437\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0434\u0435\u043d\u044c\u0433\u0438, \u043d\u0435 \u0442\u0435\u0440\u044f\u044f \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0442\u0435\u043f\u043b\u043e\u0442\u044b \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0439 \u0438 \u0440\u0430\u0434\u043e\u0441\u0442\u0438 \u0436\u0438\u0437\u043d\u0438.',\n            v_mix: '\u041f\u0443\u0442\u044c \u0418\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u0412\u044b \u0432\u044b\u0431\u0440\u0430\u043b\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0444\u0435\u0440, \u043d\u0435 \u043e\u0442\u0434\u0430\u0432\u0430\u044f \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0435\u043d\u0438\u044f \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043d\u0438\u0445. \u0412\u0430\u0448 \u043f\u0443\u0442\u044c \u2014 \u044d\u0442\u043e \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c.',\n            w_wisdom: '\u0417\u043e\u043d\u0430 \u0440\u043e\u0441\u0442\u0430: \u0411\u0430\u0448\u043d\u044f \u041f\u0440\u043e\u0441\u0432\u0435\u0449\u0435\u043d\u0438\u044f. \u0412\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u0434\u0435\u043b\u0430, \u043d\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u0432\u0430\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438 \u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439. \u041c\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u043c \u043a\u0443\u0440\u0441\u044b \u043f\u043e \u043b\u0438\u0434\u0435\u0440\u0441\u0442\u0432\u0443 \u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0438.',\n            w_strength: '\u0417\u043e\u043d\u0430 \u0440\u043e\u0441\u0442\u0430: \u0426\u0438\u0442\u0430\u0434\u0435\u043b\u044c. \u0412\u044b \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u044b, \u043d\u043e \u0432\u0430\u0448\u0435 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u0435 \u0438 \u044d\u043d\u0435\u0440\u0433\u0438\u044f \u043d\u0443\u0436\u0434\u0430\u044e\u0442\u0441\u044f \u0432 \u0443\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0438. \u0411\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c. \u041d\u0430\u0447\u043d\u0438\u0442\u0435 \u0441 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u043b\u0430\u043d\u0430 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u043a.',\n            w_wealth: '\u0417\u043e\u043d\u0430 \u0440\u043e\u0441\u0442\u0430: \u041a\u0430\u0437\u043d\u0430\u0447\u0435\u0439\u0441\u0442\u0432\u043e. \u0412\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0435\u0441\u044c \u0432 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0438 \u0441 \u0441\u043e\u0431\u043e\u0439, \u043d\u043e \u0432\u0430\u0448\u0438 \u0430\u043a\u0442\u0438\u0432\u044b \u043e\u0442\u0441\u0442\u0430\u044e\u0442. \u041f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u043e\u043d\u0435\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0430\u0432\u044b\u043a\u0438 \u0438 \u043f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0434\u043e\u0445\u043e\u0434\u0430. \u0421\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u044c\u0442\u0435\u0441\u044c \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u0430\u0445.',\n            w_balance: '\u0417\u043e\u043d\u0430 \u0440\u043e\u0441\u0442\u0430: \u0421\u0430\u0434\u044b \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u0438. \u0412\u044b \u0432 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0435\u043d\u044b \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430\u0445, \u043d\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0440\u0438\u0441\u043a \u0432\u044b\u0433\u043e\u0440\u0430\u043d\u0438\u044f. \u0421\u0430\u0434\u0430\u043c \u0413\u0430\u0440\u043c\u043e\u043d\u0438\u0438 \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u0438\u0432. \u0418\u0441\u043a\u0443\u0441\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0432\u0430\u0448 \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0434\u043d\u044f \u043e\u0442\u0434\u044b\u0445 \u0438 \u043d\u0430\u043b\u0430\u0436\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u0432\u044f\u0437\u0435\u0439.'\n        };\n\n        let allProgramsList = [{\"ID\":16825,\"post_author\":\"1\",\"post_date\":\"2026-08-23 15:21:57\",\"post_date_gmt\":\"2026-08-23 10:21:57\",\"post_content\":\"\",\"post_title\":\"green course\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"green-course\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-08-23 15:21:57\",\"post_modified_gmt\":\"2026-08-23 10:21:57\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/lhobbist\\\/courses\\\/green-course\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16819,\"post_author\":\"1\",\"post_date\":\"2026-08-20 12:58:06\",\"post_date_gmt\":\"2026-08-20 07:58:06\",\"post_content\":\"\",\"post_title\":\"construct new building\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"construct-new-building\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-08-20 12:58:06\",\"post_modified_gmt\":\"2026-08-20 07:58:06\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/lhobbist\\\/courses\\\/construct-new-building\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16810,\"post_author\":\"4\",\"post_date\":\"2026-08-19 09:33:22\",\"post_date_gmt\":\"2026-08-19 04:33:22\",\"post_content\":\"\",\"post_title\":\"Waterhouse construction\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"waterhouse-construction\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-08-19 09:33:22\",\"post_modified_gmt\":\"2026-08-19 04:33:22\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/lhobbist\\\/courses\\\/waterhouse-construction\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":15257,\"post_author\":\"2\",\"post_date\":\"2026-07-07 04:28:59\",\"post_date_gmt\":\"2026-07-06 23:28:59\",\"post_content\":\"<blockquote><p><mark class=\\\"HxTRcb\\\" data-sfc-root=\\\"c\\\" data-sfc-cb=\\\"\\\" data-processed=\\\"true\\\"><strong class=\\\"Yjhzub\\\" data-sfc-root=\\\"c\\\" data-sfc-cb=\\\"\\\" data-processed=\\\"true\\\">\\u0627\\u0644\\u0633\\u064e\\u0651\\u0644\\u0627\\u064e\\u0645\\u064f \\u0639\\u064e\\u0644\\u064e\\u064a\\u0652\\u0643\\u064f\\u0645\\u0652 \\u0648\\u064e\\u0631\\u064e\\u062d\\u0652\\u0645\\u064e\\u0629\\u064f \\u0627\\u0644\\u0644\\u0647\\u0650 \\u0648\\u064e\\u0628\\u064e\\u0631\\u064e\\u0643\\u064e\\u0627\\u062a\\u064f\\u0647\\u064f<\\\/strong><\\\/mark><span class=\\\"uJ19be notranslate\\\" data-sfc-root=\\\"c\\\" data-wiz-uids=\\\"AelgM_i,AelgM_j\\\" data-sfc-cb=\\\"\\\" data-processed=\\\"true\\\"><span class=\\\"vKEkVd\\\" data-animation-atomic=\\\"\\\" data-wiz-attrbind=\\\"class=AelgM_h\\\/TKHnVd\\\" data-processed=\\\"true\\\"><span aria-hidden=\\\"true\\\" data-processed=\\\"true\\\">\\u00a0<\\\/span><\\\/span><\\\/span><\\\/p><\\\/blockquote><p>The Holy Qoran for systematic reading as in person and\\\/or in groups. Please use following table\\u00a0<a href=\\\"https:\\\/\\\/t.me\\\/Hobbistbot\\\/khatm?startapp\\\">The Khatm Table<\\\/a><\\\/p>\",\"post_title\":\"The Holy Quran (Arabic)\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"the-holy-quran-arabic\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-07-07 04:29:03\",\"post_modified_gmt\":\"2026-07-06 23:29:03\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/the-holy-quran-arabic\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"1\",\"filter\":\"raw\"},{\"ID\":16784,\"post_author\":\"1\",\"post_date\":\"2026-06-11 11:12:53\",\"post_date_gmt\":\"2026-06-11 06:12:53\",\"post_content\":\"\",\"post_title\":\"Watching the game\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"watching-the-game\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-06-11 11:12:53\",\"post_modified_gmt\":\"2026-06-11 06:12:53\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/watching-the-game\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16781,\"post_author\":\"1\",\"post_date\":\"2026-06-11 10:19:51\",\"post_date_gmt\":\"2026-06-11 05:19:51\",\"post_content\":\"\",\"post_title\":\"Watermelon and lemon\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"watermelon-and-lemon\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-06-11 10:19:57\",\"post_modified_gmt\":\"2026-06-11 05:19:57\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/watermelon-and-lemon\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16778,\"post_author\":\"1\",\"post_date\":\"2026-06-08 19:23:22\",\"post_date_gmt\":\"2026-06-08 14:23:22\",\"post_content\":\"\",\"post_title\":\"Drafting the first round\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"drafting-the-first-round\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-06-08 19:23:22\",\"post_modified_gmt\":\"2026-06-08 14:23:22\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/drafting-the-first-round\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16777,\"post_author\":\"1\",\"post_date\":\"2026-06-08 19:22:32\",\"post_date_gmt\":\"2026-06-08 14:22:32\",\"post_content\":\"\",\"post_title\":\"How many times\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"how-many-times\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-06-08 19:22:32\",\"post_modified_gmt\":\"2026-06-08 14:22:32\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/how-many-times\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16773,\"post_author\":\"1\",\"post_date\":\"2026-06-08 14:59:02\",\"post_date_gmt\":\"2026-06-08 09:59:02\",\"post_content\":\"\",\"post_title\":\"Sunderland was working\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"sunderland-was-working\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-06-08 14:59:02\",\"post_modified_gmt\":\"2026-06-08 09:59:02\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/sunderland-was-working\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16730,\"post_author\":\"1\",\"post_date\":\"2026-05-26 20:11:30\",\"post_date_gmt\":\"2026-05-26 15:11:30\",\"post_content\":\"\",\"post_title\":\"\\u049a\\u043e\\u0439 \\u0441\\u043e\\u044e\\u0434\\u0430\\u043d \\u0441\\u0430\\u0431\\u0430\\u049b\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d2%9b%d0%be%d0%b9-%d1%81%d0%be%d1%8e%d0%b4%d0%b0%d0%bd-%d1%81%d0%b0%d0%b1%d0%b0%d2%9b\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-05-26 20:11:33\",\"post_modified_gmt\":\"2026-05-26 15:11:33\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/%d2%9b%d0%be%d0%b9-%d1%81%d0%be%d1%8e%d0%b4%d0%b0%d0%bd-%d1%81%d0%b0%d0%b1%d0%b0%d2%9b\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16727,\"post_author\":\"1\",\"post_date\":\"2026-05-26 04:38:21\",\"post_date_gmt\":\"2026-05-25 23:38:21\",\"post_content\":\"\",\"post_title\":\"Intermediate\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"intermediate\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-05-26 04:38:23\",\"post_modified_gmt\":\"2026-05-25 23:38:23\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/ru\\\/courses\\\/intermediate\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16726,\"post_author\":\"1\",\"post_date\":\"2026-05-26 04:34:25\",\"post_date_gmt\":\"2026-05-25 23:34:25\",\"post_content\":\"\",\"post_title\":\"Beginners\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"beginners\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-05-26 04:34:25\",\"post_modified_gmt\":\"2026-05-25 23:34:25\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/ru\\\/courses\\\/beginners\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16685,\"post_author\":\"1\",\"post_date\":\"2026-04-29 11:38:42\",\"post_date_gmt\":\"2026-04-29 06:38:42\",\"post_content\":\"\",\"post_title\":\"\\u041c\\u0430\\u0441\\u0442\\u0435\\u0440\\u043c\\u0430\\u0439\\u043d\\u0434: \\u041a\\u0430\\u043a \\u0441\\u043e\\u0437\\u0434\\u0430\\u0442\\u044c \\u0441\\u0432\\u043e\\u044e \\u043c\\u043e\\u0449\\u044c \\u0441\\u0442\\u0430\\u044e\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d0%bc%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%bc%d0%b0%d0%b9%d0%bd%d0%b4-%d0%ba%d0%b0%d0%ba-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-%d1%81%d0%b2%d0%be%d1%8e-%d0%bc%d0%be%d1%89%d1%8c-%d1%81%d1%82%d0%b0\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-29 11:38:44\",\"post_modified_gmt\":\"2026-04-29 06:38:44\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"https:\\\/\\\/hobbi.st\\\/courses\\\/%d0%bc%d0%b0%d1%81%d1%82%d0%b5%d1%80%d0%bc%d0%b0%d0%b9%d0%bd%d0%b4-%d0%ba%d0%b0%d0%ba-%d1%81%d0%be%d0%b7%d0%b4%d0%b0%d1%82%d1%8c-%d1%81%d0%b2%d0%be%d1%8e-%d0%bc%d0%be%d1%89%d1%8c-%d1%81%d1%82%d0%b0\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16314,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:32\",\"post_date_gmt\":\"2026-04-08 06:48:32\",\"post_content\":\"\",\"post_title\":\"Ozgeris Uztazy: \\u0418\\u0441\\u043a\\u0443\\u0441\\u0441\\u0442\\u0432\\u043e \\u041a\\u043e\\u0443\\u0447\\u0438\\u043d\\u0433\\u0430\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"ozgeris-uztazy-%d0%b8%d1%81%d0%ba%d1%83%d1%81%d1%81%d1%82%d0%b2%d0%be-%d0%ba%d0%be%d1%83%d1%87%d0%b8%d0%bd%d0%b3%d0%b0\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:32\",\"post_modified_gmt\":\"2026-04-08 06:48:32\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/ozgeris-uztazy-%d0%b8%d1%81%d0%ba%d1%83%d1%81%d1%81%d1%82%d0%b2%d0%be-%d0%ba%d0%be%d1%83%d1%87%d0%b8%d0%bd%d0%b3%d0%b0\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16310,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:32\",\"post_date_gmt\":\"2026-04-08 06:48:32\",\"post_content\":\"\",\"post_title\":\"\\u0413\\u0440\\u0430\\u043d\\u0434-\\u0410\\u0443\\u0434\\u0438\\u0442 \\u041a\\u043e\\u0440\\u043e\\u043b\\u0435\\u0432\\u0441\\u0442\\u0432\\u0430: \\u041f\\u0435\\u0440\\u0435\\u043f\\u0440\\u043e\\u0448\\u0438\\u0432\\u043a\\u0430\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d0%b3%d1%80%d0%b0%d0%bd%d0%b4-%d0%b0%d1%83%d0%b4%d0%b8%d1%82-%d0%ba%d0%be%d1%80%d0%be%d0%bb%d0%b5%d0%b2%d1%81%d1%82%d0%b2%d0%b0-%d0%bf%d0%b5%d1%80%d0%b5%d0%bf%d1%80%d0%be%d1%88%d0%b8%d0%b2%d0%ba\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:32\",\"post_modified_gmt\":\"2026-04-08 06:48:32\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/%d0%b3%d1%80%d0%b0%d0%bd%d0%b4-%d0%b0%d1%83%d0%b4%d0%b8%d1%82-%d0%ba%d0%be%d1%80%d0%be%d0%bb%d0%b5%d0%b2%d1%81%d1%82%d0%b2%d0%b0-%d0%bf%d0%b5%d1%80%d0%b5%d0%bf%d1%80%d0%be%d1%88%d0%b8%d0%b2%d0%ba\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16305,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:31\",\"post_date_gmt\":\"2026-04-08 06:48:31\",\"post_content\":\"\",\"post_title\":\"\\u0424\\u0438\\u043b\\u043e\\u0441\\u043e\\u0444\\u0438\\u044f \\u0421\\u0442\\u043e\\u0438\\u0446\\u0438\\u0437\\u043c\\u0430 \\u0432 \\u0441\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u043e\\u043c \\u0431\\u044b\\u0442\\u0443\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d1%84%d0%b8%d0%bb%d0%be%d1%81%d0%be%d1%84%d0%b8%d1%8f-%d1%81%d1%82%d0%be%d0%b8%d1%86%d0%b8%d0%b7%d0%bc%d0%b0-%d0%b2-%d1%81%d0%be%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%bc-%d0%b1%d1%8b\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:31\",\"post_modified_gmt\":\"2026-04-08 06:48:31\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/%d1%84%d0%b8%d0%bb%d0%be%d1%81%d0%be%d1%84%d0%b8%d1%8f-%d1%81%d1%82%d0%be%d0%b8%d1%86%d0%b8%d0%b7%d0%bc%d0%b0-%d0%b2-%d1%81%d0%be%d0%b2%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%bc-%d0%b1%d1%8b\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16301,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:31\",\"post_date_gmt\":\"2026-04-08 06:48:31\",\"post_content\":\"\",\"post_title\":\"\\u0421\\u043c\\u044b\\u0441\\u043b \\u0438 \\u0426\\u0435\\u043d\\u043d\\u043e\\u0441\\u0442\\u0438 (\\u041b\\u043e\\u0433\\u043e\\u0442\\u0435\\u0440\\u0430\\u043f\\u0438\\u044f \\u0424\\u0440\\u0430\\u043d\\u043a\\u043b\\u0430)\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d1%81%d0%bc%d1%8b%d1%81%d0%bb-%d0%b8-%d1%86%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%bb%d0%be%d0%b3%d0%be%d1%82%d0%b5%d1%80%d0%b0%d0%bf%d0%b8%d1%8f-%d1%84%d1%80%d0%b0%d0%bd%d0%ba%d0%bb%d0%b0\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:31\",\"post_modified_gmt\":\"2026-04-08 06:48:31\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/%d1%81%d0%bc%d1%8b%d1%81%d0%bb-%d0%b8-%d1%86%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%bb%d0%be%d0%b3%d0%be%d1%82%d0%b5%d1%80%d0%b0%d0%bf%d0%b8%d1%8f-%d1%84%d1%80%d0%b0%d0%bd%d0%ba%d0%bb%d0%b0\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16297,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:31\",\"post_date_gmt\":\"2026-04-08 06:48:31\",\"post_content\":\"\",\"post_title\":\"\\u0418\\u0441\\u043a\\u0443\\u0441\\u0441\\u0442\\u0432\\u043e \\u042d\\u043c\\u043f\\u0430\\u0442\\u0438\\u0438: \\u041a\\u0430\\u043a \\u043f\\u043e\\u043d\\u0438\\u043c\\u0430\\u0442\\u044c \\u043b\\u044e\\u0434\\u0435\\u0439\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d0%b8%d1%81%d0%ba%d1%83%d1%81%d1%81%d1%82%d0%b2%d0%be-%d1%8d%d0%bc%d0%bf%d0%b0%d1%82%d0%b8%d0%b8-%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d1%8c-%d0%bb%d1%8e%d0%b4%d0%b5%d0%b9\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:31\",\"post_modified_gmt\":\"2026-04-08 06:48:31\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/%d0%b8%d1%81%d0%ba%d1%83%d1%81%d1%81%d1%82%d0%b2%d0%be-%d1%8d%d0%bc%d0%bf%d0%b0%d1%82%d0%b8%d0%b8-%d0%ba%d0%b0%d0%ba-%d0%bf%d0%be%d0%bd%d0%b8%d0%bc%d0%b0%d1%82%d1%8c-%d0%bb%d1%8e%d0%b4%d0%b5%d0%b9\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16292,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:31\",\"post_date_gmt\":\"2026-04-08 06:48:31\",\"post_content\":\"\",\"post_title\":\"EQ: \\u0423\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u0442\\u0440\\u0435\\u0432\\u043e\\u0433\\u043e\\u0439 \\u0438 \\u0433\\u043d\\u0435\\u0432\\u043e\\u043c\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"eq-%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%82%d1%80%d0%b5%d0%b2%d0%be%d0%b3%d0%be%d0%b9-%d0%b8-%d0%b3%d0%bd%d0%b5%d0%b2%d0%be%d0%bc\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:31\",\"post_modified_gmt\":\"2026-04-08 06:48:31\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/eq-%d1%83%d0%bf%d1%80%d0%b0%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d0%b5-%d1%82%d1%80%d0%b5%d0%b2%d0%be%d0%b3%d0%be%d0%b9-%d0%b8-%d0%b3%d0%bd%d0%b5%d0%b2%d0%be%d0%bc\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"},{\"ID\":16287,\"post_author\":\"2\",\"post_date\":\"2026-04-08 11:48:31\",\"post_date_gmt\":\"2026-04-08 06:48:31\",\"post_content\":\"\",\"post_title\":\"\\u0413\\u0435\\u0439\\u043c\\u0438\\u0444\\u0438\\u043a\\u0430\\u0446\\u0438\\u044f \\u0440\\u0443\\u0442\\u0438\\u043d\\u044b: \\u0416\\u0438\\u0437\\u043d\\u044c \\u043a\\u0430\\u043a \\u043f\\u0440\\u0438\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u0435\",\"post_excerpt\":\"\",\"post_status\":\"publish\",\"comment_status\":\"closed\",\"ping_status\":\"closed\",\"post_password\":\"\",\"post_name\":\"%d0%b3%d0%b5%d0%b9%d0%bc%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d1%80%d1%83%d1%82%d0%b8%d0%bd%d1%8b-%d0%b6%d0%b8%d0%b7%d0%bd%d1%8c-%d0%ba%d0%b0%d0%ba-%d0%bf%d1%80%d0%b8%d0%ba%d0%bb%d1%8e\",\"to_ping\":\"\",\"pinged\":\"\",\"post_modified\":\"2026-04-08 11:48:31\",\"post_modified_gmt\":\"2026-04-08 06:48:31\",\"post_content_filtered\":\"\",\"post_parent\":0,\"guid\":\"http:\\\/\\\/hobbi.st\\\/courses\\\/%d0%b3%d0%b5%d0%b9%d0%bc%d0%b8%d1%84%d0%b8%d0%ba%d0%b0%d1%86%d0%b8%d1%8f-%d1%80%d1%83%d1%82%d0%b8%d0%bd%d1%8b-%d0%b6%d0%b8%d0%b7%d0%bd%d1%8c-%d0%ba%d0%b0%d0%ba-%d0%bf%d1%80%d0%b8%d0%ba%d0%bb%d1%8e\\\/\",\"menu_order\":0,\"post_type\":\"courses\",\"post_mime_type\":\"\",\"comment_count\":\"0\",\"filter\":\"raw\"}];\n        const programsWithMeta = [{\"ID\":16825,\"post_title\":\"green course\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16819,\"post_title\":\"construct new building\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16810,\"post_title\":\"Waterhouse construction\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":15257,\"post_title\":\"The Holy Quran (Arabic)\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16784,\"post_title\":\"Watching the game\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16781,\"post_title\":\"Watermelon and lemon\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16778,\"post_title\":\"Drafting the first round\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16777,\"post_title\":\"How many times\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16773,\"post_title\":\"Sunderland was working\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16730,\"post_title\":\"\\u049a\\u043e\\u0439 \\u0441\\u043e\\u044e\\u0434\\u0430\\u043d \\u0441\\u0430\\u0431\\u0430\\u049b\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16727,\"post_title\":\"Intermediate\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16726,\"post_title\":\"Beginners\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16685,\"post_title\":\"\\u041c\\u0430\\u0441\\u0442\\u0435\\u0440\\u043c\\u0430\\u0439\\u043d\\u0434: \\u041a\\u0430\\u043a \\u0441\\u043e\\u0437\\u0434\\u0430\\u0442\\u044c \\u0441\\u0432\\u043e\\u044e \\u043c\\u043e\\u0449\\u044c \\u0441\\u0442\\u0430\\u044e\",\"pillar\":\"\",\"area\":\"\"},{\"ID\":16314,\"post_title\":\"Ozgeris Uztazy: \\u0418\\u0441\\u043a\\u0443\\u0441\\u0441\\u0442\\u0432\\u043e \\u041a\\u043e\\u0443\\u0447\\u0438\\u043d\\u0433\\u0430\",\"pillar\":\"wisdom\",\"area\":\"mindfulness\"},{\"ID\":16310,\"post_title\":\"\\u0413\\u0440\\u0430\\u043d\\u0434-\\u0410\\u0443\\u0434\\u0438\\u0442 \\u041a\\u043e\\u0440\\u043e\\u043b\\u0435\\u0432\\u0441\\u0442\\u0432\\u0430: \\u041f\\u0435\\u0440\\u0435\\u043f\\u0440\\u043e\\u0448\\u0438\\u0432\\u043a\\u0430\",\"pillar\":\"wisdom\",\"area\":\"mindfulness\"},{\"ID\":16305,\"post_title\":\"\\u0424\\u0438\\u043b\\u043e\\u0441\\u043e\\u0444\\u0438\\u044f \\u0421\\u0442\\u043e\\u0438\\u0446\\u0438\\u0437\\u043c\\u0430 \\u0432 \\u0441\\u043e\\u0432\\u0440\\u0435\\u043c\\u0435\\u043d\\u043d\\u043e\\u043c \\u0431\\u044b\\u0442\\u0443\",\"pillar\":\"balance\",\"area\":\"spirituality\"},{\"ID\":16301,\"post_title\":\"\\u0421\\u043c\\u044b\\u0441\\u043b \\u0438 \\u0426\\u0435\\u043d\\u043d\\u043e\\u0441\\u0442\\u0438 (\\u041b\\u043e\\u0433\\u043e\\u0442\\u0435\\u0440\\u0430\\u043f\\u0438\\u044f \\u0424\\u0440\\u0430\\u043d\\u043a\\u043b\\u0430)\",\"pillar\":\"balance\",\"area\":\"spirituality\"},{\"ID\":16297,\"post_title\":\"\\u0418\\u0441\\u043a\\u0443\\u0441\\u0441\\u0442\\u0432\\u043e \\u042d\\u043c\\u043f\\u0430\\u0442\\u0438\\u0438: \\u041a\\u0430\\u043a \\u043f\\u043e\\u043d\\u0438\\u043c\\u0430\\u0442\\u044c \\u043b\\u044e\\u0434\\u0435\\u0439\",\"pillar\":\"balance\",\"area\":\"emotions\"},{\"ID\":16292,\"post_title\":\"EQ: \\u0423\\u043f\\u0440\\u0430\\u0432\\u043b\\u0435\\u043d\\u0438\\u0435 \\u0442\\u0440\\u0435\\u0432\\u043e\\u0433\\u043e\\u0439 \\u0438 \\u0433\\u043d\\u0435\\u0432\\u043e\\u043c\",\"pillar\":\"balance\",\"area\":\"emotions\"},{\"ID\":16287,\"post_title\":\"\\u0413\\u0435\\u0439\\u043c\\u0438\\u0444\\u0438\\u043a\\u0430\\u0446\\u0438\\u044f \\u0440\\u0443\\u0442\\u0438\\u043d\\u044b: \\u0416\\u0438\\u0437\\u043d\\u044c \\u043a\\u0430\\u043a \\u043f\\u0440\\u0438\\u043a\\u043b\\u044e\\u0447\\u0435\\u043d\\u0438\\u0435\",\"pillar\":\"balance\",\"area\":\"rest\"}];\n\n        let tg = window.Telegram ? window.Telegram.WebApp : null;\n        \/\/ Logic moved to top priority startup script\n\n        const questions = [\n            { pillar: 'wisdom', sphere: 'mindfulness', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u043c\u0435\u0434\u0438\u0442\u0430\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u043d\u0430\u0445\u043e\u0436\u0443 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0442\u0438\u0448\u0438\u043d\u044b \u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u0439.' },\n            { pillar: 'wisdom', sphere: 'mindfulness', text: '\u042f \u043b\u0435\u0433\u043a\u043e \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u044e \u0441\u0432\u043e\u0438 \u043c\u044b\u0441\u043b\u0438 \u0438 \u044d\u043c\u043e\u0446\u0438\u0438 \u0438 \u043d\u0435 \u043f\u0430\u043d\u0438\u043a\u0443\u044e \u0432 \u0441\u0442\u0440\u0435\u0441\u0441\u043e\u0432\u044b\u0445 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f\u0445.' },\n            { pillar: 'wisdom', sphere: 'intellect', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0438\u0437\u0443\u0447\u0430\u044e \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0442\u044b \u0438 \u0447\u0438\u0442\u0430\u044e \u043b\u0438\u0442\u0435\u0440\u0430\u0442\u0443\u0440\u0443 \u043f\u043e \u043f\u0435\u0434\u0430\u0433\u043e\u0433\u0438\u043a\u0435.' },\n            { pillar: 'wisdom', sphere: 'intellect', text: '\u042f \u043b\u0435\u0433\u043a\u043e \u0430\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u044e \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0438 \u043d\u0430\u0445\u043e\u0436\u0443 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0438.' },\n            { pillar: 'wisdom', sphere: 'skills', text: '\u042f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u0441\u0442\u0432\u0443\u044e \u0441\u0432\u043e\u0438 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0432\u044b\u043a\u0438.' },\n            { pillar: 'wisdom', sphere: 'skills', text: '\u041c\u043e\u044f \u043a\u0432\u0430\u043b\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0432\u044b\u0441\u043e\u043a\u043e \u0446\u0435\u043d\u0438\u0442\u0441\u044f \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0442\u0440\u0443\u0434\u0430.', text_youth: '\u041d\u0430\u0432\u044b\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u044e, \u0431\u0443\u0434\u0443\u0442 \u043e\u0447\u0435\u043d\u044c \u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u044b \u043d\u0430 \u0440\u044b\u043d\u043a\u0435 \u0442\u0440\u0443\u0434\u0430 \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c.' },\n            { pillar: 'wisdom', sphere: 'leadership', text: '\u042f \u043d\u0435 \u0431\u043e\u044e\u0441\u044c \u0431\u0440\u0430\u0442\u044c \u043d\u0430 \u0441\u0435\u0431\u044f \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0437\u0430 \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0438 \u0432\u0430\u0436\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.' },\n            { pillar: 'wisdom', sphere: 'leadership', text: '\u041b\u044e\u0434\u0438 \u0447\u0430\u0441\u0442\u043e \u043e\u0431\u0440\u0430\u0449\u0430\u044e\u0442\u0441\u044f \u043a\u043e \u043c\u043d\u0435 \u0437\u0430 \u0441\u043e\u0432\u0435\u0442\u043e\u043c \u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0438\u043c \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u044f\u043c.' },\n            { pillar: 'wisdom', sphere: 'creativity', text: '\u0412 \u043c\u043e\u0435\u0439 \u0436\u0438\u0437\u043d\u0438 \u0435\u0441\u0442\u044c \u043c\u0435\u0441\u0442\u043e \u0434\u043b\u044f \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u043a\u0438\u0445 \u0445\u043e\u0431\u0431\u0438 \u0438 \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430.' },\n            { pillar: 'wisdom', sphere: 'creativity', text: '\u042f \u0443\u043c\u0435\u044e \u043c\u044b\u0441\u043b\u0438\u0442\u044c \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e \u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u0440\u0435\u0430\u0442\u0438\u0432\u043d\u044b\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.' },\n            { pillar: 'wisdom', sphere: 'vision', text: '\u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0447\u0435\u0442\u043a\u0438\u0435, SMART-\u0446\u0435\u043b\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043c\u043e\u0433\u0443 \u0441\u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0431\u043b\u0438\u0436\u0430\u0439\u0448\u0438\u0435 1-3 \u0433\u043e\u0434\u0430.' },\n            { pillar: 'wisdom', sphere: 'vision', text: '\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0441\u0432\u043e\u0451 \u0436\u0438\u0437\u043d\u0435\u043d\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438 \u0434\u0432\u0438\u0433\u0430\u044e\u0441\u044c \u043a \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u0432\u0438\u0434\u0435\u043d\u0438\u044e.' },\n            { pillar: 'strength', sphere: 'health', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0440\u043e\u0445\u043e\u0436\u0443 \u043c\u0435\u0434\u0438\u0446\u0438\u043d\u0441\u043a\u0438\u0435 \u043e\u0441\u043c\u043e\u0442\u0440\u044b \u0438 \u0441\u043b\u0435\u0436\u0443 \u0437\u0430 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f.' },\n            { pillar: 'strength', sphere: 'health', text: '\u0423 \u043c\u0435\u043d\u044f \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0438\u043c\u043c\u0443\u043d\u0438\u0442\u0435\u0442, \u044f \u0440\u0435\u0434\u043a\u043e \u0431\u043e\u043b\u0435\u044e \u0438 \u0431\u044b\u0441\u0442\u0440\u043e \u0432\u044b\u0437\u0434\u043e\u0440\u0430\u0432\u043b\u0438\u0432\u0430\u044e.' },\n            { pillar: 'strength', sphere: 'energy', text: '\u042f \u043f\u0440\u043e\u0441\u044b\u043f\u0430\u044e\u0441\u044c \u0431\u043e\u0434\u0440\u044b\u043c \u0438 \u043f\u043e\u043b\u043d\u044b\u043c \u044d\u043d\u0435\u0440\u0433\u0438\u0438, \u0431\u0435\u0437 \u0432\u0441\u044f\u043a\u0438\u0445 \u0441\u0442\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432.' },\n            { pillar: 'strength', sphere: 'energy', text: '\u0423 \u043c\u0435\u043d\u044f \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0434\u043e \u0432\u0435\u0447\u0435\u0440\u0430, \u0441\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u043f\u0430\u0434\u043e\u0432 \u043d\u0435 \u0431\u044b\u0432\u0430\u0435\u0442.' },\n            { pillar: 'strength', sphere: 'appearance', text: 'I am 100% satisfied with my appearance, wardrobe and personal care.' },\n            { pillar: 'strength', sphere: 'appearance', text: '\u041c\u043e\u0439 \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434 \u043f\u0440\u0438\u0434\u0430\u0435\u0442 \u043c\u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043d\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0445 \u0438 \u0432 \u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435.' },\n            { pillar: 'strength', sphere: 'discipline', text: '\u042f \u043b\u0435\u0433\u043a\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435, \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u043c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u0438.' },\n            { pillar: 'strength', sphere: 'discipline', text: '\u042f \u0443\u043c\u0435\u044e \u043e\u0442\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u0432 \u043c\u0438\u043c\u043e\u043b\u0435\u0442\u043d\u044b\u0445 \u0443\u0434\u043e\u0432\u043e\u043b\u044c\u0441\u0442\u0432\u0438\u044f\u0445 \u0440\u0430\u0434\u0438 \u0434\u043e\u0441\u0442\u0438\u0436\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0446\u0435\u043b\u0435\u0439.' },\n            { pillar: 'strength', sphere: 'fitness', text: '\u042f \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438 \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 3 \u0440\u0430\u0437 \u0432 \u043d\u0435\u0434\u0435\u043b\u044e.' },\n            { pillar: 'strength', sphere: 'fitness', text: '\u041c\u043e\u044f \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0432\u044b\u043d\u043e\u0441\u043b\u0438\u0432\u043e\u0441\u0442\u044c, \u0441\u0438\u043b\u0430 \u0438 \u0433\u0438\u0431\u043a\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u044e\u0442.' },\n            { pillar: 'strength', sphere: 'nutrition', text: '\u042f \u0441\u043b\u0435\u0436\u0443 \u0437\u0430 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u0432\u043e\u0435\u0439 \u043f\u0438\u0449\u0438 (\u043c\u0430\u043a\u0440\u043e\u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c\u0438) \u0438 \u043f\u044c\u044e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0447\u0438\u0441\u0442\u043e\u0439 \u0432\u043e\u0434\u044b.' },\n            { pillar: 'strength', sphere: 'nutrition', text: '\u042f \u0441\u043f\u043b\u044e 7-8 \u0447\u0430\u0441\u043e\u0432 \u0432 \u0434\u0435\u043d\u044c, \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044f\u0441\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430.' },\n            { pillar: 'wealth', sphere: 'income', text: '\u041c\u043e\u0439 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0434\u043e\u0445\u043e\u0434 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043c\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438 \u0438 \u0436\u0435\u043b\u0430\u043d\u0438\u044f.', text_youth: '\u041c\u043e\u0438 \u043a\u0430\u0440\u043c\u0430\u043d\u043d\u044b\u0435 \u0434\u0435\u043d\u044c\u0433\u0438, \u0441\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f \u0438\u043b\u0438 \u0434\u043e\u0445\u043e\u0434 \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430 \u043d\u0435\u043f\u043e\u043b\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u0434\u0435\u043d\u044c \u043f\u043e\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u043c\u043e\u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043d\u043e\u0441\u0442\u0438.' },\n            { pillar: 'wealth', sphere: 'income', text: '\u042f \u0442\u043e\u0447\u043d\u043e \u0437\u043d\u0430\u044e, \u043a\u0430\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0442 \u043c\u043d\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0434\u043e\u0445\u043e\u0434 \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443.' },\n            { pillar: 'wealth', sphere: 'investments', text: '\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b (\u0430\u043a\u0446\u0438\u0438, \u043a\u0440\u0438\u043f\u0442\u043e\u0432\u0430\u043b\u044e\u0442\u044b).' },\n            { pillar: 'wealth', sphere: 'investments', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0435\u0436\u0435\u043c\u0435\u0441\u044f\u0447\u043d\u043e \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u0443\u044e \u0447\u0430\u0441\u0442\u044c \u0441\u0432\u043e\u0435\u0433\u043e \u0434\u043e\u0445\u043e\u0434\u0430.' },\n            { pillar: 'wealth', sphere: 'assets', text: '\u0423 \u043c\u0435\u043d\u044f \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0430\u043a\u0442\u0438\u0432\u044b (\u043d\u0435\u0434\u0432\u0438\u0436\u0438\u043c\u043e\u0441\u0442\u044c, \u0438\u043d\u0432\u0435\u0441\u0442\u0438\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u043e\u0440\u0442\u0444\u0435\u043b\u044c), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u043f\u0430\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0434\u043e\u0445\u043e\u0434.', text_youth: '\u042f \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0441\u0432\u043e\u0438\u0445 \u043f\u0435\u0440\u0432\u044b\u0445 \u0430\u043a\u0442\u0438\u0432\u043e\u0432 (\u0441\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0438\u044f, \u0430\u0443\u0434\u0438\u0442\u043e\u0440\u0438\u044f, \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b) \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435.' },\n            { pillar: 'wealth', sphere: 'assets', text: '\u042f \u0441\u0438\u0441\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u044e \u043d\u0430\u0434 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u043c \u043d\u043e\u0432\u044b\u0445 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u0434\u043e\u0445\u043e\u0434\u0430.' },\n            { pillar: 'wealth', sphere: 'savings', text: '\u042f \u0432\u0435\u0434\u0443 \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u0443\u0447\u0435\u0442 \u0441\u0432\u043e\u0438\u0445 \u0434\u043e\u0445\u043e\u0434\u043e\u0432 \u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u043e\u0432.' },\n            { pillar: 'wealth', sphere: 'savings', text: '\u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u044b\u0439 \u0444\u043e\u043d\u0434 \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043d\u0430 6 \u043c\u0435\u0441\u044f\u0446\u0435\u0432.', text_youth: '\u042f \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442\u044c \u0434\u0435\u043d\u044c\u0433\u0438 \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0430\u0441.' },\n            { pillar: 'wealth', sphere: 'business', text: '\u042f \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u0431\u0438\u0437\u043d\u0435\u0441-\u043f\u0440\u043e\u0435\u043a\u0442\u044b \u0438\u043b\u0438 \u0441\u0442\u0430\u0440\u0442\u0430\u043f\u044b.', text_youth: '\u042f \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0443\u0447\u0430\u0441\u0442\u0432\u0443\u044e \u0432 \u0441\u0442\u0443\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0432\u043e\u043b\u043e\u043d\u0442\u0435\u0440\u0441\u043a\u043e\u0439 \u0434\u0435\u044f\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u044e \u0438\u043b\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u044e \u0441\u0432\u043e\u0438 \u043f\u0435\u0440\u0432\u044b\u0435 \u0431\u0438\u0437\u043d\u0435\u0441-\u0438\u0434\u0435\u0438.' },\n            { pillar: 'wealth', sphere: 'business', text: '\u042f \u043f\u043e\u043d\u0438\u043c\u0430\u044e, \u043a\u0430\u043a \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u043a\u043b\u0438\u0435\u043d\u0442\u043e\u0432, \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0431\u0438\u0437\u043d\u0435\u0441 \u0438 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438.' },\n            { pillar: 'wealth', sphere: 'career', text: '\u042f \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u0442\u0435\u043c\u043f\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u043e\u0441\u0442\u0430 \u0432 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438\/\u043e\u0442\u0440\u0430\u0441\u043b\u0438.', text_youth: '\u042f \u0434\u043e\u0432\u043e\u043b\u0435\u043d \u0441\u0432\u043e\u0438\u043c\u0438 \u0443\u0441\u043f\u0435\u0445\u0430\u043c\u0438 \u0432 \u0443\u0447\u0435\u0431\u0435 \u0438 \u043f\u0435\u0440\u0432\u044b\u043c\u0438 \u0448\u0430\u0433\u0430\u043c\u0438 \u0432 \u043a\u0430\u0440\u044c\u0435\u0440\u0435 (\u0441\u0442\u0430\u0436\u0438\u0440\u043e\u0432\u043a\u0438\/\u0444\u0440\u0438\u043b\u0430\u043d\u0441).' },\n            { pillar: 'wealth', sphere: 'career', text: '\u0423 \u043c\u0435\u043d\u044f \u0435\u0441\u0442\u044c \u0447\u0435\u0442\u043a\u0438\u0439 \u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u043e\u0439 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0435.' },\n            { pillar: 'balance', sphere: 'family', text: '\u0423 \u043c\u0435\u043d\u044f \u0442\u0435\u043f\u043b\u044b\u0435, \u0434\u043e\u0432\u0435\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u0441 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u043c\u0438 \u0438 \u0440\u043e\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430\u043c\u0438.' },\n            { pillar: 'balance', sphere: 'family', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043d\u0430\u0445\u043e\u0436\u0443 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0435\u043c\u044c\u0435\u0439.' },\n            { pillar: 'balance', sphere: 'love', text: '\u0412 \u043c\u043e\u0438\u0445 \u0440\u043e\u043c\u0430\u043d\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f\u0445 \u0446\u0430\u0440\u044f\u0442 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u044f \u0438 \u0447\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c.' },\n            { pillar: 'balance', sphere: 'love', text: '\u042f \u0437\u043d\u0430\u044e, \u043a\u0430\u043a \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b \u044d\u043a\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c \u0438 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043b\u0438\u0447\u043d\u044b\u0435 \u0433\u0440\u0430\u043d\u0438\u0446\u044b.' },\n            { pillar: 'balance', sphere: 'friends', text: '\u0423 \u043c\u0435\u043d\u044f \u043d\u0430\u043b\u0430\u0436\u0435\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c \u0434\u0435\u043b\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043c\u043d\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u0433\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043a\u0430\u0440\u044c\u0435\u0440\u043d\u043e\u0439 \u043b\u0435\u0441\u0442\u043d\u0438\u0446\u0435.' },\n            { pillar: 'balance', sphere: 'friends', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u043d\u0430\u043a\u043e\u043c\u043b\u044e\u0441\u044c \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043b\u044e\u0434\u044c\u043c\u0438 \u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e \u0441\u0442\u0430\u0440\u044b\u0435 \u0441\u0432\u044f\u0437\u0438.' },\n            { pillar: 'balance', sphere: 'rest', text: '\u041c\u043e\u044f \u0436\u0438\u0437\u043d\u044c \u043f\u043e\u043b\u043d\u0430 \u044f\u0440\u043a\u0438\u0445 \u0441\u043e\u0431\u044b\u0442\u0438\u0439, \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u0438 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0439.' },\n            { pillar: 'balance', sphere: 'rest', text: '\u042f \u0443\u043c\u0435\u044e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0442\u0434\u044b\u0445\u0430.' },\n            { pillar: 'balance', sphere: 'emotions', text: '\u042f \u0445\u043e\u0440\u043e\u0448\u043e \u043f\u043e\u043d\u0438\u043c\u0430\u044e \u0447\u0443\u0432\u0441\u0442\u0432\u0430 \u0434\u0440\u0443\u0433\u0438\u0445 \u043b\u044e\u0434\u0435\u0439 \u0438 \u0443\u043c\u0435\u044e \u043f\u0440\u043e\u044f\u0432\u043b\u044f\u0442\u044c \u044d\u043c\u043f\u0430\u0442\u0438\u044e.' },\n            { pillar: 'balance', sphere: 'emotions', text: '\u041c\u0435\u043d\u044f \u0442\u0440\u0443\u0434\u043d\u043e \u0441\u043f\u0440\u043e\u0432\u043e\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u044e, \u044f \u0434\u0435\u0440\u0436\u0443 \u044d\u043c\u043e\u0446\u0438\u0438 \u043f\u043e\u0434 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u043c.' },\n            { pillar: 'balance', sphere: 'spirituality', text: '\u042f \u0447\u0443\u0432\u0441\u0442\u0432\u0443\u044e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u0441\u043c\u044b\u0441\u043b \u0438 \u043f\u0440\u0435\u0431\u044b\u0432\u0430\u044e \u0432 \u0433\u0430\u0440\u043c\u043e\u043d\u0438\u0438 \u0441 \u0441\u043e\u0431\u043e\u0439.' },\n            { pillar: 'balance', sphere: 'spirituality', text: '\u042f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0441\u044c \u0434\u0443\u0445\u043e\u0432\u043d\u044b\u043c\u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430\u043c\u0438 (\u0440\u0435\u043b\u0438\u0433\u0438\u044f, \u0444\u0438\u043b\u043e\u0441\u043e\u0444\u0438\u044f, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u043e \u0441 \u043f\u0440\u0438\u0440\u043e\u0434\u043e\u0439).' }\n        ];\n\n        let currentIdx = 0; let userAnswers = new Array(48).fill(null); let finalScores = {}; let selectedFocus = []; let activeViewId = 'view-intro';\n        let isYouth = false;\n\n        async function fetchGamiPressPoints(typeSlug) {\n            if (!gpUserId || !gpAjaxUrl) return null;\n            const formData = new URLSearchParams(); formData.append('action', 'get_gamipress_data'); formData.append('nonce', gpNonce); formData.append('user_id', gpUserId); formData.append('points_type', typeSlug);\n            try { const resp = await fetch(gpAjaxUrl, { method: 'POST', body: formData }); const res = await resp.json(); return res.success ? res.data.points : null; } catch(e) { return null; }\n        }\n\n        async function updateHeaderResources() {\n            const coins = await fetchGamiPressPoints('hobbist_coins');\n            if (coins !== null) {\n                const formattedCoins = formatPointsBalance(coins);\n                document.getElementById('ozgCoinsValue').innerText = formattedCoins;\n            }\n\n            try {\n                const resp = await fetch(`${apiBase}\/gamipress\/points`, {\n                    headers: { 'X-WP-Nonce': nonce }\n                });\n                const data = await resp.json();\n                if (data.success) {\n                    document.getElementById('ozgAchievementsValue').innerText = data.achievements;\n                    if (data.coins_formatted) {\n                        document.getElementById('ozgCoinsValue').innerText = data.coins_formatted;\n                    }\n                }\n            } catch(e) { console.error('Failed to fetch achievements:', e); }\n\n            const rank = await fetchGamiPressPoints('rank_points');\n            if (rank !== null) document.getElementById('ozgRankValue').innerText = rank;\n\n            document.getElementById('ozgTrophyValue').innerText = '1,000,000';\n            document.getElementById('ozgEnergyValue').innerText = '';\n        }\n\n        function formatPointsBalance(points) {\n            if (points >= 1000000) {\n                return (points \/ 1000000).toFixed(1) + 'm';\n            } else if (points >= 1000) {\n                return (points \/ 1000).toFixed(1) + 'k';\n            }\n            return points.toString();\n        }\n\n        function showHeaderToast(msg) { const toast = document.getElementById('ozgHeaderToast'); toast.innerText = msg; toast.style.opacity = '1'; setTimeout(() => { toast.style.opacity = '0'; }, 3000); }\n\n        \/\/ ==========================================\n        \/\/ STICKY FILTER FUNCTIONS\n        \/\/ ==========================================\n\n        let trackFilterSticky = document.getElementById('ozgTrackFilterSticky');\n        let coachFilterSticky = document.getElementById('ozgCoachFilterSticky');\n        let feedHeader = document.getElementById('ozgStickyFeedHeader');\n        let headerPanel = document.getElementById('ozgHeaderPanel');\n        let lastScrollPos = 0;\n        let socialButtonsShown = false;\n\n        function updateStickyFilters() {\n            const activeTab = document.querySelector('.ozg-section.active')?.id || '';\n            const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n            const triggerPoint = 60;\n\n            \/\/ Social buttons\n            const floatingBar = document.querySelector('.ozg-floating-bar');\n            if (floatingBar && !socialButtonsShown && scrollTop > 50) {\n                socialButtonsShown = true;\n                document.querySelectorAll('.ozg-fab-wrapper').forEach(wrapper => {\n                    wrapper.classList.add('visible');\n                });\n            }\n\n            if (activeTab === 'my-track' && trackFilterSticky) {\n                if (scrollTop <= triggerPoint) {\n                    trackFilterSticky.classList.remove('sticky-hidden');\n                    trackFilterSticky.classList.add('visible');\n                } else if (isScrollingDown && scrollTop > triggerPoint) {\n                    trackFilterSticky.classList.add('sticky-hidden');\n                } else if (!isScrollingDown && scrollTop > triggerPoint) {\n                    trackFilterSticky.classList.remove('sticky-hidden');\n                }\n            }\n\n            lastScrollPos = Math.max(0, scrollTop);\n        }\n\n        function syncStickyFilters() {\n            if (trackFilterSticky && trackFilterSticky.classList.contains('visible')) {\n                const originalPillar = document.querySelector('#my-track #filterPillar');\n                const stickyPillar = document.querySelector('#ozgTrackFilterSticky #filterPillarSticky');\n                if (originalPillar && stickyPillar && stickyPillar.value !== originalPillar.value) {\n                    stickyPillar.value = originalPillar.value;\n                    if (typeof filterByPillarSticky === 'function') filterByPillarSticky();\n                }\n            }\n            if (coachFilterSticky && coachFilterSticky.classList.contains('visible')) {\n                const originalPillar = document.querySelector('#coach #coachFilterPillar');\n                const stickyPillar = document.querySelector('#ozgCoachFilterSticky #coachFilterPillarSticky');\n                if (originalPillar && stickyPillar && stickyPillar.value !== originalPillar.value) {\n                    stickyPillar.value = originalPillar.value;\n                    if (typeof coachFilterByPillarSticky === 'function') coachFilterByPillarSticky();\n                }\n            }\n        }\n\n        function initStickyFiltersData() {\n            const pillar = document.querySelector('#my-track #filterPillar')?.value;\n            const areaSelect = document.querySelector('#my-track #filterArea');\n            if (pillar && kingdomStruct[pillar] && areaSelect) {\n                areaSelect.innerHTML = '<option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>';\n                for (let a in kingdomStruct[pillar].areas) {\n                    areaSelect.innerHTML += `<option value=\"${a}\">${kingdomStruct[pillar].areas[a]}<\/option>`;\n                }\n            }\n            const coachPillar = document.querySelector('#coach #coachFilterPillar')?.value;\n            const coachAreaSelect = document.querySelector('#coach #coachFilterArea');\n            if (coachPillar && kingdomStruct[coachPillar] && coachAreaSelect) {\n                coachAreaSelect.innerHTML = '<option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>';\n                for (let a in kingdomStruct[coachPillar].areas) {\n                    coachAreaSelect.innerHTML += `<option value=\"${a}\">${kingdomStruct[coachPillar].areas[a]}<\/option>`;\n                }\n            }\n            syncStickyFilters();\n        }\n\n        function filterByPillarSticky() {\n            const stickyPillar = document.querySelector('#ozgTrackFilterSticky #filterPillarSticky');\n            const originalPillar = document.querySelector('#my-track #filterPillar');\n            if (originalPillar && stickyPillar) {\n                originalPillar.value = stickyPillar.value;\n                filterByPillar();\n            }\n        }\n\n        function filterByAreaSticky() {\n            const stickyArea = document.querySelector('#ozgTrackFilterSticky #filterAreaSticky');\n            const originalArea = document.querySelector('#my-track #filterArea');\n            if (originalArea && stickyArea) {\n                originalArea.value = stickyArea.value;\n                filterByArea();\n            }\n        }\n\n        function clearFiltersSticky() {\n            const originalBtn = document.querySelector('#my-track .filter-bar .ozg-btn-sec');\n            if (originalBtn && typeof clearFilters === 'function') originalBtn.click();\n        }\n\n        function coachFilterByPillarSticky() {\n            const stickyPillar = document.querySelector('#ozgCoachFilterSticky #coachFilterPillarSticky');\n            const originalPillar = document.querySelector('#coach #coachFilterPillar');\n            if (originalPillar && stickyPillar) {\n                originalPillar.value = stickyPillar.value;\n                coachFilterByPillar();\n            }\n        }\n\n        function coachFilterByAreaSticky() {\n            const stickyArea = document.querySelector('#ozgCoachFilterSticky #coachFilterAreaSticky');\n            const originalArea = document.querySelector('#coach #coachFilterArea');\n            if (originalArea && stickyArea) {\n                originalArea.value = stickyArea.value;\n                coachFilterByArea();\n            }\n        }\n\n        function coachClearFiltersSticky() {\n            const originalBtn = document.querySelector('#coach .filter-bar .ozg-btn-sec');\n            if (originalBtn && typeof coachClearFilters === 'function') originalBtn.click();\n        }\n\n        function initSmartHeaderScroll() {\n            let lastScrollTop = 0;\n            let scrollStopTimeout = null;\n\n            function handleScroll() {\n                const scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n                const isScrollingDown = scrollTop > lastScrollTop;\n                const triggerPoint = 80;\n\n                \/\/ Sync and other sticky filters\n                updateStickyFilters();\n                syncStickyFilters();\n\n                \/\/ UNISON HIDE: Hide both headers immediately on any scroll\n                if (headerPanel && scrollTop > triggerPoint) {\n                    headerPanel.classList.add('ozg-header-hidden');\n                }\n                if (feedHeader) {\n                    feedHeader.classList.add('feed-hidden');\n                }\n\n                \/\/ Clear previous timeout\n                if (scrollStopTimeout) clearTimeout(scrollStopTimeout);\n\n                \/\/ UNISON SHOW: Show both headers only after scrolling stops\n                scrollStopTimeout = setTimeout(() => {\n                    const finalTop = window.pageYOffset || document.documentElement.scrollTop || 0;\n\n                    \/\/ Show Main Header\n                    if (headerPanel) {\n                        headerPanel.classList.remove('ozg-header-hidden');\n                    }\n\n                    \/\/ Show Feed Header (only if in Kingdom Result view)\n                    const isKingdomActive = document.getElementById('kingdom')?.classList.contains('active');\n                    const isResultView = document.getElementById('view-result')?.classList.contains('active');\n                    if (feedHeader && isKingdomActive && isResultView) {\n                        feedHeader.classList.remove('feed-hidden');\n                        \/\/ Position check\n                        const isMainHeaderHidden = headerPanel.classList.contains('ozg-header-hidden');\n                        feedHeader.style.top = (isMainHeaderHidden || finalTop <= 10) ? '0px' : '65px';\n                        if (finalTop <= 10) feedHeader.style.top = '65px';\n                    }\n                }, 400); \/\/ Wait 400ms after stop\n\n                lastScrollTop = Math.max(0, scrollTop);\n            }\n            let _sRaf = null;\n            window.addEventListener('scroll', () => {\n                if(_sRaf) return;\n                _sRaf = requestAnimationFrame(() => { handleScroll(); _sRaf = null; });\n            }, { passive: true });\n        }\n                document.addEventListener('DOMContentLoaded', () => {\n            const savedTheme = localStorage.getItem('ozg_theme') || 'classic'; ozgApplyTheme(savedTheme);\n            const savedAgeGroup = localStorage.getItem('ozg_age_group'); if (savedAgeGroup === 'youth') isYouth = true;\n            updateHeaderResources();\n            const cachedAnswers = localStorage.getItem('ozg_quiz_answers');\n            if (cachedAnswers) { userAnswers = JSON.parse(cachedAnswers); currentIdx = userAnswers.findIndex(a => a === null); if (currentIdx === -1) currentIdx = 47; }\n            if (dbQuizScores && Object.keys(dbQuizScores).length > 0) {\n                finalScores = dbQuizScores;\n                if (dbFocusAreas && dbFocusAreas.length === 8) { selectedFocus = dbFocusAreas; showView('view-result'); renderFinalResult(); }\n                else { selectedFocus = Array.isArray(dbFocusAreas) ? dbFocusAreas : []; showView('view-select'); renderSelectionGrid(); }\n            } else {\n                if (currentIdx > 0) { showView('view-quiz'); renderQuestion(); } else { showView('view-intro'); }\n            }\n\n            \/\/ Priority: Always open on Kingdom tab for a unified initial experience\n            let savedTab = 'kingdom';\n\n            setTimeout(() => {\n                ozgSwitchTab(savedTab);\n            }, 50);\n            if (document.getElementById('my-track').classList.contains('active')) loadCohortActivities();\n            if (document.getElementById('journal').classList.contains('active')) { loadHabitTracker('daily'); loadJournalEntries(); }\n            if (document.getElementById('coach') && document.getElementById('coach').classList.contains('active')) loadCoachPrograms();\n            initUserSearch('subCoachSearch', 'subCoachResults', 'selectedSubCoachId');\n            initUserSearch('buddySearchInput', 'buddySearchResults', 'selectedBuddyId');\n            initUserSearch('addQuestCoachSearch', 'addQuestCoachResults', 'selectedAddQuestCoachId');\n            initUserSearch('changeCoachSearch', 'changeCoachResults', 'selectedCoachId');\n            initUserSearch('changeBossSearch', 'changeBossResults', 'selectedBossId');\n            initUserSearch('changeBuddySearch', 'changeBuddyResults', 'selectedProgBuddyId');\n\n            initLinkPrefetcher();\n            initStickyFiltersData();\n            initSmartHeaderScroll();\n            if (document.getElementById('kingdom')?.classList.contains('active')) {\n                const _kfh = document.getElementById('ozgStickyFeedHeader');\n                if (_kfh) _kfh.style.display = 'block';\n            }\n\n            const draggableFooter = document.getElementById('draggableFooter');\n            const footerMenuToggle = document.getElementById('footerMenuToggle');\n            const leftFooterArea = document.getElementById('leftFooterArea');\n            let isDragging = false; let initialX; let initialY; let xOffset = 0; let yOffset = 0;\n            if (draggableFooter) {\n                draggableFooter.addEventListener(\"mousedown\", dragStart);\n                draggableFooter.addEventListener(\"mouseup\", dragEnd);\n                draggableFooter.addEventListener(\"mousemove\", drag);\n                draggableFooter.addEventListener(\"touchstart\", dragStart);\n                draggableFooter.addEventListener(\"touchend\", dragEnd);\n                draggableFooter.addEventListener(\"touchmove\", drag);\n            }\n            function dragStart(e) {\n                const target = e.target.closest('a, button');\n                if (target) { isDragging = false; return; }\n                const dragSource = e.target.closest('.bottom-info-bar, .left-column-footer.is-active');\n                if (!dragSource) { isDragging = false; return; }\n                initialX = e.clientX || e.touches[0].clientX;\n                initialY = e.clientY || e.touches[0].clientY;\n                const rect = draggableFooter.getBoundingClientRect();\n                xOffset = initialX - rect.left;\n                yOffset = initialY - rect.top;\n                isDragging = true;\n                draggableFooter.style.cursor = 'grabbing';\n            }\n            function dragEnd(e) { isDragging = false; if(draggableFooter) draggableFooter.style.cursor = 'grab'; }\n            function drag(e) {\n                if (!isDragging) return;\n                e.preventDefault();\n                let currentX = e.clientX || e.touches[0].clientX;\n                let currentY = e.clientY || e.touches[0].clientY;\n                let newX = currentX - xOffset;\n                let newY = currentY - yOffset;\n                newX = Math.max(0, Math.min(newX, window.innerWidth - draggableFooter.offsetWidth));\n                newY = Math.max(0, Math.min(newY, window.innerHeight - draggableFooter.offsetHeight));\n                draggableFooter.style.left = `${newX}px`;\n                draggableFooter.style.top = `${newY}px`;\n                draggableFooter.style.right = 'auto';\n                draggableFooter.style.bottom = 'auto';\n                draggableFooter.style.transform = 'none';\n            }\n            if (footerMenuToggle && leftFooterArea) {\n                footerMenuToggle.addEventListener('click', (event) => {\n                    event.preventDefault();\n                    draggableFooter.style.left = '50%';\n                    draggableFooter.style.top = 'auto';\n                    draggableFooter.style.right = 'auto';\n                    draggableFooter.style.bottom = '0';\n                    draggableFooter.style.transform = 'translateX(-50%)';\n                    leftFooterArea.classList.toggle('is-active');\n                });\n            }\n            const headerToggleBtn = document.getElementById('ozgHeaderMenuToggle');\n            if (headerToggleBtn) {\n                headerToggleBtn.addEventListener('click', (e) => {\n                    if (ozgI18n.isGuest) {\n                        e.preventDefault();\n                        return ozgShowSignUpPrompt();\n                    }\n                    e.preventDefault();\n                    const expanded = document.getElementById('ozgHeaderExpanded');\n                    if (expanded.style.display === 'none') {\n                        expanded.style.display = 'flex';\n                        headerToggleBtn.innerHTML = '<i data-lucide=\"x\"><\/i>';\n                    } else {\n                        expanded.style.display = 'none';\n                        headerToggleBtn.innerHTML = '<i data-lucide=\"menu\"><\/i>';\n                    }\n                    lucide.createIcons();\n                });\n            }\n            const newsBtn = document.getElementById('ozgNewsButton');\n            if (newsBtn) {\n                newsBtn.addEventListener('click', (e) => {\n                    if (ozgI18n.isGuest) {\n                        e.preventDefault();\n                        return ozgShowSignUpPrompt();\n                    }\n                    if (window.location.href.includes('\/activity')) {\n                        e.preventDefault();\n                        showHeaderToast('\u0412\u044b \u0443\u0436\u0435 \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u041d\u043e\u0432\u043e\u0441\u0442\u0435\u0439.');\n                    }\n                });\n            }\n            document.querySelectorAll('[data-elementor-popup-id]').forEach(el => {\n                el.addEventListener('click', (e) => {\n                    const popupId = el.getAttribute('data-elementor-popup-id');\n                    \/\/ Exception for Trophy Button\n                    if (ozgI18n.isGuest && popupId !== '15938' && popupId !== '11000') {\n                        e.preventDefault();\n                        e.stopPropagation();\n                        return ozgShowSignUpPrompt();\n                    }\n                    e.preventDefault();\n                    if (typeof elementorFrontend !== 'undefined' && elementorFrontend.documentsManager) {\n                        const popup = elementorFrontend.documentsManager.documents[popupId];\n                        if (popup) popup.showModal();\n                    }\n                });\n            });\n        });\n\n        function ozgChangeTheme(theme) { localStorage.setItem('ozg_theme', theme); ozgApplyTheme(theme); }\n        function ozgApplyTheme(theme) {\n            const sidebar = document.getElementById('ozgDesktopSidebar');\n            const mobNav = document.getElementById('ozgMobileNav');\n            const gamerPanel = document.getElementById('draggableFooter');\n            const mainLayout = document.querySelector('.ozg-layout');\n            const selectEl = document.getElementById('ozgThemeSelect');\n            if (selectEl) selectEl.value = theme;\n            if (theme === 'gamer') {\n                if(sidebar) sidebar.style.display = 'none';\n                if(mobNav) mobNav.style.display = 'none';\n                if(gamerPanel) gamerPanel.style.display = 'flex';\n                if(mainLayout) mainLayout.style.gridTemplateColumns = '1fr';\n            } else {\n                if(sidebar) sidebar.style.display = window.innerWidth > 900 ? 'flex' : 'none';\n                if(mobNav) mobNav.style.display = window.innerWidth > 900 ? 'none' : 'flex';\n                if(gamerPanel) gamerPanel.style.display = 'none';\n                if(mainLayout) mainLayout.style.gridTemplateColumns = window.innerWidth > 900 ? '280px 1fr' : '1fr';\n            }\n        }\n        window.addEventListener('resize', () => { const currentTheme = localStorage.getItem('ozg_theme') || 'classic'; ozgApplyTheme(currentTheme); });\n\n        function initUserSearch(inputId, resultsId, hiddenId) {\n            const input = document.getElementById(inputId); if (!input) return; let timeout;\n            input.addEventListener('input', function() {\n                clearTimeout(timeout);\n                const search = this.value.trim();\n                if (search.length < 2) { document.getElementById(resultsId).innerHTML = ''; return; }\n                timeout = setTimeout(async () => {\n                    try {\n                        const resp = await fetch(`${apiBase}\/users\/search?q=${encodeURIComponent(search)}`, { headers: {'X-WP-Nonce': nonce} });\n                        const users = await resp.json();\n                        const container = document.getElementById(resultsId);\n                        if (users.length === 0) { container.innerHTML = `<div class=\"user-search-item\">${ozgI18n.notFound}<\/div>`; return; }\n                        container.innerHTML = users.map(u => `<div class=\"user-search-item\" onclick=\"selectUser('${u.id}', '${escapeHtml(u.name)}', '${hiddenId}', '${resultsId}')\"><div class=\"user-info\"><div class=\"user-name\">${escapeHtml(u.name)}<\/div><div class=\"user-role\">${escapeHtml(u.email)}<\/div><\/div><\/div>`).join('');\n                    } catch (e) { console.error(ozgI18n.errorConnection, e); }\n                }, 300);\n            });\n        }\n\n        function selectUser(id, name, hiddenId, resultsId) {\n            document.getElementById(hiddenId).value = id;\n            document.getElementById(resultsId).innerHTML = `<div class=\"user-search-item selected\">\u2705 ${ozgI18n.selected} ${name}<\/div>`;\n        }\n\n        function ozgShowSignUpPrompt() {\n            ozgCloseAllModals();\n            document.getElementById('ozgSignUpPrompt').classList.add('show');\n            lucide.createIcons();\n            return false;\n        }\n\n        function ozgSwitchTab(tabId, userId = null) {\n            if (ozgI18n.isGuest && tabId !== 'kingdom') {\n                return ozgShowSignUpPrompt();\n            }\n            document.querySelectorAll('.ozg-section').forEach(s => s.classList.remove('active'));\n            const targetSec = document.getElementById(tabId);\n            if (targetSec) targetSec.classList.add('active');\n            document.querySelectorAll('.ozg-nav-link, .ozg-mob-item').forEach(l => l.classList.remove('active'));\n\n            const btnId = 'tab-btn-' + tabId;\n            const mBtnId = 'mtab-btn-' + tabId;\n            if (document.getElementById(btnId)) document.getElementById(btnId).classList.add('active');\n            if (document.getElementById(mBtnId)) document.getElementById(mBtnId).classList.add('active');\n\n            const leftFooterArea = document.getElementById('leftFooterArea');\n            if(leftFooterArea && leftFooterArea.classList.contains('is-active')) leftFooterArea.classList.remove('is-active');\n\n            toggleGlobalSaveBtn(tabId === 'kingdom' && activeViewId === 'view-select');\n\n            \/\/ Show\/Hide Creation Bar\n            const creationBar = document.getElementById('ozgCreationBar');\n            if (creationBar) {\n                if (tabId === 'coach') { creationBar.classList.add('visible'); ozgUpdateCreationBarBottom(); }\n                else creationBar.classList.remove('visible');\n            }\n\n            if (tabId !== 'profile') localStorage.setItem('ozgActiveTab', tabId);\n            window.scrollTo(0, 0);\n\n            if (tabId === 'kingdom') {\n                const _kfh = document.getElementById('ozgStickyFeedHeader');\n                if (_kfh) _kfh.style.display = 'block';\n                if (typeof loadSmartFeed === 'function' && !isFeedLoading) loadSmartFeed(true);\n            }\n            if (tabId === 'profile') {\n                loadUserProfile(userId || EXPECTED_USER_ID);\n            }\n            if (tabId === 'my-track') loadCohortActivities();\n            if (tabId === 'journal') { loadHabitTracker('daily'); loadJournalEntries(); }\n            if (tabId === 'coach') loadCoachPrograms();\n\n            setTimeout(() => {\n                updateStickyFilters();\n                syncStickyFilters();\n                initStickyFiltersData();\n            }, 150);\n        }\n\n        async function loadNotifications() {\n            const container = document.getElementById('ozgNotificationsList');\n            if (!container) return;\n\n            container.innerHTML = '<div style=\"text-align:center; padding: 40px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan);\"><\/i><\/div>';\n            lucide.createIcons();\n\n            try {\n                \/\/ Fetch enroll requests (stored on user meta)\n                const resp = await fetch(`${apiBase}\/user\/profile\/${EXPECTED_USER_ID}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n\n                \/\/ For now, we consolidate requests as notifications\n                let html = '';\n\n                \/\/ Enrollment requests (from connections logic)\n                const enrollReqs = [];\n                const teamReqs   = [];\n\n                const pendingEnroll = Object.values(enrollReqs).filter(r => r.status === 'pending');\n                const pendingTeam   = teamReqs; \/\/ these are already filtered in PHP for pending\n\n                if (pendingEnroll.length === 0 && pendingTeam.length === 0) {\n                    container.innerHTML = `<div style=\"text-align:center; padding: 40px; color: var(--text-muted);\">\n                        <i data-lucide=\"bell\" style=\"width: 48px; height: 48px; opacity: 0.3; margin-bottom: 16px;\"><\/i>\n                        <p>No new notifications.<\/p>\n                    <\/div>`;\n                    lucide.createIcons();\n                    return;\n                }\n\n                pendingEnroll.forEach(req => {\n                    html += `\n                        <div style=\"background:rgba(234,179,8,0.07); border:1px solid rgba(234,179,8,0.3); border-radius:16px; padding:16px; margin-bottom:12px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px;\">\n                            <div>\n                                <div style=\"color:#fff; font-weight:600; font-size:1rem;\">${escapeHtml(req.coach_name)}<\/div>\n                                <div style=\"color:var(--text-muted); font-size:0.85rem; margin-top:2px;\">Invites you to course: <strong style=\"color:#fff;\">${escapeHtml(req.program)}<\/strong><\/div>\n                                <div style=\"color:var(--text-muted); font-size:0.7rem; margin-top:4px;\">${req.sent_at}<\/div>\n                            <\/div>\n                            <div style=\"display:flex; gap:8px;\">\n                                <button class=\"ozg-btn\" style=\"padding:8px 16px; font-size:0.85rem;\" onclick=\"ozgRespondEnrollRequest('${req.id}', 'accept', this.closest('div.ozg-profile-subtab-content'))\">Accept<\/button>\n                                <button class=\"ozg-btn-sec\" style=\"padding:8px 16px; font-size:0.85rem;\" onclick=\"ozgRespondEnrollRequest('${req.id}', 'decline', this.closest('div.ozg-profile-subtab-content'))\">Decline<\/button>\n                            <\/div>\n                        <\/div>`;\n                });\n\n                pendingTeam.forEach(req => {\n                    let rLabel = '';\n                    if (req.role === 'coach') rLabel = 'Coach';\n                    else if (req.role === 'boss') rLabel = 'Boss';\n                    else if (req.role === 'program_buddy') rLabel = 'Quest Buddy';\n                    else if (req.role === 'global_buddy') rLabel = 'Global Buddy';\n\n                    html += `\n                        <div style=\"background:rgba(138,43,226,0.07); border:1px solid rgba(138,43,226,0.3); border-radius:16px; padding:16px; margin-bottom:12px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px;\">\n                            <div>\n                                <div style=\"color:#fff; font-weight:600; font-size:1rem;\">${escapeHtml(req.name)}<\/div>\n                                <div style=\"color:var(--text-muted); font-size:0.85rem; margin-top:2px;\">Wants you to be their <b style=\"color:var(--accent-purple);\">${rLabel}<\/b><\/div>\n                            <\/div>\n                            <div style=\"display:flex; gap:8px;\">\n                                <button class=\"ozg-btn\" style=\"padding:8px 16px; font-size:0.85rem;\" onclick=\"ozgRespondRequest('${req.id}', 'accept')\">Accept<\/button>\n                                <button class=\"ozg-btn-sec\" style=\"padding:8px 16px; font-size:0.85rem;\" onclick=\"ozgRespondRequest('${req.id}', 'decline')\">Decline<\/button>\n                            <\/div>\n                        <\/div>`;\n                });\n\n                container.innerHTML = html;\n                lucide.createIcons();\n\n            } catch (e) {\n                console.error('Notifications error:', e);\n                container.innerHTML = '<div style=\"text-align:center; padding: 40px; color: var(--warning-color);\">Error loading notifications.<\/div>';\n            }\n        }\n\n        async function ozgRespondEnrollRequest(reqId, action, cardEl) {\n            if (cardEl) cardEl.style.opacity = '0.5';\n            try {\n                const resp = await fetch(`${apiBase}\/enroll\/respond`, {\n                    method: 'POST',\n                    headers: {'Content-Type':'application\/json','X-WP-Nonce': nonce},\n                    body: JSON.stringify({ request_id: reqId, action: action })\n                });\n                const result = await resp.json();\n                if (result.success) {\n                    showHeaderToast((action === 'accept' ? '\u2705 Enrolled! ' : '\u274c Declined. ') + (result.message || ''));\n                    if (cardEl) cardEl.remove();\n                } else {\n                    showHeaderToast('\u26a0\ufe0f ' + (result.message || 'Error.'));\n                    if (cardEl) cardEl.style.opacity = '1';\n                }\n            } catch(e) { showHeaderToast(ozgI18n.errorConnection); if (cardEl) cardEl.style.opacity = '1'; }\n        }\n\n        async function ozgShowCreationPanel(type) {\n            if (ozgI18n.isGuest) return ozgShowSignUpPrompt();\n            ozgCloseAllModals();\n                    \/\/ Close any open creation modal first\n                    if (document.getElementById('ozgCreationPanelModal').classList.contains('show')) {\n                        ozgForceCloseCreation();\n                    }\n                    window._ozgCreationDraftSaved = false;\n                    window._ozgCreationDraftId = null;\n                    window._ozgCreationEditUrl = null;\n                    const _ab = document.getElementById('ozgCreationActionBar');\n                    if (_ab) _ab.style.display = 'none';\n                    const creationBar = document.getElementById('ozgCreationBar');\n                    if (creationBar) creationBar.classList.remove('visible');\n\n                    if (type === 'financing') { type = 'campaign'; }\n                    if (type === '__financing_original__') {\n                        const modal = document.getElementById('ozgCreationPanelModal');\n                        const title = document.getElementById('ozgCreationPanelTitle');\n                        const body = document.getElementById('ozgCreationPanelBody');\n                        const iframeWrap = document.getElementById('ozgEditorIframeWrap');\n                        const iframe = document.getElementById('ozgEditorIframe');\n\n                        if (title) title.innerHTML = 'Financing Dashboard';\n                        if (body) body.innerHTML = `\n                            <p style=\"color:rgba(255,255,255,0.6);font-size:0.85rem;margin-bottom:12px;\">Opening the financing management panel...<\/p>\n                            <div style=\"display:flex;gap:8px;margin-bottom:12px;\">\n                                <button class=\"ozg-btn-sec\" style=\"font-size:0.8rem;padding:6px 12px;\" onclick=\"document.getElementById('ozgEditorIframeWrap').style.display='none';document.getElementById('ozgCreationPanelModal').classList.remove('show');\">\n                                    <i data-lucide=\"x\"><\/i> Close\n                                <\/button>\n                            <\/div>`;\n                        if (iframeWrap && iframe) {\n                            iframeWrap.style.display = 'block';\n                            iframe.src = 'https:\/\/hobbi.st\/wfp-dashboard\/?wfp-page=campaign';\n                        }\n                        modal.classList.add('show');\n                        lucide.createIcons();\n                        return;\n                    }\n\n                    const config = ozgCreationConfigs[type];\n                    if (!config) return;\n\n                    const modal = document.getElementById('ozgCreationPanelModal');\n                    const title = document.getElementById('ozgCreationPanelTitle');\n                    const body  = document.getElementById('ozgCreationPanelBody');\n                    if (!modal || !title || !body) return;\n\n                    title.innerHTML = `<i data-lucide=\"${config.icon}\" style=\"width:20px; color:var(--cyan);\"><\/i> ${config.title}`;\n                    body.innerHTML = '<div style=\"text-align:center;padding:30px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite;color:var(--cyan);\"><\/i><\/div>';\n                    modal.classList.add('show');\n                    lucide.createIcons();\n\n                    \/\/ Load any select options from APIs\n                    const selectData = {};\n                    await Promise.all(config.fields.filter(f => f.optionsApi).map(async (f) => {\n                        try {\n                            const resp = await fetch(f.optionsApi, { headers: {'X-WP-Nonce': nonce} });\n                            selectData[f.id] = await resp.json();\n                        } catch(e) { selectData[f.id] = []; }\n                    }));\n\n                    \/\/ Build form HTML\n                    let formHtml = `<form id=\"ozgCreationForm\" onsubmit=\"ozgSubmitCreationForm(event, '${type}')\">`;\n\n                    config.fields.forEach(f => {\n                        const req = f.required ? 'required' : '';\n                        const baseInput = 'width:100%;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.15);color:#fff;padding:10px 12px;border-radius:10px;font-family:inherit;font-size:0.9rem;outline:none;box-sizing:border-box;';\n                        formHtml += `<div style=\"margin-bottom:16px;\">\n                            <label style=\"display:block;color:rgba(255,255,255,0.7);font-size:0.78rem;margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px;font-weight:600;\">\n                                ${f.label}${f.required ? ' <span style=\"color:#f87171;\">*<\/span>' : ''}\n                            <\/label>`;\n\n                        if (f.type === 'textarea') {\n                            formHtml += `<textarea id=\"ozgCF_${f.id}\" name=\"${f.id}\" placeholder=\"${f.placeholder||''}\" ${req}\n                                style=\"${baseInput}min-height:90px;resize:vertical;\"><\/textarea>`;\n                        } else if (f.type === 'select') {\n                            const opts = selectData[f.id] || [];\n                            formHtml += `<select id=\"ozgCF_${f.id}\" name=\"${f.id}\"\n                                style=\"${baseInput}cursor:pointer;-webkit-appearance:none;\">\n                                <option value=\"\" style=\"background:#0f121e;color:#fff;\">\u2014 None \u2014<\/option>\n                                ${opts.map(o => `<option value=\"${o.id}\" style=\"background:#0f121e;color:#fff;\">${escapeHtml(o.title||o.name)}<\/option>`).join('')}\n                            <\/select>`;\n                        } else if (f.type === 'checkboxes') {\n                            formHtml += `<div id=\"ozgCF_${f.id}\" style=\"display:flex; flex-wrap:wrap; gap:12px; margin-top:8px;\">`;\n                            f.options.forEach(opt => {\n                                formHtml += `<label style=\"display:flex; align-items:center; gap:6px; color:#fff; font-size:0.85rem; cursor:pointer;\">\n                                    <input type=\"checkbox\" name=\"${f.id}\" value=\"${opt.id}\" ${opt.checked ? 'checked' : ''} style=\"accent-color:var(--accent-cyan);\"> ${opt.label}\n                                <\/label>`;\n                            });\n                            formHtml += `<\/div>`;\n                        } else {\n                            formHtml += `<input id=\"ozgCF_${f.id}\" name=\"${f.id}\" type=\"${f.type}\"\n                                placeholder=\"${f.placeholder||''}\" ${req} style=\"${baseInput}\">`;\n                        }\n                        formHtml += '<\/div>';\n                    });\n\n                    if (config.note) {\n                        formHtml += `<div style=\"background:rgba(0,240,255,.06);border:1px solid rgba(0,240,255,.15);border-radius:10px;padding:10px 14px;margin-bottom:18px;font-size:0.82rem;color:#a5f3fc;\">\n                            <i data-lucide=\"info\" style=\"width:13px;display:inline;\"><\/i> ${config.note}\n                        <\/div>`;\n                    }\n\n                    formHtml += `<div style=\"display:flex;gap:10px;justify-content:flex-end;\">\n                        <button type=\"button\" class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgCreationPanelModal').classList.remove('show'); if(localStorage.getItem('ozgActiveTab') === 'coach') document.getElementById('ozgCreationBar').classList.add('visible');\">Cancel<\/button>\n                        <button type=\"submit\" class=\"ozg-btn\" id=\"ozgCreationSubmitBtn\"><i data-lucide=\"save\"><\/i> Save Draft<\/button>\n                    <\/div><\/form>`;\n\n                    body.innerHTML = formHtml;\n                    lucide.createIcons();\n                }\n\n        async function ozgSubmitCreationForm(event, type) {\n            event.preventDefault();\n            const config = ozgCreationConfigs[type];\n            if (!config) return;\n\n            const submitBtn = document.getElementById('ozgCreationSubmitBtn');\n            if (submitBtn) { submitBtn.disabled = true; submitBtn.innerHTML = '<i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite;width:16px;\"><\/i> Saving\u2026'; lucide.createIcons(); }\n\n            const payload = {};\n            config.fields.forEach(f => {\n                const el = document.getElementById('ozgCF_' + f.id);\n                if (el) {\n                    if (f.type === 'checkboxes') {\n                        const checked = Array.from(el.querySelectorAll('input[type=\"checkbox\"]:checked')).map(cb => cb.value);\n                        payload[f.id] = checked;\n                    } else {\n                        payload[f.id] = el.value;\n                    }\n                }\n            });\n\n            try {\n                const resp = await fetch(config.endpoint, {\n                    method: 'POST',\n                    headers: { 'Content-Type':'application\/json', 'X-WP-Nonce': nonce },\n                    body: JSON.stringify(payload)\n                });\n                const result = await resp.json();\n\n                if (result.success) {\n                    showHeaderToast('\u2705 ' + (result.message || 'Saved!'));\n                    window._ozgCreationDraftSaved = true;\n                    window._ozgCreationDraftId = result.id || null;\n                    window._ozgCreationEditUrl = result.edit_url || null;\n\n                    if (config.successAction === 'open_editor' && result.edit_url) {\n                        ozgOpenIframeEditor(result.edit_url, 'Full Editor');\n                    } else {\n                        const ab = document.getElementById('ozgCreationActionBar');\n                        if (ab && result.edit_url) ab.style.display = 'flex';\n                        if (!result.edit_url) document.getElementById('ozgCreationPanelModal').classList.remove('show');\n                    }\n\n                    if (typeof loadCoachPrograms === 'function') loadCoachPrograms();\n                } else {\n                    showHeaderToast('\u26a0\ufe0f ' + (result.message || 'Error saving.'));\n                    if (submitBtn) { submitBtn.disabled = false; submitBtn.innerHTML = '<i data-lucide=\"save\"><\/i> Save Draft'; lucide.createIcons(); }\n                }\n            } catch(e) {\n                showHeaderToast(ozgI18n.errorConnection);\n                if (submitBtn) { submitBtn.disabled = false; submitBtn.innerHTML = '<i data-lucide=\"save\"><\/i> Save Draft'; lucide.createIcons(); }\n            }\n        }\n\n        function ozgCloseFsModal() {\n            const modal = document.getElementById('ozgFsModal');\n            const iframe = document.getElementById('ozgFsIframe');\n            if (modal) {\n                modal.classList.remove('show');\n                modal.classList.remove('ozg-fs-minimised');\n            }\n            \/\/ Reset iframe so it doesn't keep running in background\n            if (iframe) setTimeout(() => { iframe.src = 'about:blank'; }, 300);\n        }\n\n        function ozgToggleFsMinimise() {\n            const modal = document.getElementById('ozgFsModal');\n            const btn = document.getElementById('ozgFsMinBtn');\n            if (!modal) return;\n            const isMin = modal.classList.toggle('ozg-fs-minimised');\n            if (btn) btn.innerHTML = isMin\n                ? '<i data-lucide=\"maximize-2\"><\/i>'\n                : '<i data-lucide=\"minus\"><\/i>';\n            lucide.createIcons();\n        }\n\n        function ozgShareFeedCard(postId, title, slug) {\n            hobbistShare(postId, title);\n        }\n\n        function ozgCopyShareLink(url) {\n            navigator.clipboard.writeText(url).then(() => showHeaderToast('\ud83d\udd17 Link copied!'));\n        }\n\n        async function ozgHandleDeepLink() {\n            const urlParams = new URLSearchParams(window.location.search);\n            \/\/ Telegram mini-app passes start_param in initDataUnsafe\n            const startAppParam = (tg && tg.initDataUnsafe) ? tg.initDataUnsafe.start_param : '';\n            const startApp = startAppParam || urlParams.get('startapp') || '';\n            \/\/ Web share: ?ozg_post=ID or ?ozg_slug=SLUG\n            const ozgPost  = urlParams.get('ozg_post') || '';\n            const ozgSlug  = urlParams.get('ozg_slug') || '';\n            const hash = window.location.hash;\n\n            let postId = null;\n\n            \/\/ 1. Try to match numeric post ID first\n            const m1 = startApp.match(\/^post_(\\d+)$\/);\n            const m2 = ozgPost.match(\/^(\\d+)$\/);\n            const m3 = hash.match(\/^#feed-(\\d+)$\/);\n\n            if (m1) postId = parseInt(m1[1]);\n            else if (m2) postId = parseInt(m2[1]);\n            else if (m3) postId = parseInt(m3[1]);\n\n            if (postId) {\n                console.log('Deep-link: processing post ID', postId);\n                setTimeout(() => { ozgOpenFeedCardFromId(postId); }, 700);\n            } else if (startApp || ozgSlug) {\n                \/\/ If it's a slug (any string not matching post_ID)\n                const slugInput = ozgSlug || startApp;\n                console.log('Deep-link: resolving slug', slugInput);\n\n                \/\/ Decode __ back to \/ for hierarchical slugs\n                const slugToResolve = slugInput.replace(\/__\/g, '\/');\n\n                setTimeout(function() {\n                    fetch(apiBase + '\/resolve-slug?slug=' + encodeURIComponent(slugToResolve), {\n                        headers: { 'X-WP-Nonce': nonce }\n                    })\n                    .then(function(r) { return r.json(); })\n                    .then(function(data) {\n                        if (data.success && data.id) {\n                            console.log('Deep-link: resolved to ID', data.id);\n                            ozgOpenFeedCardFromId(data.id);\n                        } else {\n                            console.warn('Deep-link resolution failed:', data.message);\n                            if (startApp) showHeaderToast('Content not found: ' + slugToResolve);\n                        }\n                    })\n                    .catch(function(e) { console.error('Deep-link error:', e); });\n                }, 700);\n            }\n        }\n        ozgHandleDeepLink();\n\n        async function loadUserProfile(userId) {\n            const grid = document.getElementById('ozgProfileFeedGrid');\n            const noPosts = document.getElementById('ozgProfileNoPosts');\n            const connectionsMe = document.getElementById('ozgMeProfileConnections');\n            const connectionsOther = document.getElementById('ozgOtherProfileConnections');\n\n            grid.innerHTML = '<div style=\"grid-column: 1\/-1; text-align:center; padding: 40px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan);\"><\/i><\/div>';\n            lucide.createIcons();\n\n            try {\n                const resp = await fetch(`${apiBase}\/user\/profile\/${userId}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n\n                \/\/ Update Header\n                document.getElementById('ozgProfileName').innerText = data.name;\n                document.getElementById('ozgProfileAvatar').src = data.avatar;\n                document.getElementById('ozgStatPosts').innerText = data.stats.posts_count;\n                document.getElementById('ozgStatAchievements').innerText = data.stats.achievements;\n                document.getElementById('ozgStatCoins').innerText = formatPointsBalance(data.stats.coins);\n\n                document.getElementById('ozgProfileIsMeBadge').style.display = data.is_me ? 'flex' : 'none';\n\n                \/\/ Toggle connections visibility\n                if (data.is_me) {\n                    connectionsMe.style.display = 'block';\n                    connectionsOther.style.display = 'none';\n                } else {\n                    connectionsMe.style.display = 'none';\n                    connectionsOther.style.display = 'block';\n                }\n\n                \/\/ Render Feed (3 column)\n                if (data.posts.length === 0) {\n                    grid.innerHTML = '';\n                    noPosts.style.display = 'block';\n                } else {\n                    noPosts.style.display = 'none';\n                    grid.innerHTML = data.posts.map(p => buildProfileCard(p)).join('');\n                }\n                lucide.createIcons();\n\n            } catch (e) {\n                console.error('Profile load error:', e);\n                grid.innerHTML = '<div style=\"grid-column: 1\/-1; text-align:center; padding: 40px; color: var(--warning-color);\">Error loading profile.<\/div>';\n            }\n        }\n\n        function ozgSwitchProfileSubTab(tab, btn) {\n            document.querySelectorAll('.ozg-profile-tab').forEach(b => {\n                b.classList.remove('active');\n                b.style.color = 'var(--text-muted)';\n                b.style.borderBottomColor = 'transparent';\n            });\n            btn.classList.add('active');\n            btn.style.color = '#fff';\n            btn.style.borderBottomColor = 'var(--accent-cyan)';\n\n            document.querySelectorAll('.ozg-profile-subtab-content').forEach(c => c.style.display = 'none');\n            document.getElementById('ozgProfileSubTab-' + tab).style.display = 'block';\n        }\n\n        function ozgOpenPostFromProfile(type, id, title, url) {\n            if (type === 'courses') ozgOpenCourseModal(id);\n            else if (['lesson', 'tutor_quiz', 'tutor_assignments'].includes(type)) ozgOpenLessonModal(id);\n            else if (type === 'wp-fundraising') ozgOpenFundraisingModal(id);\n            else if (title && url) ozgOpenPageInDashboard(id, title, url);\n            else window.location.href = `\/?p=${id}`;\n        }\n\n        function filterByPillar() {\n            const pillar = document.getElementById('filterPillar').value;\n            const areaSelect = document.getElementById('filterArea');\n            areaSelect.innerHTML = `<option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>`;\n            if (pillar && kingdomStruct[pillar]) {\n                for (let a in kingdomStruct[pillar].areas) areaSelect.innerHTML += `<option value=\"${a}\">${kingdomStruct[pillar].areas[a]}<\/option>`;\n            }\n            filterByArea();\n        }\n\n        function filterByArea() {\n            const pillar = document.getElementById('filterPillar').value;\n            const area = document.getElementById('filterArea').value;\n            document.querySelectorAll('.kingdom-pillar').forEach(p => {\n                const showPillar = !pillar || p.dataset.pillar === pillar;\n                p.style.display = showPillar ? 'block' : 'none';\n                if (showPillar) {\n                    p.querySelectorAll('.kingdom-area').forEach(a => {\n                        const showArea = !area || a.dataset.area === area;\n                        a.style.display = showArea ? 'block' : 'none';\n                    });\n                }\n            });\n        }\n\n        function clearFilters() {\n            document.getElementById('filterPillar').value = '';\n            document.getElementById('filterArea').innerHTML = `<option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>`;\n            filterByArea();\n        }\n\n        function coachFilterByPillar() {\n            const pillar = document.getElementById('coachFilterPillar').value;\n            const areaSelect = document.getElementById('coachFilterArea');\n            areaSelect.innerHTML = `<option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>`;\n            if (pillar && kingdomStruct[pillar]) {\n                for (let a in kingdomStruct[pillar].areas) areaSelect.innerHTML += `<option value=\"${a}\">${kingdomStruct[pillar].areas[a]}<\/option>`;\n            }\n            loadCoachPrograms();\n        }\n\n        function coachFilterByArea() { loadCoachPrograms(); }\n\n        function coachClearFilters() {\n            document.getElementById('coachFilterPillar').value = '';\n            document.getElementById('coachFilterArea').innerHTML = `<option value=\"\">\u0412\u0441\u0435 \u0441\u0444\u0435\u0440\u044b<\/option>`;\n            loadCoachPrograms();\n        }\n\n        async function loadCoachPrograms() {\n            const container = document.getElementById('coach-programs-container');\n            if (!container) return;\n\n            container.innerHTML = '<div style=\"text-align:center; padding: 40px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan);\"><\/i><\/div>';\n            lucide.createIcons();\n\n            try {\n                const res = await fetch(`${apiBase}\/coach\/get_programs`, { headers: {'X-WP-Nonce': nonce} });\n                const programs = await res.json();\n\n                if (programs.length === 0) {\n                    container.innerHTML = `<div style=\"text-align:center; padding: 40px; color:var(--text-muted); background:rgba(255,255,255,0.02); border-radius:16px;\">You haven't created any content yet.<\/div>`;\n                } else {\n                    container.innerHTML = programs.map(p => `\n                        <div class=\"ozg-coach-item\" data-type=\"${p.type || 'courses'}\" data-title=\"${escapeHtml(p.title)}\" style=\"margin-bottom:16px; padding:18px; border-left:4px solid ${p.pillar_color}; background:rgba(255,255,255,0.03); border-radius:16px; border:1px solid rgba(255,255,255,0.07);\">\n                            <div style=\"display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:14px; gap:8px;\">\n                                <div style=\"min-width:0;\">\n                                    <div style=\"font-size:0.68rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:.6px; margin-bottom:4px;\">${escapeHtml(p.area_name || '')}<\/div>\n                                    <h4 style=\"margin:0; color:#fff; font-size:1rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">${escapeHtml(p.title)}<\/h4>\n                                <\/div>\n                                <div style=\"display:flex; gap:6px; flex-shrink:0;\">\n                                    <button class=\"ozg-icon-btn\" title=\"Edit\" onclick=\"ozgOpenEditorModal(${p.id})\"><i data-lucide=\"edit-2\"><\/i><\/button>\n                                    <button class=\"ozg-icon-btn danger\" title=\"Delete\" onclick=\"ozgDelete(${p.id})\"><i data-lucide=\"trash-2\"><\/i><\/button>\n                                <\/div>\n                            <\/div>\n                            <div style=\"display:flex; gap:6px; flex-wrap:wrap;\">\n                                ${p.type === 'courses' ? `<button class=\"ozg-btn-sec\" style=\"font-size:0.72rem; padding:5px 10px;\" onclick=\"ozgOpenModal('habit', ${p.id}, 0, '')\"><i data-lucide=\"plus\"><\/i> Habit<\/button>\n                                <button class=\"ozg-btn-sec\" style=\"font-size:0.72rem; padding:5px 10px;\" onclick=\"ozgOpenModal('milestone', ${p.id}, 0, '')\"><i data-lucide=\"plus\"><\/i> Milestone<\/button>\n                                <button class=\"ozg-btn-sec\" style=\"font-size:0.72rem; padding:5px 10px; border-color:rgba(0,240,255,0.25); color:var(--accent-cyan);\" onclick=\"ozgShowEnrollRequestModal(${p.id}, '${escapeHtml(p.title).replace(\/'\/g,\"\\\\'\")}')\"><i data-lucide=\"user-plus\"><\/i> Enroll<\/button>` : ''}\n                            <\/div>\n                        <\/div>\n                    `).join('');\n                }\n                lucide.createIcons();\n            } catch(e) { container.innerHTML = '<div style=\"color:var(--warning-color);\">Error loading programs.<\/div>'; }\n        }\n\n        async function toggleHabits(programId) {\n            const container = document.getElementById(`habits-${programId}`);\n            const icon = document.getElementById(`habits-icon-${programId}`);\n            if (!container) return;\n            if (container.style.display === 'none') {\n                container.style.display = 'block';\n                if (icon) icon.style.transform = 'rotate(180deg)';\n                if (container.innerHTML === '') {\n                    container.innerHTML = '<div style=\"text-align:center; padding:10px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; width:16px; color:var(--accent-cyan);\"><\/i><\/div>';\n                    lucide.createIcons();\n                    await fetchHabits(programId);\n                }\n            } else {\n                container.style.display = 'none';\n                if (icon) icon.style.transform = 'rotate(0deg)';\n            }\n        }\n\n        async function toggleMilestones(programId) {\n            const container = document.getElementById(`milestones-${programId}`);\n            const icon = document.getElementById(`milestones-icon-${programId}`);\n            if (!container) return;\n            if (container.style.display === 'none') {\n                container.style.display = 'block';\n                if (icon) icon.style.transform = 'rotate(180deg)';\n                if (container.innerHTML === '') {\n                    container.innerHTML = '<div style=\"text-align:center; padding:10px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; width:16px; color:var(--accent-purple);\"><\/i><\/div>';\n                    lucide.createIcons();\n                    await fetchMilestones(programId);\n                }\n            } else {\n                container.style.display = 'none';\n                if (icon) icon.style.transform = 'rotate(0deg)';\n            }\n        }\n\n        async function fetchHabits(programId) {\n            const container = document.getElementById(`habits-${programId}`);\n            if (!container) return;\n            try {\n                const resp = await fetch(`${apiBase}\/coach\/get_habits?program_id=${programId}`, { headers: {'X-WP-Nonce': nonce} });\n                const habits = await resp.json();\n                if (habits.length === 0) {\n                    container.innerHTML = `<p style=\"color: var(--text-muted); font-size: 0.85rem;\">${ozgI18n.noHabits}<\/p>`;\n                } else {\n                    container.innerHTML = habits.map(h => `<div style=\"display: flex; justify-content: space-between; align-items: center; background: rgba(255,255,255,0.03); padding: 12px; border-radius: 12px; margin-bottom: 8px;\"><span>${escapeHtml(h.post_title)}<\/span><button class=\"ozg-icon-btn danger\" onclick=\"ozgDelete(${h.ID})\"><i data-lucide=\"trash-2\" style=\"width: 14px;\"><\/i><\/button><\/div>`).join('');\n                }\n                lucide.createIcons();\n            } catch (e) { container.innerHTML = `<p>${ozgI18n.errorConnection}<\/p>`; }\n        }\n\n        async function fetchMilestones(programId) {\n            const container = document.getElementById(`milestones-${programId}`);\n            if (!container) return;\n            try {\n                const resp = await fetch(`${apiBase}\/coach\/get_milestones?program_id=${programId}`, { headers: {'X-WP-Nonce': nonce} });\n                const milestones = await resp.json();\n                if (milestones.length === 0) {\n                    container.innerHTML = `<p style=\"color: var(--text-muted); font-size: 0.85rem;\">${ozgI18n.noMilestones}<\/p>`;\n                } else {\n                    container.innerHTML = milestones.map(m => `<div style=\"display: flex; justify-content: space-between; align-items: center; background: rgba(255,255,255,0.03); padding: 12px; border-radius: 12px; margin-bottom: 8px;\"><span>${escapeHtml(m.post_title)}<\/span><button class=\"ozg-icon-btn danger\" onclick=\"ozgDelete(${m.ID})\"><i data-lucide=\"trash-2\" style=\"width: 14px;\"><\/i><\/button><\/div>`).join('');\n                }\n                lucide.createIcons();\n            } catch (e) { container.innerHTML = `<p>${ozgI18n.errorConnection}<\/p>`; }\n        }\n\n        function showView(viewId) {\n            document.querySelectorAll('.q-view').forEach(v => { v.classList.remove('active'); v.style.display = 'none'; });\n            const v = document.getElementById(viewId);\n            v.style.display = 'flex';\n            setTimeout(() => v.classList.add('active'), 50);\n            activeViewId = viewId;\n            toggleGlobalSaveBtn(viewId === 'view-select');\n        }\n\n        function toggleGlobalSaveBtn(show) {\n            const isTgApp = tg && tg.platform && tg.platform !== 'unknown';\n            const webBtnContainer = document.getElementById('web-save-focus-container');\n            if (show) {\n                if (isTgApp && tg.MainButton) {\n                    tg.MainButton.setText(`${ozgI18n.saveSelection} (${selectedFocus.length}\/8)`);\n                    tg.MainButton.show();\n                    tg.MainButton.offClick(confirmFocusSelection);\n                    tg.MainButton.onClick(confirmFocusSelection);\n                } else if (webBtnContainer) {\n                    webBtnContainer.style.display = 'block';\n                }\n            } else {\n                if (isTgApp && tg.MainButton) {\n                    tg.MainButton.hide();\n                } else if (webBtnContainer) {\n                    webBtnContainer.style.display = 'none';\n                }\n            }\n        }\n\n        function startQuiz() {\n            if (ozgI18n.isGuest) return ozgShowSignUpPrompt();\n            showView('view-age');\n        }\n\n        function selectAgeGroup(group) {\n            isYouth = (group === 'youth');\n            localStorage.setItem('ozg_age_group', group);\n            showView('view-quiz');\n            renderQuestion();\n        }\n\n        function renderQuestion() {\n            const q = questions[currentIdx];\n            const pInfo = kingdomStruct[q.pillar];\n            const sphereName = pInfo.areas[q.sphere] || q.sphere;\n            const qText = (isYouth && q.text_youth) ? q.text_youth : q.text;\n            document.getElementById('quiz-question').innerText = qText;\n            document.getElementById('quiz-cat-text').innerHTML = `<i data-lucide=\"${pInfo.icon}\" style=\"width:14px;\"><\/i> <span>${pInfo.name}<\/span>`;\n            document.getElementById('quiz-cat-text').style.color = pInfo.color;\n            document.getElementById('quiz-sphere-text').innerText = `\u0421\u0444\u0435\u0440\u0430: ${sphereName}`;\n            document.getElementById('quiz-progress-text').innerText = `${currentIdx + 1} \/ ${questions.length}`;\n            document.getElementById('quiz-progress-bar').style.width = `${((currentIdx + 1) \/ questions.length) * 100}%`;\n            const cont = document.getElementById('quiz-rating-container');\n            cont.innerHTML = '';\n            for (let i = 1; i <= 5; i++) {\n                const btn = document.createElement('button');\n                btn.className = 'rating-btn';\n                if (userAnswers[currentIdx] === i) btn.classList.add('selected');\n                btn.style.setProperty('--active-color', pInfo.color);\n                btn.innerText = i;\n                btn.onclick = () => handleAnswer(i, btn);\n                cont.appendChild(btn);\n            }\n            lucide.createIcons();\n        }\n\n        function handleAnswer(score, btnEl) {\n            const cont = document.getElementById('quiz-rating-container');\n            Array.from(cont.children).forEach(b => b.classList.remove('selected'));\n            btnEl.classList.add('selected');\n            userAnswers[currentIdx] = score;\n            localStorage.setItem('ozg_quiz_answers', JSON.stringify(userAnswers));\n            setTimeout(() => {\n                if (currentIdx < questions.length - 1) {\n                    currentIdx++;\n                    const view = document.getElementById('view-quiz');\n                    view.style.opacity = '0';\n                    setTimeout(() => { renderQuestion(); view.style.opacity = '1'; }, 200);\n                } else {\n                    finishQuizPhase();\n                }\n            }, 250);\n        }\n\n        function prevQuestion() {\n            if (currentIdx > 0) {\n                currentIdx--;\n                const view = document.getElementById('view-quiz');\n                view.style.opacity = '0';\n                setTimeout(() => { renderQuestion(); view.style.opacity = '1'; }, 200);\n            } else {\n                showView('view-intro');\n            }\n        }\n\n        async function finishQuizPhase() {\n            finalScores = {};\n            questions.forEach((q, idx) => {\n                const key = `${q.pillar}_${q.sphere}`;\n                if (!finalScores[key]) finalScores[key] = 0;\n                finalScores[key] += userAnswers[idx] || 0;\n            });\n            document.getElementById('view-quiz').innerHTML = `<div style=\"text-align:center; padding:100px 0;\"><i data-lucide=\"loader\" style=\"width:40px; height:40px; animation:spin 1s linear infinite; color:var(--accent-cyan);\"><\/i><br><p style=\"margin-top:20px;\">${ozgI18n.loading}<\/p><\/div>`;\n            lucide.createIcons();\n            try {\n                await fetch(`${apiBase}\/kingdom\/save_quiz`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ scores: finalScores }) });\n                localStorage.removeItem('ozg_quiz_answers');\n                showView('view-select');\n                renderSelectionGrid();\n            } catch (e) { alert(ozgI18n.errorConnection); location.reload(); }\n        }\n\n        function renderSelectionGrid() {\n            let allArr = [];\n            for (let key in finalScores) {\n                let parts = key.split('_');\n                allArr.push({ key: key, pillar: parts[0], sphere: parts[1], score: finalScores[key] });\n            }\n            allArr.sort((a, b) => b.score - a.score);\n            const lockedKeys = allArr.slice(0, 8).map(s => s.key);\n            const grid = document.getElementById('kingdom-grid');\n            grid.innerHTML = '';\n            for (let pKey in kingdomStruct) {\n                const p = kingdomStruct[pKey];\n                let html = `<div style=\"background:rgba(0,0,0,0.3); border-radius:16px; padding:20px; border:1px solid rgba(255,255,255,0.05); height:100%;\"><h3 style=\"color:${p.color}; font-size:1.2rem; margin-bottom:16px; display:flex; align-items:center; gap:8px;\"><i data-lucide=\"${p.icon}\"><\/i> ${p.name}<\/h3><div style=\"display:flex; flex-direction:column; gap:12px;\">`;\n                const sInP = allArr.filter(s => s.pillar === pKey);\n                sInP.forEach(s => {\n                    const isLocked = lockedKeys.includes(s.key);\n                    const percent = (s.score \/ 10) * 100;\n                    const sphereName = kingdomStruct[pKey].areas[s.sphere] || s.sphere;\n                    const isSelected = selectedFocus.includes(s.key);\n                    let iconHtml = isLocked ? `<i data-lucide=\"lock\" style=\"width:14px; color:#888;\"><\/i>` : (isSelected ? `<i data-lucide=\"check-circle-2\" style=\"width:16px; color:var(--accent-cyan);\"><\/i>` : `<i data-lucide=\"circle\" style=\"width:14px; color:#888;\"><\/i>`);\n                    html += `<div class=\"sphere-chip ${isLocked ? 'locked' : ''} ${isSelected ? 'selected' : ''}\" id=\"chip-${s.key}\" onclick=\"toggleSelectFocus('${s.key}', ${isLocked})\"><div class=\"sphere-fill\" style=\"background-color:${p.color}; width:${percent}%;\"><\/div><div class=\"sphere-content\"><span style=\"font-size:0.9rem; font-weight:500; color:${isLocked ? '#888' : '#fff'};\">${sphereName}<\/span><div style=\"display:flex; align-items:center; gap:8px;\"><span style=\"font-size:0.75rem; font-weight:700; color:${isLocked ? '#666' : '#fff'};\">${s.score}\/10<\/span><div id=\"icon-${s.key}\">${iconHtml}<\/div><\/div><\/div><\/div>`;\n                });\n                html += `<\/div><\/div>`;\n                grid.innerHTML += html;\n            }\n            lucide.createIcons();\n            setTimeout(() => { document.querySelectorAll('.sphere-fill').forEach(el => el.style.opacity = '0.35'); }, 500);\n            updateSelectionUI();\n        }\n\n        function toggleSelectFocus(key, isLocked) {\n            if (isLocked) { alert(ozgI18n.alreadyHigh); return; }\n            const chip = document.getElementById(`chip-${key}`);\n            const iconCont = document.getElementById(`icon-${key}`);\n            if (selectedFocus.includes(key)) {\n                selectedFocus = selectedFocus.filter(k => k !== key);\n                chip.classList.remove('selected');\n                iconCont.innerHTML = `<i data-lucide=\"circle\" style=\"width:14px; color:#888;\"><\/i>`;\n            } else {\n                if (selectedFocus.length >= 8) { alert(ozgI18n.maxSpheres); return; }\n                selectedFocus.push(key);\n                chip.classList.add('selected');\n                iconCont.innerHTML = `<i data-lucide=\"check-circle-2\" style=\"width:16px; color:var(--accent-cyan);\"><\/i>`;\n            }\n            lucide.createIcons();\n            updateSelectionUI();\n        }\n\n        function updateSelectionUI() {\n            const countEl = document.getElementById('ozgFocusCount');\n            if (countEl) countEl.innerText = selectedFocus.length;\n            const btn = document.getElementById('ozgSaveFocusBtn');\n            if (btn) {\n                btn.disabled = selectedFocus.length !== 8;\n                if (selectedFocus.length === 8) { btn.style.opacity = '1'; btn.style.cursor = 'pointer'; }\n                else { btn.style.opacity = '0.5'; btn.style.cursor = 'not-allowed'; }\n            }\n            const isTgApp = tg && tg.platform && tg.platform !== 'unknown';\n            if (isTgApp && tg.MainButton && activeViewId === 'view-select') {\n                tg.MainButton.setText(`${ozgI18n.saveSelection} (${selectedFocus.length}\/8)`);\n                if (selectedFocus.length === 8) { tg.MainButton.enable(); tg.MainButton.setParams({color: '#00f0ff', text_color: '#000000'}); }\n                else { tg.MainButton.disable(); tg.MainButton.setParams({color: '#2a2a2a', text_color: '#888888'}); }\n            }\n        }\n\n        async function confirmFocusSelection() {\n            if (selectedFocus.length !== 8) return;\n            const isTgApp = tg && tg.platform && tg.platform !== 'unknown';\n            if (isTgApp && tg.MainButton) tg.MainButton.showProgress();\n            try {\n                await fetch(`${apiBase}\/kingdom\/save_focus`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ areas: selectedFocus }) });\n                if (isTgApp && tg.MainButton) tg.MainButton.hideProgress();\n                showView('view-result');\n                renderFinalResult();\n            } catch (e) { alert(ozgI18n.errorConnection); updateSelectionUI(); }\n        }\n\n        \/\/ ==========================================\n        \/\/ FEED FUNCTIONS\n        \/\/ ==========================================\n\n        let _feedAbortCtrl = null;\n        let isFeedLoading = false;\n        let currentFeedPage = 1;\n        let currentFeedSearch = '';\n        let currentFeedTag = '';\n        let hasMoreFeed = true;\n        let feedSearchTimeout = null;\n\n        let prefetchObserver;\n        const prefetchedUrls = new Set();\n        function initLinkPrefetcher() {\n            if (!window.IntersectionObserver) return;\n            prefetchObserver = new IntersectionObserver((entries, observer) => {\n                entries.forEach(entry => {\n                    if (entry.isIntersecting) {\n                        const card = entry.target;\n                        const url = card.getAttribute('href');\n                        if (url && url !== 'javascript:void(0);' && !prefetchedUrls.has(url)) {\n                            prefetchedUrls.add(url);\n                            const link = document.createElement('link');\n                            link.rel = 'prefetch';\n                            link.href = url;\n                            document.head.appendChild(link);\n                        }\n                        observer.unobserve(card);\n                    }\n                });\n            }, { rootMargin: '100px' });\n        }\n\n        let feedLoadObserver = new IntersectionObserver((entries) => {\n            entries.forEach(entry => {\n                if (entry.isIntersecting && !isFeedLoading && hasMoreFeed) {\n                    loadSmartFeed(false);\n                }\n            });\n        }, { rootMargin: '600px' });\n\n        function debounceFeedSearch() {\n            clearTimeout(feedSearchTimeout);\n            feedSearchTimeout = setTimeout(() => {\n                currentFeedSearch = document.getElementById('ozgFeedSearch').value;\n                loadSmartFeed(true);\n            }, 500);\n        }\n\n        function setFeedTag(tag, btnElement) {\n            document.querySelectorAll('.ozg-feed-tag-btn').forEach(b => b.classList.remove('active'));\n            btnElement.classList.add('active');\n            currentFeedTag = tag;\n            loadSmartFeed(true);\n        }\n\n        function initStickyFeedHeader() {\n            const stickyHeader = document.getElementById('ozgStickyFeedHeader');\n            const kingdomSection = document.getElementById('kingdom');\n            const resultView = document.getElementById('view-result');\n            const feedWrapper = document.querySelector('.ozg-feed-content-wrapper');\n\n            if (!stickyHeader || !kingdomSection) return;\n\n            const checkVisibility = () => {\n                const isKingdomActive = kingdomSection.classList.contains('active');\n                const isResultView = resultView && resultView.classList.contains('active');\n\n                if (isKingdomActive && isResultView) {\n                    stickyHeader.style.display = 'block';\n                } else {\n                    stickyHeader.style.display = 'none';\n                }\n            };\n            checkVisibility();\n            const observer = new MutationObserver(checkVisibility);\n            observer.observe(kingdomSection, { attributes: true, attributeFilter: ['class'] });\n            if (resultView) observer.observe(resultView, { attributes: true, attributeFilter: ['class'] });\n        }\n\n        function debounceFeedSearchSticky() {\n            clearTimeout(feedSearchTimeout);\n            feedSearchTimeout = setTimeout(() => {\n                currentFeedSearch = document.getElementById('ozgFeedSearchSticky').value;\n                const orig = document.getElementById('ozgFeedSearch');\n                if (orig) orig.value = currentFeedSearch;\n                loadSmartFeed(true);\n            }, 500);\n        }\n\n        function setFeedTagSticky(tag, btnElement) {\n            document.querySelectorAll('#ozgStickyFeedHeader .ozg-feed-tag-btn').forEach(b => b.classList.remove('active'));\n            btnElement.classList.add('active');\n            currentFeedTag = tag;\n            loadSmartFeed(true);\n        }\n\n        setTimeout(initStickyFeedHeader, 100);\n\n        function ozgPlayFeedMedia(e, btn, mediaDataEncoded, postId) {\n            e.preventDefault();\n            e.stopPropagation();\n            const card = btn.closest('.ozg-feed-card');\n            const mediaContainer = card.querySelector('.ozg-feed-media-container');\n            const navOverlay = card.querySelector('.ozg-feed-nav-overlay');\n\n            if (navOverlay) navOverlay.style.display = 'none';\n            btn.style.display = 'none';\n            card.classList.add('is-playing');\n\n            let mediaData;\n            try {\n                mediaData = JSON.parse(atob(mediaDataEncoded));\n            } catch(e) {\n                console.error('Failed to parse media data');\n                return;\n            }\n\n            \/\/ Create pause button overlay\n            const pauseOverlay = document.createElement('div');\n            pauseOverlay.className = 'ozg-feed-pause-btn';\n            pauseOverlay.style.cssText = 'position:absolute; top:50%; left:50%; transform:translate(-50%, -50%); width:60px; height:60px; background:rgba(0,0,0,0.5); border-radius:50%; display:flex; align-items:center; justify-content:center; z-index:15; cursor:pointer; opacity:0; transition:opacity 0.3s;';\n            pauseOverlay.innerHTML = '<i data-lucide=\"pause\" style=\"width:30px; height:30px; color:#fff; fill:#fff;\"><\/i>';\n            card.appendChild(pauseOverlay);\n            lucide.createIcons();\n\n            card.addEventListener('mouseenter', () => pauseOverlay.style.opacity = '1');\n            card.addEventListener('mouseleave', () => pauseOverlay.style.opacity = '0');\n\n            mediaContainer.insertAdjacentHTML('beforeend', mediaData.embed);\n\n            const video = mediaContainer.querySelector('video');\n            const audio = mediaContainer.querySelector('audio');\n            const media = video || audio;\n\n            if (media) {\n                media.play().catch(e => console.log('Autoplay prevented:', e));\n\n                pauseOverlay.onclick = (ex) => {\n                    ex.stopPropagation();\n                    if (media.paused) {\n                        media.play();\n                        pauseOverlay.innerHTML = '<i data-lucide=\"pause\" style=\"width:30px; height:30px; color:#fff; fill:#fff;\"><\/i>';\n                    } else {\n                        media.pause();\n                        pauseOverlay.innerHTML = '<i data-lucide=\"play\" style=\"width:30px; height:30px; color:#fff; fill:#fff; margin-left:4px;\"><\/i>';\n                    }\n                    lucide.createIcons();\n                };\n\n                media.onended = () => {\n                    const completionId = mediaData.lesson_id || postId;\n                    console.log('Media ended, completing content:', completionId);\n                    if (completionId) ozgMarkLessonComplete(completionId);\n                    card.classList.remove('is-playing');\n                    pauseOverlay.remove();\n                    if (navOverlay) navOverlay.style.display = 'block';\n                    btn.style.display = 'flex';\n                };\n            }\n        }\n                \/\/ ==========================================\n        \/\/ KINGDOM TEST FUNCTION\n        \/\/ ==========================================\n\n        function ozgOpenKingdomTest() {\n            \/\/ Open elementor popup with ID 13818\n            const popupId = '13818';\n            if (typeof elementorFrontend !== 'undefined' && elementorFrontend.documentsManager) {\n                const popup = elementorFrontend.documentsManager.documents[popupId];\n                if (popup) {\n                    popup.showModal();\n                } else {\n                    const popupElement = document.querySelector(`[data-elementor-popup-id=\"${popupId}\"]`);\n                    if (popupElement) {\n                        popupElement.click();\n                    } else {\n                        showHeaderToast('Kingdom Test is loading. Please try again.');\n                    }\n                }\n            } else {\n                showHeaderToast('Please wait for page to fully load.');\n            }\n        }\n\n        \/\/ ==========================================\n        \/\/ INDUSTRY QUIZ FUNCTION\n        \/\/ ==========================================\n\n        function ozgOpenIndustryQuiz() {\n            const modal = document.getElementById('ozgIndustryQuizModal');\n            if (modal) {\n                modal.classList.add('show');\n                \/\/ Re-initialize Forminator quiz if needed\n                if (typeof Forminator !== 'undefined' && Forminator.modules) {\n                    setTimeout(() => {\n                        if (typeof jQuery !== 'undefined') {\n                            jQuery(document).trigger('after.load.forminator');\n                        }\n                    }, 100);\n                }\n            }\n        }\n\n        \/\/ ==========================================\n        \/\/ HABIT TRACKER FUNCTIONS\n        \/\/ ==========================================\n\n        let currentTrackerView = 'daily';\n\n        async function loadHabitTracker(view = 'daily', btnElement = null) {\n                    currentTrackerView = view;\n\n                    \/\/ Update active button state\n                    if (btnElement) {\n                        document.querySelectorAll('.tracker-view-btn').forEach(btn => {\n                            btn.classList.remove('active');\n                        });\n                        btnElement.classList.add('active');\n                    }\n\n                    const container = document.getElementById('habit-tracker-table-wrap');\n                    if (!container) return;\n\n                    container.innerHTML = '<div style=\"text-align:center; padding: 40px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan);\"><\/i><\/div>';\n                    lucide.createIcons();\n\n                    try {\n                        const res = await fetch(`${apiBase}\/journal\/tracker_data`, { headers: {'X-WP-Nonce': nonce} });\n                        const data = await res.json();\n\n                        if (!data.habits || data.habits.length === 0) {\n                            container.innerHTML = `<div style=\"text-align:center; color:var(--text-muted); padding: 40px; background: rgba(255,255,255,0.02); border-radius: 16px;\">${ozgI18n.noHabits}<\/div>`;\n                            return;\n                        }\n\n                        let dates = [];\n                        let dateHeaders = [];\n                        let dateKeys = [];\n\n                        if (view === 'daily') {\n                            \/\/ Get current week dates\n                            const today = new Date();\n                            const dayOfWeek = today.getDay();\n                            const monday = new Date(today);\n                            monday.setDate(today.getDate() - (dayOfWeek === 0 ? 6 : dayOfWeek - 1));\n\n                            for (let i = 0; i < 7; i++) {\n                                const d = new Date(monday);\n                                d.setDate(monday.getDate() + i);\n                                const key = `${d.getFullYear()}_${String(d.getMonth() + 1).padStart(2, '0')}_${String(d.getDate()).padStart(2, '0')}`;\n                                dateKeys.push(key);\n                                dateHeaders.push({\n                                    label: d.toLocaleDateString('en-US', { weekday: 'short' }),\n                                    day: d.getDate(),\n                                    isToday: i === dayOfWeek - 1 || (dayOfWeek === 0 && i === 6)\n                                });\n                            }\n                        } else if (view === 'weekly') {\n                            \/\/ Get last 4 weeks\n                            const today = new Date();\n                            for (let i = 3; i >= 0; i--) {\n                                const d = new Date(today);\n                                d.setDate(today.getDate() - (i * 7));\n                                const weekNum = getWeekNumber(d);\n                                dateKeys.push(`${d.getFullYear()}_W${weekNum}`);\n                                dateHeaders.push({\n                                    label: `Week ${weekNum}`,\n                                    day: `${d.getMonth() + 1}\/${d.getDate()}`,\n                                    isToday: i === 0\n                                });\n                            }\n                        } else if (view === 'monthly') {\n                            \/\/ Get last 3 months\n                            const today = new Date();\n                            for (let i = 2; i >= 0; i--) {\n                                const d = new Date(today);\n                                d.setMonth(today.getMonth() - i);\n                                const monthKey = `${d.getFullYear()}_${String(d.getMonth() + 1).padStart(2, '0')}`;\n                                dateKeys.push(monthKey);\n                                dateHeaders.push({\n                                    label: d.toLocaleDateString('en-US', { month: 'short' }),\n                                    day: d.getFullYear(),\n                                    isToday: i === 0\n                                });\n                            }\n                        }\n\n                        let html = `<table class=\"tracker-table\"><thead><tr><th style=\"text-align:left;\">${ozgI18n.habits}<\/th>`;\n                        dateHeaders.forEach(h => {\n                            html += `<th style=\"text-align:center; min-width:32px;\">\n                                <div class=\"day-label\">${h.label}<\/div>\n                                <div class=\"day-number\" style=\"${h.isToday ? 'color:var(--accent-cyan); font-weight:800;' : ''}\">${h.day}<\/div>\n                            <\/th>`;\n                        });\n                        html += `<\/tr><\/thead><tbody>`;\n\n                        for (const habit of data.habits) {\n                            const freq = habit.freq;\n                            let completionMap = {};\n\n                            if (freq === 'daily') {\n                                completionMap = habit.completion;\n                            } else if (freq === 'weekly') {\n                                \/\/ For weekly habits, check completion for each week\n                                for (const dateKey of dateKeys) {\n                                    const weekMatch = dateKey.match(\/(\\d+)_W(\\d+)\/);\n                                    if (weekMatch) {\n                                        const year = weekMatch[1];\n                                        const week = weekMatch[2];\n                                        const wkKey = `${year}_W${week}`;\n                                        const isDone = habit.completion[wkKey] || false;\n                                        completionMap[dateKey] = isDone;\n                                    } else {\n                                        completionMap[dateKey] = false;\n                                    }\n                                }\n                            } else if (freq === 'monthly') {\n                                \/\/ For monthly habits\n                                for (const dateKey of dateKeys) {\n                                    const monthMatch = dateKey.match(\/(\\d+)_(\\d+)\/);\n                                    if (monthMatch) {\n                                        const monthKey = dateKey;\n                                        const isDone = habit.completion[monthKey] || false;\n                                        completionMap[dateKey] = isDone;\n                                    } else {\n                                        completionMap[dateKey] = false;\n                                    }\n                                }\n                            }\n\n                            const aliasDisplay = habit.alias.length > 22 ? habit.alias.substring(0, 22) + '\u2026' : habit.alias;\n                            const freqColor = freq === 'daily' ? 'var(--accent-cyan)' : freq === 'weekly' ? 'var(--accent-purple)' : '#eab308';\n\n                            html += `<tr><td class=\"habit-name-cell\">\n                                <span class=\"habit-alias\" title=\"${escapeHtml(habit.alias)}\">${escapeHtml(aliasDisplay)}<\/span>\n                                <button class=\"edit-alias-btn\" onclick=\"editHabitAlias(${habit.id}, '${escapeHtml(habit.alias).replace(\/'\/g, \"\\\\\\'\")}')\"><i data-lucide=\"edit-2\" style=\"width:11px;\"><\/i><\/button>\n        <!-- freq badge removed to clean up habit name cell -->\n                            <\/td>`;\n\n                            for (let i = 0; i < dateKeys.length; i++) {\n                                const dateKey = dateKeys[i];\n                                const isDone = completionMap[dateKey] || false;\n                                html += `<td><div class=\"tracker-cell ${isDone ? 'completed' : ''}\" onclick=\"toggleTrackerHabit(${habit.id}, '${dateKey}', this, '${freq}')\"><\/div><\/td>`;\n                            }\n                            html += `<\/tr>`;\n                        }\n\n                        html += `<\/tbody><\/table>`;\n                        container.innerHTML = html;\n                        lucide.createIcons();\n\n                    } catch (e) {\n                        console.error('Tracker error:', e);\n                        container.innerHTML = `<div style=\"text-align:center; color:var(--warning-color); padding: 20px;\">${ozgI18n.errorConnection}<\/div>`;\n                    }\n                }\n\n        ozgHandleDeepLink();\n\n        function getWeekNumber(date) {\n            const d = new Date(date);\n            d.setHours(0, 0, 0, 0);\n            d.setDate(d.getDate() + 3 - (d.getDay() + 6) % 7);\n            const week1 = new Date(d.getFullYear(), 0, 4);\n            return 1 + Math.round(((d - week1) \/ 86400000 - 3 + (week1.getDay() + 6) % 7) \/ 7);\n        }\n\n        async function editHabitAlias(id, currentAlias) {\n            const newAlias = prompt(ozgI18n.habitNamePrompt, currentAlias);\n            if (newAlias !== null && newAlias.trim() !== \"\") {\n                await fetch(`${apiBase}\/habit\/set_alias`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ habit_id: id, alias: newAlias.trim() }) });\n                loadHabitTracker(currentTrackerView);\n            }\n        }\n\n        async function toggleTrackerHabit(id, dateKey, el, freq) {\n            el.classList.toggle('completed');\n            let timeKey = dateKey;\n            await fetch(`${apiBase}\/habit\/toggle`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ habit_id: id, date: timeKey }) });\n        }\n\n        \/\/ ==========================================\n        \/\/ P2P CAMPAIGN FUNCTIONS\n        \/\/ ==========================================\n\n        function ozgOpenP2PModalExpanded(encodedHtml, campaignTitle, authorName, likesCount, campaignId) {\n            ozgCloseAllModals();\n            let campaignContent = atob(encodedHtml);\n\n            const modal = document.getElementById('ozgP2PModal');\n            const contentContainer = document.getElementById('ozgP2PContent');\n\n            window.currentP2PCampaign = {\n                id: campaignId,\n                title: campaignTitle,\n                author: authorName,\n                likes: likesCount\n            };\n\n            const enhancedContent = `\n                <div class=\"ozg-p2p-campaign-wrapper\">\n                    <div class=\"ozg-p2p-campaign-header\" style=\"margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid #e5e7eb;\">\n                        <div style=\"display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px;\">\n                            <div class=\"ozg-p2p-author\" style=\"display: flex; align-items: center; gap: 12px;\">\n                                <img decoding=\"async\" src=\"https:\/\/www.gravatar.com\/avatar\/${campaignId}?s=48&d=mp\" style=\"width: 48px; height: 48px; border-radius: 50%; object-fit: cover; border: 2px solid #22c55e;\">\n                                <div>\n                                    <div style=\"font-weight: 700; color: #111827; font-size: 1rem;\">${escapeHtml(authorName)}<\/div>\n                                    <div style=\"font-size: 0.75rem; color: #6b7280;\">Campaign Organizer<\/div>\n                                <\/div>\n                            <\/div>\n                            <div class=\"ozg-p2p-stats\" style=\"display: flex; gap: 20px;\">\n                                <div style=\"display: flex; align-items: center; gap: 6px; color: #ef4444; background: #fef2f2; padding: 6px 12px; border-radius: 20px;\">\n                                    <i data-lucide=\"heart\" style=\"width: 16px; fill: currentColor;\"><\/i>\n                                    <span id=\"ozg-p2p-likes-${campaignId}\" style=\"font-weight: 600;\">${likesCount || 0}<\/span>\n                                <\/div>\n                                <div style=\"display: flex; align-items: center; gap: 6px; color: #8b5cf6; background: #f5f3ff; padding: 6px 12px; border-radius: 20px;\">\n                                    <i data-lucide=\"share-2\" style=\"width: 16px;\"><\/i>\n                                    <span id=\"ozg-p2p-shares-${campaignId}\" style=\"font-weight: 600;\">0<\/span>\n                                <\/div>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n\n                    <div id=\"ozg-p2p-campaign-body-${campaignId}\" class=\"ozg-p2p-campaign-body\" style=\"margin-bottom: 24px; min-height: 200px;\">\n                        ${campaignContent}\n                    <\/div>\n\n                    <div class=\"ozg-p2p-actions\" style=\"margin-top: 24px; padding-top: 20px; border-top: 1px solid #e5e7eb; display: flex; gap: 12px; justify-content: flex-end;\">\n                        <button class=\"ozg-p2p-share-btn\" onclick=\"ozgShareFeedCard(${campaignId}, '${campaignTitle.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}')\" style=\"background: #f3f4f6; border: none; padding: 10px 20px; border-radius: 40px; cursor: pointer; display: flex; align-items: center; gap: 8px; font-weight: 600; color: #374151; transition: all 0.2s;\">\n                            <i data-lucide=\"share-2\" style=\"width: 18px;\"><\/i> Share Campaign\n                        <\/button>\n                        <button class=\"ozg-p2p-like-btn\" onclick=\"ozgLikeP2PCampaign(${campaignId}, this)\" style=\"background: #f3f4f6; border: none; padding: 10px 20px; border-radius: 40px; cursor: pointer; display: flex; align-items: center; gap: 8px; font-weight: 600; color: #ef4444; transition: all 0.2s;\">\n                            <i data-lucide=\"heart\" style=\"width: 18px;\"><\/i> Support This Campaign\n                        <\/button>\n                    <\/div>\n                <\/div>\n            `;\n\n            contentContainer.innerHTML = enhancedContent;\n            modal.classList.add('show');\n\n            if (typeof lucide !== 'undefined') lucide.createIcons();\n\n            setTimeout(() => {\n                const campaignBody = document.getElementById(`ozg-p2p-campaign-body-${campaignId}`);\n                if (campaignBody) {\n                    const scripts = campaignBody.getElementsByTagName('script');\n                    for (let i = 0; i < scripts.length; i++) {\n                        const oldScript = scripts[i];\n                        const newScript = document.createElement('script');\n                        for (let j = 0; j < oldScript.attributes.length; j++) {\n                            newScript.setAttribute(oldScript.attributes[j].name, oldScript.attributes[j].value);\n                        }\n                        newScript.innerHTML = oldScript.innerHTML;\n                        oldScript.parentNode.replaceChild(newScript, oldScript);\n                    }\n                    if (typeof give !== 'undefined' && give.init) give.init();\n                    if (typeof jQuery !== 'undefined') jQuery(document).trigger('ready');\n                    const giveForms = campaignBody.querySelectorAll('.give-form, .give-embed-form');\n                    giveForms.forEach(form => {\n                        if (typeof jQuery !== 'undefined') jQuery(form).trigger('give_init');\n                    });\n                }\n            }, 100);\n\n            if (!campaignContent || campaignContent.trim() === '' || campaignContent.length < 50) {\n                fetchFreshP2PCampaignContent(campaignId);\n            }\n        }\n\n        async function fetchFreshP2PCampaignContent(campaignId) {\n            try {\n                const resp = await fetch(`${apiBase}\/p2p\/campaign\/${campaignId}`, {\n                    headers: { 'X-WP-Nonce': nonce }\n                });\n                const data = await resp.json();\n                if (data.success && data.content) {\n                    const campaignBody = document.getElementById(`ozg-p2p-campaign-body-${campaignId}`);\n                    if (campaignBody) {\n                        campaignBody.innerHTML = data.content;\n                        if (typeof lucide !== 'undefined') lucide.createIcons();\n                    }\n                }\n            } catch (e) {\n                console.error('Failed to fetch fresh campaign content:', e);\n            }\n        }\n\n        function ozgCloseAllModals() {\n            const overlays = document.querySelectorAll('.ozg-modal-overlay, .ozg-quiz-modal-overlay, .ozg-fs-modal');\n            overlays.forEach(overlay => {\n                overlay.classList.remove('show', 'active');\n                if (overlay.id === 'ozgFsModal') {\n                    overlay.classList.remove('ozg-fs-minimised');\n                }\n            });\n            \/\/ Stop any playing media in feed cards if necessary\n            document.querySelectorAll('.ozg-feed-card.is-playing').forEach(card => {\n                card.classList.remove('is-playing');\n                const video = card.querySelector('video');\n                const audio = card.querySelector('audio');\n                if (video) video.pause();\n                if (audio) audio.pause();\n            });\n            \/\/ Re-enable body scroll if it was locked\n            document.body.classList.remove('tutor-modal-open');\n        }\n\n        async function ozgOpenCourseModal(courseId) {\n            ozgCloseAllModals();\n            const modal = document.getElementById('ozgCourseModal');\n            const content = document.getElementById('ozgCourseModalContent');\n            modal.classList.add('show');\n            content.innerHTML = '<div style=\"text-align:center; padding: 100px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan); width:40px; height:40px;\"><\/i><\/div>';\n            lucide.createIcons();\n\n            try {\n                const resp = await fetch(`${apiBase}\/course\/details\/${courseId}`, { headers: {'X-WP-Nonce': nonce} });\n                if (!resp.ok) { throw new Error('Network response was not ok'); }\n                const data = await resp.json();\n\n                if (!data.success) {\n                    content.innerHTML = `<div style=\"padding: 40px; text-align: center;\">${data.message || 'Course not found.'}<\/div>`;\n                    showHeaderToast(data.message || 'Error');\n                    return;\n                }\n\n                let html = `\n                    <div class=\"ozg-course-modal-header\" style=\"background-image: url('${data.thumb || ''}')\">\n                        <button class=\"ozg-quiz-close\" style=\"position: absolute; right: 16px; top: 16px; z-index: 10;\" onclick=\"document.getElementById('ozgCourseModal').classList.remove('show')\"><i data-lucide=\"x\"><\/i><\/button>\n                        <div style=\"position: absolute; left: 16px; top: 16px; z-index: 10; display: flex; gap: 8px;\">\n                            <button class=\"ozg-icon-btn\" title=\"Open full page\" style=\"background: rgba(0,0,0,0.5);\" onclick=\"ozgOpenPageInDashboard(${courseId}, '${data.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}', '${data.url}')\"><i data-lucide=\"external-link\"><\/i><\/button>\n                            <button class=\"ozg-icon-btn\" title=\"Share\" style=\"background:rgba(0,0,0,0.5);\" onclick=\"ozgShareFeedCard(${courseId}, '${data.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}', '${data.slug || ''}')\"><i data-lucide=\"share-2\"><\/i><\/button>\n                            <button class=\"ozg-icon-btn\" title=\"Send as gift\" style=\"background: rgba(0,0,0,0.5);\" onclick=\"alert('Gifting functionality coming soon!')\"><i data-lucide=\"gift\"><\/i><\/button>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ozg-course-modal-content\">\n                        <h2 class=\"ozg-course-modal-title\">${escapeHtml(data.title)}<\/h2>\n                        <div class=\"ozg-course-description\" style=\"max-height: 300px; overflow-y: auto; margin-bottom: 20px;\">${data.content}<\/div>\n                `;\n\n                if (data.is_enrolled) {\n                    html += `<div class=\"ozg-course-sections\">`;\n                    if (data.habits && data.habits.length > 0) {\n                        html += `\n                            <div>\n                                <h4 class=\"ozg-course-section-title\"><i data-lucide=\"calendar\"><\/i> ${ozgI18n.habits}<\/h4>\n                                <div style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px;\">\n                                    ${data.habits.map(h => `\n                                        <div class=\"ozg-habit-card ${h.completed ? 'completed' : ''}\" onclick=\"ozgToggleHabit(this, ${h.id})\">\n                                            <div class=\"ozg-habit-check\"><\/div>\n                                            <div style=\"flex:1;\"><div class=\"ozg-habit-title\" style=\"color:#fff; font-size:0.85rem;\">${escapeHtml(h.title)}<\/div><\/div>\n                                        <\/div>\n                                    `).join('')}\n                                <\/div>\n                            <\/div>\n                        `;\n                    }\n                    if (data.milestones && data.milestones.length > 0) {\n                        html += `\n                            <div style=\"margin-top: 24px;\">\n                                <h4 class=\"ozg-course-section-title\"><i data-lucide=\"flag\"><\/i> ${ozgI18n.milestones}<\/h4>\n                                <div style=\"display: flex; flex-direction: column; gap: 12px;\">\n                                    ${data.milestones.map((m, idx) => `\n                                        <div class=\"ozg-milestone\">\n                                            <div class=\"ozg-m-dot\" style=\"${m.completed ? 'background: var(--success-color); border-color: var(--success-color);' : ''}\"><\/div>\n                                            <div class=\"ozg-m-content\" style=\"${m.completed ? 'opacity:0.7;' : ''}\">\n                                                <div style=\"display: flex; justify-content: space-between; align-items: center; gap: 8px;\">\n                                                    <h5 style=\"color:#fff; margin:0; font-size:0.85rem; font-weight:500;\">${idx+1}. ${escapeHtml(m.title)}<\/h5>\n                                                    ${m.completed ?\n                                                        `<span style=\"color:var(--success-color); font-size:0.65rem;\"><i data-lucide=\"check-circle\" style=\"width:12px;\"><\/i> Completed<\/span>` :\n                                                        `<a href=\"${m.url}\" class=\"ozg-btn\" style=\"padding: 6px 12px; font-size: 0.75rem;\">Start Lesson<\/a>`\n                                                    }\n                                                <\/div>\n                                            <\/div>\n                                        <\/div>\n                                    `).join('')}\n                                <\/div>\n                            <\/div>\n                        `;\n                    }\n                    html += `<\/div>`;\n                } else {\n                    html += `\n                        <div style=\"text-align: center; margin-top: 32px;\">\n                            ${data.price_type === 'paid' ?\n                                `<a href=\"${data.checkout_url}\" class=\"ozg-btn\" style=\"padding: 16px 32px; font-size: 1.1rem;\"><i data-lucide=\"shopping-cart\"><\/i> Buy Course<\/a>` :\n                                `<button class=\"ozg-btn\" style=\"padding: 16px 32px; font-size: 1.1rem;\" onclick=\"ozgConfirmSubscribeFromModal(${data.id})\"><i data-lucide=\"play-circle\"><\/i> Enrol Now<\/button>`\n                            }\n                        <\/div>\n                    `;\n                }\n\n                html += `<\/div>`;\n                content.innerHTML = html;\n                lucide.createIcons();\n            } catch(e) { console.error(e); content.innerHTML = '<div style=\"padding: 40px; text-align: center;\">Error loading course details.<\/div>'; }\n        }\n\n        async function ozgConfirmSubscribeFromModal(progId) {\n            if (ozgI18n.isGuest) return ozgShowSignUpPrompt();\n            const btn = document.querySelector('#ozgCourseModal .ozg-btn');\n            if (btn && btn.getAttribute('data-loading')) return;\n\n            if (btn) {\n                btn.setAttribute('data-loading', 'true');\n                btn.innerHTML = '<i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; width:16px;\"><\/i> Enrolling...';\n                lucide.createIcons();\n            }\n\n            try {\n                const resp = await fetch(`${apiBase}\/program\/subscribe`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({program_id: progId, coach_id: 0}) });\n                const result = await resp.json();\n                if (result.success) {\n                    \/\/ Small delay to ensure DB sync before refresh\n                    setTimeout(() => {\n                        \/\/ If it's a lesson modal being enrolled from, refresh lesson modal\n                        if (document.getElementById('ozgLessonModal').classList.contains('show')) {\n                             const lessonId = document.getElementById('ozgLessonModal').getAttribute('data-lesson-id');\n                             if(lessonId) ozgOpenLessonModal(lessonId);\n                        } else {\n                             ozgOpenCourseModal(progId);\n                        }\n                    }, 500);\n                    showHeaderToast('Successfully enrolled!');\n                } else {\n                    if (btn) {\n                        btn.removeAttribute('data-loading');\n                        btn.innerHTML = '<i data-lucide=\"play-circle\"><\/i> Enrol Now';\n                        lucide.createIcons();\n                    }\n                    alert(result.message || ozgI18n.errorConnection);\n                }\n            } catch(e) {\n                if (btn) {\n                    btn.removeAttribute('data-loading');\n                    btn.innerHTML = '<i data-lucide=\"play-circle\"><\/i> Enrol Now';\n                    lucide.createIcons();\n                }\n                alert(ozgI18n.errorConnection);\n            }\n        }\n\n        async function ozgOpenLessonModal(lessonId) {\n            ozgCloseAllModals();\n            const modal = document.getElementById('ozgLessonModal');\n            const content = document.getElementById('ozgLessonModalContent');\n            modal.classList.add('show');\n            modal.setAttribute('data-lesson-id', lessonId);\n            content.innerHTML = '<div style=\"text-align:center; padding: 100px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan); width:40px; height:40px;\"><\/i><\/div>';\n            lucide.createIcons();\n\n            try {\n                const resp = await fetch(`${apiBase}\/lesson\/details\/${lessonId}?_=${Date.now()}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n                if (!data.success) { showHeaderToast(data.message); return; }\n\n                const typeLabel = data.type === 'tutor_quiz' ? 'QUIZ' : (data.type === 'tutor_assignments' ? 'ASSIGNMENT' : 'LESSON');\n\n                let html = `\n                    <div class=\"ozg-lesson-modal-header\" style=\"background-image: url('${data.thumb || ''}')\">\n                        <button class=\"ozg-quiz-close\" style=\"position: absolute; right: 16px; top: 16px; z-index: 10;\" onclick=\"document.getElementById('ozgLessonModal').classList.remove('show')\"><i data-lucide=\"x\"><\/i><\/button>\n                        <div style=\"position: absolute; left: 16px; top: 16px; z-index: 10; display: flex; gap: 8px;\">\n                            <button class=\"ozg-icon-btn\" title=\"Open full page\" style=\"background: rgba(0,0,0,0.5);\" onclick=\"ozgOpenPageInDashboard(${lessonId}, '${data.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}', '${data.url}')\"><i data-lucide=\"external-link\"><\/i><\/button>\n                            <button class=\"ozg-icon-btn\" title=\"Share\" style=\"background:rgba(0,0,0,0.5);\" onclick=\"ozgShareFeedCard(${lessonId}, '${data.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}', '${data.slug || ''}')\"><i data-lucide=\"share-2\"><\/i><\/button>\n                        <\/div>\n                    <\/div>\n                    <div class=\"ozg-lesson-modal-content\">\n                        <div style=\"display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:12px; flex-wrap:wrap; gap:10px;\">\n                            <h2 class=\"ozg-lesson-modal-title\" style=\"margin:0;\">${escapeHtml(data.title)}<\/h2>\n                            ${data.is_completed ? `<div style=\"background:rgba(0,230,118,0.1); color:var(--success-color); padding:4px 12px; border-radius:20px; font-size:0.8rem; font-weight:700; border:1px solid var(--success-color);\">COMPLETED<\/div>` : `<div style=\"background:rgba(0,240,255,0.1); color:var(--accent-cyan); padding:4px 12px; border-radius:20px; font-size:0.8rem; font-weight:700; border:1px solid var(--accent-cyan);\">${typeLabel}<\/div>`}\n                        <\/div>\n                        <div style=\"color:var(--accent-cyan); font-size:0.85rem; font-weight:600; margin-bottom:20px; display:flex; align-items:center; gap:6px; cursor:pointer;\" onclick=\"ozgOpenCourseModal(${data.course_id})\">\n                            <i data-lucide=\"book\" style=\"width:14px;\"><\/i> Course: ${escapeHtml(data.course_title)}\n                        <\/div>\n                `;\n\n                if (data.is_enrolled) {\n                    if (data.video_html) {\n                        html += `<div class=\"ozg-video-container\">${data.video_html}<\/div>`;\n                    } else if (data.video) {\n                        let videoHtml = '';\n                        const src = data.video.source;\n                        if (src === 'youtube') {\n                            videoHtml = `<iframe src=\"https:\/\/www.youtube.com\/embed\/${data.video.source_video_id}?autoplay=1&mute=0&controls=1&rel=0&modestbranding=1\" allow=\"autoplay; encrypted-media; picture-in-picture\" allowfullscreen loading=\"lazy\"><\/iframe>`;\n                        } else if (src === 'vimeo') {\n                            videoHtml = `<iframe src=\"https:\/\/player.vimeo.com\/video\/${data.video.source_video_id}?autoplay=1&muted=0&badge=0&autopause=0\" width=\"100%\" height=\"100%\" frameborder=\"0\" allow=\"autoplay; fullscreen; picture-in-picture\" allowfullscreen loading=\"lazy\"><\/iframe>`;\n                        } else if (src === 'html5' || src === 'external_url') {\n                             videoHtml = `<video controls autoplay preload=\"metadata\" style=\"width:100%; height:100%; object-fit:cover;\" src=\"${data.video.source_video_id || data.video.source_external_url}\"><\/video>`;\n                        } else if (src === 'embedded') {\n                             videoHtml = data.video.source_embedded;\n                        }\n\n                        if (videoHtml) {\n                            html += `<div class=\"ozg-video-container\">${videoHtml}<\/div>`;\n                        }\n                    }\n\n                    html += `<div class=\"ozg-lesson-description\" style=\"margin-bottom: 24px;\">${data.content}<\/div>`;\n\n                    html += `\n                        <div style=\"display:flex; justify-content:space-between; align-items:center; margin-top:30px; padding-top:20px; border-top:1px solid var(--glass-border); flex-wrap:wrap; gap:16px;\">\n                            ${data.prev_id ? `<button class=\"ozg-btn-sec\" style=\"padding:10px 16px; font-size:0.85rem;\" onclick=\"ozgOpenLessonModal(${data.prev_id})\"><i data-lucide=\"arrow-left\"><\/i> Previous<\/button>` : '<div><\/div>'}\n\n                            <div style=\"text-align: center;\">\n                                ${data.is_completed ?\n                                    `<button class=\"ozg-btn-sec\" disabled><i data-lucide=\"check-circle\"><\/i> Completed<\/button>` :\n                                    `<button class=\"ozg-btn\" onclick=\"ozgMarkLessonComplete(${data.id}, ${data.next_id || 0})\"><i data-lucide=\"check\"><\/i> Mark as Completed<\/button>`\n                                }\n                            <\/div>\n\n                            ${data.next_id ? `<button class=\"ozg-btn-sec\" style=\"padding:10px 16px; font-size:0.85rem;\" onclick=\"ozgOpenLessonModal(${data.next_id})\">Next <i data-lucide=\"arrow-right\"><\/i><\/button>` : '<div><\/div>'}\n                        <\/div>\n                    `;\n                } else {\n                    html += `\n                        <div class=\"ozg-lesson-description\" style=\"margin-bottom: 24px;\">\n                            ${data.excerpt}...\n                            <div style=\"margin-top:16px; padding:12px; background:rgba(255,170,0,0.1); border:1px solid rgba(255,170,0,0.3); border-radius:8px; color:#ffaa00; font-size:0.85rem;\">\n                                <i data-lucide=\"lock\" style=\"width:14px; vertical-align:middle;\"><\/i> Enrol in the parent course to unlock full lesson content and videos.\n                            <\/div>\n                        <\/div>\n                        <div style=\"text-align: center; margin-top: 32px; background:rgba(0,0,0,0.3); padding:24px; border-radius:20px; border:1px solid var(--accent-cyan);\">\n                            <h4 style=\"margin:0 0 16px 0; color:#fff;\">Enrol in \"${escapeHtml(data.course_title)}\"<\/h4>\n                            ${data.course_price_type === 'paid' ?\n                                `<a href=\"${data.course_url}\" class=\"ozg-btn\" style=\"padding: 16px 32px; font-size: 1.1rem;\"><i data-lucide=\"shopping-cart\"><\/i> View Course & Buy<\/a>` :\n                                `<button class=\"ozg-btn\" style=\"padding: 16px 32px; font-size: 1.1rem;\" onclick=\"ozgConfirmSubscribeFromModal(${data.course_id})\"><i data-lucide=\"play-circle\"><\/i> Enrol Now<\/button>`\n                            }\n                        <\/div>\n                    `;\n                }\n\n                html += `<\/div>`;\n                content.innerHTML = html;\n                lucide.createIcons();\n\n                \/\/ Try to re-initialize Tutor LMS components if they exist in the new content\n                setTimeout(() => {\n                    if (typeof jQuery !== 'undefined') {\n                        jQuery(document).trigger('tutor_lesson_load');\n                        jQuery('.tutor-quiz-wrap').trigger('tutor_quiz_init');\n                        if (window.tutor_lesson_sidebar_toggle) window.tutor_lesson_sidebar_toggle();\n                    }\n\n                    \/\/ Auto-complete if video\/audio ends\n                    const modalMedia = content.querySelector('video, audio');\n                    if (modalMedia) {\n                        modalMedia.onended = () => {\n                            console.log('Modal media ended, completing content:', data.id);\n                            ozgMarkLessonComplete(data.id, data.next_id || 0);\n                        };\n                    }\n                }, 100);\n            } catch(e) { console.error(e); content.innerHTML = '<div style=\"padding: 40px; text-align: center;\">Error loading lesson details.<\/div>'; }\n        }\n\n        async function ozgMarkLessonComplete(lessonId, nextLessonId = 0) {\n            if (ozgI18n.isGuest) return ozgShowSignUpPrompt();\n            try {\n                \/\/ We'll use our milestone completion logic if it fits, or Tutor LMS direct if possible\n                const resp = await fetch(`${apiBase}\/milestone\/complete`, {\n                    method: 'POST',\n                    headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce},\n                    body: JSON.stringify({ milestone_id: lessonId })\n                });\n                const result = await resp.json();\n                if (result.success) {\n                    showHeaderToast('Lesson completed!');\n                    \/\/ Also refresh feed to update progress bars\n                    loadSmartFeed(true);\n\n                    if (nextLessonId) {\n                        showHeaderToast('\u2705 Lesson done! Opening next\u2026');\n                        setTimeout(() => ozgOpenLessonModal(nextLessonId), 1200);\n                    } else {\n                        \/\/ Update lesson modal if still open (refresh state)\n                        if (document.getElementById('ozgLessonModal').classList.contains('show') &&\n                            document.getElementById('ozgLessonModal').getAttribute('data-lesson-id') == lessonId) {\n                            ozgOpenLessonModal(lessonId);\n                        }\n                    }\n                }\n            } catch(e) { alert(ozgI18n.errorConnection); }\n        }\n\n        async function ozgOpenFundraisingModal(campaignId) {\n                    ozgCloseAllModals();\n                    const modal = document.getElementById('ozgFundraisingModal');\n                    const content = document.getElementById('ozgFundraisingModalContent');\n                    modal.classList.add('show');\n                    content.innerHTML = '<div style=\"text-align:center; padding: 100px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-cyan); width:40px; height:40px;\"><\/i><\/div>';\n                    lucide.createIcons();\n\n                    try {\n                        const resp = await fetch(`${apiBase}\/fundraising\/details\/${campaignId}?_=${Date.now()}`, { headers: {'X-WP-Nonce': nonce} });\n                        const data = await resp.json();\n                        if (!data.success) { showHeaderToast(data.message || 'Campaign not found'); return; }\n\n                        const raisedDisplay = data.raised_fmt || (data.raised > 0 ? String(Math.round(data.raised)) : '0');\n                        const goalDisplay   = data.goal_fmt   || (data.goal   > 0 ? String(Math.round(data.goal))   : '\u2014');\n                        const pct = Math.min(100, data.percent || 0);\n\n                        const html = `\n                            <div class=\"ozg-fundraising-modal-header\" style=\"background-image: url('${data.thumb || ''}')\">\n                                <button class=\"ozg-quiz-close\" style=\"position:absolute; right:16px; top:16px; z-index:10;\"\n                                    onclick=\"document.getElementById('ozgFundraisingModal').classList.remove('show')\">\n                                    <i data-lucide=\"x\"><\/i><\/button>\n                                <div style=\"position:absolute; left:16px; top:16px; z-index:10;\">\n                                    <button class=\"ozg-icon-btn\" style=\"background:rgba(0,0,0,0.5);\"\n                                        onclick=\"ozgOpenPageInDashboard(${campaignId}, '${data.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}', '${data.url}')\"><i data-lucide=\"external-link\"><\/i><\/button>\n                                    <button class=\"ozg-icon-btn\" title=\"Share\" style=\"background:rgba(0,0,0,0.5);\" onclick=\"ozgShareFeedCard(${campaignId}, '${data.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;')}', '${data.slug || ''}')\"><i data-lucide=\"share-2\"><\/i><\/button>\n                                <\/div>\n                            <\/div>\n                            <div class=\"ozg-fundraising-modal-content\">\n                                <h2 class=\"ozg-fundraising-modal-title\">${escapeHtml(data.title)}<\/h2>\n                                <div style=\"color:var(--text-muted); font-size:0.9rem; margin-bottom:18px; line-height:1.5; font-style:italic;\">${data.excerpt}<\/div>\n\n                                <div style=\"margin-bottom:20px; background:rgba(255,255,255,0.05); padding:18px; border-radius:16px; border:1px solid var(--glass-border);\">\n                                    <div style=\"display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:10px;\">\n                                        <div>\n                                            <div style=\"font-size:0.68rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:2px;\">Raised<\/div>\n                                            <div style=\"font-size:1.5rem; font-weight:800; color:#eab308; line-height:1;\">${raisedDisplay}<\/div>\n                                        <\/div>\n                                        <div style=\"text-align:right;\">\n                                            <div style=\"font-size:0.68rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:2px;\">Goal<\/div>\n                                            <div style=\"font-size:1.1rem; font-weight:700; color:#fff;\">${goalDisplay}<\/div>\n                                        <\/div>\n                                    <\/div>\n                                    <div style=\"height:10px; background:rgba(255,255,255,0.08); border-radius:10px; overflow:hidden; margin-bottom:6px;\">\n                                        <div style=\"height:100%; background:linear-gradient(90deg,#eab308,#fbbf24); width:${pct}%; transition:width 1.2s ease; border-radius:10px;\"><\/div>\n                                    <\/div>\n                                    <div style=\"font-size:0.82rem; font-weight:700; color:#eab308; text-align:center;\">${pct}% funded<\/div>\n                                <\/div>\n\n                                <div class=\"ozg-fundraising-description\" style=\"max-height:260px; overflow-y:auto; margin-bottom:18px;\">${data.content}<\/div>\n\n                                <div style=\"text-align:center; background:rgba(0,0,0,0.3); padding:18px; border-radius:20px; border:1px solid #eab308;\">\n                                    <h4 style=\"margin:0 0 12px 0; color:#fff; font-size:0.95rem;\">Support this mission<\/h4>\n                                    <button class=\"ozg-btn\" id=\"ozgInvestBtn_${campaignId}\"\n                                        style=\"background:linear-gradient(135deg,#eab308,#fbbf24); color:#000; padding:14px 28px; font-size:1rem;\"\n                                        onclick=\"ozgShowDonationPanel(${campaignId},'${data.url}',this,'${data.kaspi_mobile}')\">\n                                        <i data-lucide=\"heart\"><\/i> Invest now\n                                    <\/button>\n                                <\/div>\n\n                                <div id=\"ozgDonationPanel_${campaignId}\"\n                                    style=\"display:none; margin-top:18px; border-radius:16px; overflow:hidden; border:1px solid #eab308; min-height:100px;\">\n                                <\/div>\n\n                                <div style=\"margin-top:20px; text-align:center;\">\n                                    <button class=\"ozg-btn-sec\" style=\"width:100%; justify-content:center; background:rgba(255,255,255,0.05); color:var(--text-muted); font-size:0.85rem; border:1px solid var(--glass-border); padding:10px;\"\n                                        onclick=\"ozgToggleInvestors(${campaignId}, this)\">\n                                        <span>Showing investors<\/span> <i data-lucide=\"chevron-down\" style=\"width:16px; height:16px; margin-left:6px; transition:transform 0.3s;\"><\/i>\n                                    <\/button>\n                                    <div id=\"ozgInvestorsList_${campaignId}\" style=\"display:none; margin-top:12px; text-align:left; background:rgba(0,0,0,0.2); border-radius:12px; padding:12px; border:1px solid var(--glass-border);\">\n                                        <div class=\"investors-items\" style=\"max-height:200px; overflow-y:auto; font-size:0.9rem;\"><\/div>\n                                    <\/div>\n                                <\/div>\n                            <\/div>`;\n\n                        content.innerHTML = html;\n                        lucide.createIcons();\n                        setTimeout(() => {\n                            if (typeof jQuery !== 'undefined') { jQuery(content).find('form').trigger('ready'); if (typeof give !== 'undefined' && give.init) give.init(); }\n                        }, 200);\n                    } catch(e) { console.error(e); content.innerHTML = '<div style=\"padding:40px; text-align:center; color:var(--warning-color);\">Error loading campaign.<\/div>'; }\n                }\n\n        async function ozgToggleInvestors(campaignId, btn) {\n            const listWrap = document.getElementById(`ozgInvestorsList_${campaignId}`);\n            if (!listWrap) return;\n            const itemsCont = listWrap.querySelector('.investors-items');\n            const icon = btn.querySelector('i');\n\n            const isHidden = listWrap.style.display === 'none' || listWrap.style.display === '';\n\n            if (isHidden) {\n                listWrap.style.display = 'block';\n                if (icon) icon.style.transform = 'rotate(180deg)';\n                setTimeout(() => listWrap.scrollIntoView({ behavior: 'smooth', block: 'start' }), 50);\n\n                if (itemsCont && itemsCont.innerHTML === '') {\n                    itemsCont.innerHTML = '<div style=\"text-align:center; padding:20px;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; width:20px; height:20px;\"><\/i><\/div>';\n                    if (typeof lucide !== 'undefined') lucide.createIcons();\n\n                    try {\n                        const resp = await fetch(`${apiBase}\/fundraising\/investors\/${campaignId}?_=${Date.now()}`, { headers: {'X-WP-Nonce': nonce} });\n                        const data = await resp.json();\n                        if (data.success && data.investors && data.investors.length > 0) {\n                            itemsCont.innerHTML = data.investors.map(inv => `\n                                <div style=\"display:flex; justify-content:space-between; padding:8px 0; border-bottom:1px solid rgba(255,255,255,0.05);\">\n                                    <span style=\"color:#fff; font-weight:500;\">${escapeHtml(inv.name)}<\/span>\n                                    <span style=\"color:#eab308; font-weight:700;\">${inv.amount_fmt}<\/span>\n                                <\/div>\n                            `).join('');\n                        } else {\n                            itemsCont.innerHTML = '<div style=\"color:var(--text-muted); padding:10px; text-align:center;\">No investors yet. Be the first!<\/div>';\n                        }\n                        if (typeof lucide !== 'undefined') lucide.createIcons();\n                    } catch(e) {\n                        itemsCont.innerHTML = '<div style=\"color:var(--warning-color); padding:10px;\">Error loading investors.<\/div>';\n                    }\n                }\n            } else {\n                listWrap.style.display = 'none';\n                if (icon) icon.style.transform = 'rotate(0deg)';\n            }\n        }\n\n        function ozgScrollToDonation(btn) {\n            const modal = document.getElementById('ozgFundraisingModal');\n            \/\/ Look for any form or specific FundEngine containers\n            const target = modal.querySelector('form, .wf-donation-form, .wf-fundraising-single-bottom, .wdp-donation-form-wrapper');\n\n            if (target) {\n                target.scrollIntoView({ behavior: 'smooth', block: 'start' });\n                target.style.transition = 'outline 0.5s ease';\n                target.style.outline = '2px solid #fbbf24';\n                setTimeout(() => target.style.outline = 'none', 2000);\n            } else if (btn && btn.getAttribute('data-url')) {\n                \/\/ If no form found in modal content, redirect to full page\n                window.location.href = btn.getAttribute('data-url');\n            } else {\n                showHeaderToast('Scroll down to see the donation options');\n            }\n        }\n\n        async function ozgLikeP2PCampaign(campaignId, btnElement) {\n            try {\n                const resp = await fetch(`${apiBase}\/like\/toggle`, {\n                    method: 'POST',\n                    headers: { 'Content-Type': 'application\/json', 'X-WP-Nonce': nonce },\n                    body: JSON.stringify({ post_id: campaignId })\n                });\n                const data = await resp.json();\n                if (data.success) {\n                    const likesSpan = document.getElementById(`ozg-p2p-likes-${campaignId}`);\n                    if (likesSpan) likesSpan.innerText = data.new_count;\n                    btnElement.classList.toggle('liked');\n                    if (btnElement.classList.contains('liked')) {\n                        btnElement.style.backgroundColor = '#fecaca';\n                        btnElement.style.color = '#dc2626';\n                        btnElement.style.border = '1px solid #dc2626';\n                    } else {\n                        btnElement.style.backgroundColor = '#f3f4f6';\n                        btnElement.style.color = '#ef4444';\n                        btnElement.style.border = 'none';\n                    }\n                }\n            } catch (e) {\n                console.error('Like error:', e);\n                showHeaderToast('Error liking campaign');\n            }\n        }\n\n        async function loadSmartFeed(reset = false) {\n            const container = document.getElementById('ozg-smart-feed');\n            if (!container) return; \/\/ JetList engine is active or feed is hidden\n\n            if (reset && _feedAbortCtrl) { try{_feedAbortCtrl.abort();}catch(e){} }\n            _feedAbortCtrl = new AbortController();\n            if (isFeedLoading && !reset) return;\n            if (reset) isFeedLoading = false;\n            const loader = document.getElementById('ozg-feed-loader');\n            if (!container) return;\n\n            if (reset) {\n                currentFeedPage = 1;\n                hasMoreFeed = true;\n                container.innerHTML = '';\n            }\n            if (!hasMoreFeed) return;\n\n            isFeedLoading = true;\n            if (loader) loader.style.display = 'block';\n\n            try {\n                const params = new URLSearchParams({\n                    page: currentFeedPage,\n                    limit: currentFeedPage === 1 ? 4 : 12,\n                    search: currentFeedSearch,\n                    tag: currentFeedTag\n                });\n                const resp = await fetch(`${apiBase}\/feed?${params.toString()}`, { headers: {'X-WP-Nonce': nonce}, signal: _feedAbortCtrl.signal });\n                const data = await resp.json();\n\n                if (data.items.length === 0 && reset) {\n                    container.innerHTML = `<div style=\"text-align:center; color:var(--text-muted); grid-column: 1\/-1; background:rgba(255,255,255,0.02); padding: 40px; border-radius:16px; border:1px dashed rgba(255,255,255,0.1);\">No content found.<\/div>`;\n                } else {\n                    let html = '';\n\n                    if (reset && data.missing_spheres) {\n                        html += `<div style=\"grid-column: 1\/-1; background: rgba(255, 170, 0, 0.1); border: 1px solid rgba(255, 170, 0, 0.3); color: #ffaa00; padding: 16px; border-radius: 12px; text-align: center; font-size: 0.95rem; margin-bottom: 8px;\"><i data-lucide=\"alert-triangle\" style=\"width: 18px; margin-right: 8px; vertical-align: middle; display: inline-block;\"><\/i> Audit not completed! Choose your focus spheres to unlock highly personalized recommendations. Currently showing trending content.<\/div>`;\n                    }\n\n                    for (const item of data.items) {\n                        const bg = item.thumb ? 'background-image: url(' + item.thumb + ');' : 'background: linear-gradient(135deg, ' + item.pillar_color + '40, #05070f);';\n                        let onclickAction = '';\n                        const safeTitle = item.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '\\\\\"');\n\n                        if (item.is_challenge) {\n                            onclickAction = \"ozgSwitchTab('challenges'); return false;\";\n                        } else if (item.is_course) {\n                            onclickAction = \"ozgOpenCourseModal(\" + item.id + \"); return false;\";\n                        } else if (item.is_lesson) {\n                            onclickAction = \"ozgOpenLessonModal(\" + item.id + \"); return false;\";\n                        } else if (item.is_fundraising) {\n                            onclickAction = \"ozgOpenFundraisingModal(\" + item.id + \"); return false;\";\n                        } else if (item.is_givewp) {\n                            onclickAction = \"ozgOpenP2PModalExpanded('\" + item.p2p_html + \"', '\" + safeTitle + \"', '\" + item.author_name + \"', \" + item.likes + \", \" + item.id + \"); return false;\";\n                        } else {\n                            onclickAction = \"ozgOpenPageInDashboard(\" + item.id + \", '\" + safeTitle + \"', '\" + item.url + \"'); return false;\";\n                        }\n\n                        let centerActionHtml = '';\n                        let progressHtml = '';\n\n                        if (item.is_fundraising) {\n                            const _gf = item.fund_goal_fmt;\n                            const _rf = item.fund_raised_fmt;\n                            progressHtml = `\n                                <div style=\"position:absolute;top:0;left:0;right:0;height:4px;background:rgba(255,255,255,0.1);z-index:10;\">\n                                    <div style=\"height:100%;background:#eab308;width:${Math.min(100,item.fund_percent)}%;transition:width 0.5s;\"><\/div>\n                                <\/div>\n                                <div style=\"position:absolute;top:8px;right:8px;z-index:10;text-align:right;\">\n                                    <div style=\"background:rgba(234,179,8,0.9);color:#000;padding:2px 6px;border-radius:4px;font-size:0.65rem;font-weight:800;display:inline-block;\">${item.fund_percent}%<\/div>\n                                    ${_rf ? `<br><span style=\"background:rgba(0,0,0,0.65);color:#fff;padding:1px 5px;border-radius:4px;font-size:0.6rem;font-weight:600;margin-top:1px;display:inline-block;\">\u2191${_rf}<\/span>` : ''}\n                                    ${_gf ? `<br><span style=\"background:rgba(0,0,0,0.65);color:#eab308;padding:1px 5px;border-radius:4px;font-size:0.6rem;font-weight:700;margin-top:1px;display:inline-block;\">\u2299${_gf}<\/span>` : ''}\n                                <\/div>`;\n                        } else if (item.is_enrolled && (item.is_course || item.is_lesson)) {\n                            const pct = item.completion_pct || 0;\n                            progressHtml = '<div style=\"position: absolute; top: 0; left: 0; right: 0; height: 4px; background: rgba(255,255,255,0.1); z-index: 10;\">' +\n                                '<div style=\"height: 100%; background: var(--success-color); width: ' + pct + '%; transition: width 0.5s ease;\"><\/div>' +\n                                '<\/div>' +\n                                (item.is_course ? '<div style=\"position: absolute; top: 8px; right: 8px; background: rgba(0,230,118,0.9); color: #000; padding: 2px 6px; border-radius: 4px; font-size: 0.65rem; font-weight: 800; z-index: 10; display: flex; align-items: center; gap: 3px;\">' +\n                                '<i data-lucide=\"check-circle\" style=\"width: 10px; height: 10px;\"><\/i> ' + pct + '%' +\n                                '<\/div>' : '');\n                        }\n\n                        if (item.has_media) {\n                            const playIcon = item.media_type === 'audio' ? 'headphones' : 'play';\n                            centerActionHtml = '<button class=\"ozg-feed-play-btn\" onclick=\"event.stopPropagation(); ozgPlayFeedMedia(event, this, \\'' + item.media_data + '\\', ' + item.id + ')\">' +\n                                '<i data-lucide=\"' + playIcon + '\" style=\"width: 24px; height: 24px; fill: white; ' + (item.media_type === 'audio' ? '' : 'margin-left: 3px;') + '\"><\/i>' +\n                                '<\/button>';\n                        } else if (item.is_givewp) {\n                            centerActionHtml = '<button class=\"ozg-feed-play-btn\" style=\"width: auto; height: auto; padding: 12px 24px; border-radius: 24px; background: linear-gradient(135deg, #22c55e, #16a34a); border: none; color: #fff; font-weight: 700; gap: 8px; display: flex; align-items: center; box-shadow: 0 4px 15px rgba(34, 197, 94, 0.4);\" onclick=\"event.stopPropagation(); ozgOpenP2PModalExpanded(\\'' + item.p2p_html + '\\', \\'' + safeTitle + '\\', \\'' + item.author_name + '\\', ' + item.likes + ', ' + item.id + ')\">' +\n                                '<i data-lucide=\"heart-handshake\" style=\"width: 20px; height: 20px;\"><\/i> Invest now' +\n                                '<\/button>';\n                        }\n\n                        html += '<div class=\"ozg-feed-card\" style=\"--card-color: ' + item.pillar_color + ';\">' +\n                            progressHtml +\n                            '<div class=\"ozg-feed-media-container\" style=\"position: absolute; inset: 0; z-index: 1;\">' +\n                                '<div class=\"ozg-feed-card-bg\" style=\"' + bg + '\"><\/div>' +\n                            '<\/div>' +\n                            '<div class=\"ozg-feed-nav-overlay\" style=\"position: absolute; inset: 0; z-index: 3; cursor: pointer;\" onclick=\"' + onclickAction + '\"><\/div>' +\n                            centerActionHtml +\n                            '<div class=\"ozg-feed-content\" style=\"position: relative; z-index: 5; pointer-events: none;\">' +\n                                '<div class=\"ozg-feed-tags\" style=\"pointer-events: auto; cursor: pointer; display: inline-block;\" onclick=\"' + onclickAction + '\">' +\n                                    '<span style=\"background: ' + item.pillar_color + '; color: #000;\">' + item.area_name + '<\/span>' +\n                                '<\/div>' +\n                                '<div style=\"margin-top: auto;\">' +\n                                    '<div class=\"ozg-feed-author-row\" style=\"pointer-events: auto; cursor: pointer; display: inline-flex;\" onclick=\"' + onclickAction + '\">' +\n                                        '<img decoding=\"async\" src=\"' + item.author_avatar + '\" class=\"ozg-feed-author-avatar\" alt=\"\">' +\n                                        '<span class=\"ozg-feed-author-name\">@' + item.author_name + '<\/span>' +\n                                    '<\/div>' +\n                                    '<h4 class=\"ozg-feed-title\" style=\"pointer-events: auto; cursor: pointer;\" onclick=\"' + onclickAction + '\">' + item.title + '<\/h4>' +\n                                    '<div style=\"display:flex; justify-content:space-between; align-items:flex-end;\">' +\n                                        '<div class=\"ozg-feed-stats\" style=\"pointer-events: auto; cursor: pointer;\" onclick=\"' + onclickAction + '\">' +\n                                            '<span style=\"display:flex; align-items:center; gap:4px;\"><i data-lucide=\"heart\" style=\"width:14px; fill:currentColor;\"><\/i> ' + item.likes + '<\/span>' +\n                                        '<\/div>' +\n                                        '<div class=\"ozg-feed-actions\" style=\"pointer-events: auto;\">' +\n                                            '<button class=\"ozg-icon-btn\" style=\"background: rgba(0,0,0,0.5); backdrop-filter: blur(5px);\" onclick=\"event.stopPropagation(); ozgShareFeedCard(' + item.id + ', \\'' + safeTitle + '\\', \\'' + (item.slug || '') + '\\')\"><i data-lucide=\"share-2\"><\/i><\/button>' +\n                                            '<button class=\"ozg-icon-btn\" style=\"background: rgba(0,0,0,0.5); backdrop-filter: blur(5px);\" onclick=\"event.stopPropagation(); ozgToggleGlobalBookmark(this, ' + item.id + ')\"><i data-lucide=\"bookmark-plus\"><\/i><\/button>' +\n                                        '<\/div>' +\n                                    '<\/div>' +\n                                '<\/div>' +\n                            '<\/div>' +\n                        '<\/div>';\n                    }\n\n                    container.insertAdjacentHTML('beforeend', html);\n\n                    container.querySelectorAll('.ozg-feed-card:not(.prefetched)').forEach(card => {\n                        card.classList.add('prefetched');\n                        if (prefetchObserver) prefetchObserver.observe(card);\n                    });\n\n                    lucide.createIcons();\n\n                    if (reset && loader) feedLoadObserver.observe(loader);\n                }\n\n                hasMoreFeed = data.has_more;\n                if (hasMoreFeed) currentFeedPage++;\n\n            } catch(e) {\n                if (e.name === 'AbortError') return;\n                console.error('Feed error:', e);\n                if (reset) container.innerHTML = '<div style=\"text-align:center; color:var(--warning-color); grid-column: 1\/-1;\">Error loading feed.<\/div>';\n            } finally {\n                isFeedLoading = false;\n                if (loader) loader.style.display = hasMoreFeed ? 'block' : 'none';\n            }\n        }\n\n        function goToTrackAndReload() { localStorage.setItem('ozgActiveTab', 'my-track'); window.location.reload(); }\n\n        function changeFocusAreas() { showView('view-select'); renderSelectionGrid(); window.scrollTo(0, 0); }\n\n        function renderFinalResult() {\n            let pScores = { wisdom: 0, strength: 0, wealth: 0, balance: 0 };\n            for (let key in finalScores) { let p = key.split('_')[0]; if (pScores[p] !== undefined) pScores[p] += finalScores[key]; }\n            let maxP = Math.max(pScores.wisdom, pScores.strength, pScores.wealth, pScores.balance);\n            let minP = Math.min(pScores.wisdom, pScores.strength, pScores.wealth, pScores.balance);\n            let diff = maxP - minP;\n            let archText = ''; let warnText = '';\n\n            let dominant = [];\n            if (maxP - pScores.wisdom <= 10) dominant.push('wisdom');\n            if (maxP - pScores.strength <= 10) dominant.push('strength');\n            if (maxP - pScores.wealth <= 10) dominant.push('wealth');\n            if (maxP - pScores.balance <= 10) dominant.push('balance');\n\n            if (diff <= 15) { archText = ozgI18n.v_bal; }\n            else if (dominant.length === 1) {\n                if (dominant[0] === 'wisdom') archText = ozgI18n.v_pure_w;\n                else if (dominant[0] === 'strength') archText = ozgI18n.v_pure_s;\n                else if (dominant[0] === 'wealth') archText = ozgI18n.v_pure_c;\n                else archText = ozgI18n.v_pure_b;\n            } else if (dominant.length === 2) {\n                if (dominant.includes('wisdom') && dominant.includes('strength')) archText = pScores.wisdom > pScores.strength ? ozgI18n.v_dom_w_s : (pScores.strength > pScores.wisdom ? ozgI18n.v_dom_s_w : ozgI18n.v_dual_w_s);\n                else if (dominant.includes('wisdom') && dominant.includes('wealth')) archText = pScores.wisdom > pScores.wealth ? ozgI18n.v_dom_w_c : (pScores.wealth > pScores.wisdom ? ozgI18n.v_dom_c_w : ozgI18n.v_dual_w_c);\n                else if (dominant.includes('wisdom') && dominant.includes('balance')) archText = pScores.wisdom > pScores.balance ? ozgI18n.v_dom_w_b : (pScores.balance > pScores.wisdom ? ozgI18n.v_dom_b_w : ozgI18n.v_dual_w_b);\n                else if (dominant.includes('strength') && dominant.includes('wealth')) archText = pScores.strength > pScores.wealth ? ozgI18n.v_dom_s_c : (pScores.wealth > pScores.strength ? ozgI18n.v_dom_c_s : ozgI18n.v_dual_s_c);\n                else if (dominant.includes('strength') && dominant.includes('balance')) archText = pScores.strength > pScores.balance ? ozgI18n.v_dom_s_b : (pScores.balance > pScores.strength ? ozgI18n.v_dom_b_s : ozgI18n.v_dual_s_b);\n                else archText = pScores.wealth > pScores.balance ? ozgI18n.v_dom_c_b : (pScores.balance > pScores.wealth ? ozgI18n.v_dom_b_c : ozgI18n.v_dual_c_b);\n            } else { archText = ozgI18n.v_mix; }\n\n            let weakPillar = Object.keys(pScores).reduce((a, b) => pScores[a] < pScores[b] ? a : b);\n            if (weakPillar === 'wisdom') warnText = ozgI18n.w_wisdom;\n            else if (weakPillar === 'strength') warnText = ozgI18n.w_strength;\n            else if (weakPillar === 'wealth') warnText = ozgI18n.w_wealth;\n            else warnText = ozgI18n.w_balance;\n\n            const listEl = document.getElementById('final-focus-list'); listEl.innerHTML = '';\n            selectedFocus.forEach(f => {\n                let p = f.split('_')[0]; let a = f.split('_')[1];\n                let pData = kingdomStruct[p]; let aName = pData.areas[a];\n                listEl.innerHTML += `<div style=\"background:rgba(255,255,255,0.05); border:1px solid ${pData.color}50; border-radius:12px; padding:12px; display:flex; align-items:center; gap:10px;\"><i data-lucide=\"${pData.icon}\" style=\"color:${pData.color}; width:18px;\"><\/i> <span style=\"color:#fff; font-size:0.9rem; font-weight:500;\">${aName}<\/span><\/div>`;\n            });\n\n            const vTextEl = document.getElementById('ai-verdict-text'); vTextEl.innerHTML = '';\n            let typeIdx = 0;\n            const typeEffect = () => {\n                if (typeIdx < archText.length) {\n                    vTextEl.innerHTML = `<strong>${archText.substring(0, typeIdx + 1)}<\/strong>`;\n                    typeIdx++;\n                    setTimeout(typeEffect, 15);\n                } else {\n                    vTextEl.innerHTML += `<div style=\"opacity:0; transition: opacity 1.5s ease-in-out; margin-top:16px; color:var(--warning-color); display:flex; align-items:flex-start; gap:10px; background: rgba(255, 51, 102, 0.05); padding: 12px; border-radius: 12px; border: 1px solid rgba(255, 51, 102, 0.2);\" id=\"warn-fade-box\"><i data-lucide=\"alert-triangle\" style=\"width:20px; min-width:20px; margin-top:2px;\"><\/i> <span>${warnText}<\/span><\/div>`;\n                    lucide.createIcons();\n                    setTimeout(() => { document.getElementById('warn-fade-box').style.opacity = '1'; }, 100);\n                }\n            };\n            setTimeout(typeEffect, 400);\n\n            const cP = (v) => Math.round((v \/ 60) * 100);\n            const ctx = document.getElementById('kingdomChart');\n            if (window.kingdomChartInstance) window.kingdomChartInstance.destroy();\n            const gradient = ctx.getContext('2d').createLinearGradient(0, 0, 0, 400);\n            gradient.addColorStop(0, 'rgba(0, 240, 255, 0.4)');\n            gradient.addColorStop(1, 'rgba(138, 43, 226, 0.4)');\n\n            window.kingdomChartInstance = new Chart(ctx, {\n                type: 'radar',\n                data: {\n                    labels: ['\u041c\u0443\u0434\u0440\u043e\u0441\u0442\u044c', '\u0411\u043e\u0433\u0430\u0442\u0441\u0442\u0432\u043e', '\u0411\u0430\u043b\u0430\u043d\u0441', '\u0421\u0438\u043b\u0430'],\n                    datasets: [{\n                        data: [cP(pScores.wisdom), cP(pScores.wealth), cP(pScores.balance), cP(pScores.strength)],\n                        backgroundColor: gradient, borderColor: '#00f0ff', pointBackgroundColor: ['#3b82f6', '#eab308', '#22c55e', '#ef4444'], pointBorderColor: '#fff', borderWidth: 2, pointRadius: 4\n                    }]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: true,\n                    scales: { r: { angleLines: { color: 'rgba(255, 255, 255, 0.1)' }, grid: { color: 'rgba(255, 255, 255, 0.1)' }, pointLabels: { color: '#8b9bb4', font: { family: 'Inter', size: 13, weight: '600' } }, ticks: { display: false, min: 0, max: 100 } } },\n                    plugins: { legend: { display: false } }\n                }\n            });\n\n            loadSmartFeed(true);\n        }\n\n        async function resetQuizAndRetake() {\n            if (!confirm(ozgI18n.confirmErase)) return;\n            localStorage.removeItem('ozg_quiz_answers');\n            localStorage.removeItem('ozg_age_group');\n            await fetch(`${apiBase}\/kingdom\/save_quiz`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ scores: null }) });\n            await fetch(`${apiBase}\/kingdom\/save_focus`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ areas: [] }) });\n            location.reload();\n        }\n\n        async function ozgToggleHabit(el, id) {\n            el.classList.toggle('completed');\n            await fetch(`${apiBase}\/habit\/toggle`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({habit_id: id}) });\n        }\n\n        function ozgOpenSubscribeModal(progId) {\n            ozgCloseAllModals();\n            document.getElementById('ozgSubProgId').value = progId;\n            document.getElementById('ozgSubscribeModal').classList.add('show');\n        }\n\n        async function ozgConfirmSubscribe() {\n            const progId = document.getElementById('ozgSubProgId').value;\n            const coachId = document.getElementById('selectedSubCoachId').value;\n            try {\n                const resp = await fetch(`${apiBase}\/program\/subscribe`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({program_id: progId, coach_id: coachId}) });\n                const result = await resp.json();\n                if (result.success) {\n                    if(result.message) alert(result.message);\n                    window.location.reload();\n                } else if (result.status === 'requires_payment') {\n                    alert(result.message);\n                    window.location.href = result.checkout_url;\n                } else {\n                    alert(result.message || ozgI18n.errorConnection);\n                }\n            } catch(e) { alert(ozgI18n.errorConnection); }\n        }\n\n        async function ozgRemoveQuest(progId) {\n            if (!confirm(ozgI18n.deleteQuestConfirm)) return;\n            await fetch(`${apiBase}\/program\/remove`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ program_id: progId }) });\n            window.location.reload();\n        }\n\n        function ozgShowAddQuestModal(pillar, area) {\n            document.getElementById('addQuestPillar').value = pillar;\n            document.getElementById('addQuestArea').value = area;\n            const select = document.getElementById('addQuestProgramId');\n            select.innerHTML = '';\n            const available = programsWithMeta.filter(p => p.pillar === pillar && p.area === area);\n            if (available.length === 0) {\n                select.innerHTML = `<option value=\"\">${ozgI18n.noAvailableQuests}<\/option>`;\n            } else {\n                available.forEach(prog => {\n                    const option = document.createElement('option');\n                    option.value = prog.ID;\n                    option.textContent = prog.post_title;\n                    select.appendChild(option);\n                });\n            }\n            document.getElementById('ozgAddQuestModal').classList.add('show');\n        }\n\n        async function ozgConfirmAddQuest() {\n            const progId = document.getElementById('addQuestProgramId').value;\n            const coachId = document.getElementById('selectedAddQuestCoachId').value;\n            if (!progId) { alert(ozgI18n.selectQuest); return; }\n            try {\n                const resp = await fetch(`${apiBase}\/program\/add`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ program_id: progId, coach_id: coachId }) });\n                const result = await resp.json();\n                if (result.success) {\n                    if(result.message) alert(result.message);\n                    window.location.reload();\n                } else if (result.status === 'requires_payment') {\n                    alert(result.message);\n                    window.location.href = result.checkout_url;\n                } else {\n                    alert(result.message || ozgI18n.errorConnection);\n                }\n            } catch(e) { alert(ozgI18n.errorConnection); }\n        }\n\n        async function ozgToggleBookmarkFromDash(btn, postId) {\n            if(!confirm('Remove this bookmark?')) return;\n            btn.closest('.ozg-glass').style.opacity = '0.5';\n            await fetch(`${apiBase}\/bookmark\/toggle`, {\n                method: 'POST',\n                headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce},\n                body: JSON.stringify({post_id: postId})\n            });\n            window.location.reload();\n        }\n\n        async function ozgTogglePassionFromDash(btn, postId) {\n            if(!confirm('Remove this from your Main Passion?')) return;\n            btn.closest('.ozg-glass').style.opacity = '0.5';\n            await fetch(`${apiBase}\/passion\/toggle`, {\n                method: 'POST',\n                headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce},\n                body: JSON.stringify({post_id: postId})\n            });\n            window.location.reload();\n        }\n\n        function ozgShowChangeCoachModal(programId) { document.getElementById('changeCoachProgramId').value = programId; document.getElementById('ozgChangeCoachModal').classList.add('show'); }\n\n        async function ozgConfirmChangeCoach() {\n            const programId = document.getElementById('changeCoachProgramId').value;\n            const coachId = document.getElementById('selectedCoachId').value;\n            const resp = await fetch(`${apiBase}\/program\/update_coach`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ program_id: programId, coach_id: coachId }) });\n            const result = await resp.json();\n            if(result.message) alert(result.message);\n            window.location.reload();\n        }\n\n        function ozgShowChangeBossModal(programId) { document.getElementById('changeBossProgramId').value = programId; document.getElementById('ozgChangeBossModal').classList.add('show'); }\n\n        async function ozgConfirmChangeBoss() {\n            const programId = document.getElementById('changeBossProgramId').value;\n            const bossId = document.getElementById('selectedBossId').value;\n            const resp = await fetch(`${apiBase}\/program\/update_boss`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ program_id: programId, boss_id: bossId }) });\n            const result = await resp.json();\n            if(result.message) alert(result.message);\n            window.location.reload();\n        }\n\n        function ozgShowChangeProgramBuddyModal(programId) { document.getElementById('changeBuddyProgramId').value = programId; document.getElementById('ozgChangeProgramBuddyModal').classList.add('show'); }\n\n        async function ozgConfirmChangeProgramBuddy() {\n            const programId = document.getElementById('changeBuddyProgramId').value;\n            const buddyId = document.getElementById('selectedProgBuddyId').value;\n            const resp = await fetch(`${apiBase}\/program\/update_buddy`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ program_id: programId, buddy_id: buddyId }) });\n            const result = await resp.json();\n            if(result.message) alert(result.message);\n            window.location.reload();\n        }\n\n        async function ozgSetBuddy() {\n            const buddyId = document.getElementById('selectedBuddyId').value;\n            if (buddyId == 0) return;\n            const resp = await fetch(`${apiBase}\/buddy\/set`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({buddy_id: buddyId}) });\n            const result = await resp.json();\n            if(result.message) alert(result.message);\n            window.location.reload();\n        }\n\n        async function ozgRespondRequest(reqId, action) {\n            const resp = await fetch(`${apiBase}\/team\/respond`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({request_id: reqId, action: action}) });\n            const result = await resp.json();\n            if(result.success) window.location.reload();\n        }\n\n        async function toggleStudentProgress(studentId, programId, btnElement) {\n            const container = document.getElementById(`student-prog-${studentId}-${programId}`);\n            if (container.style.display === 'none') {\n                container.style.display = 'block';\n                btnElement.innerHTML = `<i data-lucide=\"eye-off\" style=\"width:14px;\"><\/i> ${ozgI18n.hideTrack}`;\n                lucide.createIcons();\n                if (container.innerHTML === '') {\n                    container.innerHTML = '<div style=\"text-align:center;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; width:20px; color:var(--accent-cyan);\"><\/i><\/div>';\n                    lucide.createIcons();\n                    const res = await fetch(`${apiBase}\/team\/student_data?student_id=${studentId}&program_id=${programId}`, { headers: {'X-WP-Nonce': nonce} });\n                    const data = await res.json();\n                    let html = '';\n                    if (data.type === 'global') {\n                        html += `<div style=\"font-size:0.85rem; color:var(--text-muted); margin-bottom:8px;\">${ozgI18n.activeQuests}<\/div>`;\n                        if (data.programs.length === 0) { html += `<div>${ozgI18n.noActiveQuests}<\/div>`; }\n                        else { data.programs.forEach(p => { html += `<div style=\"background:rgba(255,255,255,0.05); padding:8px 12px; border-radius:8px; margin-bottom:6px; font-size:0.9rem;\">${escapeHtml(p)}<\/div>`; }); }\n                    } else {\n                        html += `<div style=\"display:grid; grid-template-columns: 1fr 1fr; gap:16px;\"><div><h5 style=\"color:var(--accent-cyan); margin:0 0 10px 0;\">${ozgI18n.habits}<\/h5>`;\n                        if (data.habits.length === 0) html += `<div style=\"color:var(--text-muted); font-size:0.8rem;\">${ozgI18n.noHabits}<\/div>`;\n                        data.habits.forEach(h => { html += `<div style=\"display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:0.85rem;\"><i data-lucide=\"${h.completed ? 'check-circle-2' : 'circle'}\" style=\"width:14px; color:${h.completed ? 'var(--success-color)' : 'var(--text-muted)'}\"><\/i> <span style=\"${h.completed ? 'text-decoration:line-through; color:var(--text-muted);' : ''}\">${escapeHtml(h.title)}<\/span><\/div>`; });\n                        html += `<\/div><div><h5 style=\"color:var(--accent-purple); margin:0 0 10px 0;\">${ozgI18n.milestones}<\/h5>`;\n                        if (data.milestones.length === 0) html += `<div style=\"color:var(--text-muted); font-size:0.8rem;\">${ozgI18n.noMilestones}<\/div>`;\n                        data.milestones.forEach(m => { html += `<div style=\"display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:0.85rem;\"><i data-lucide=\"${m.completed ? 'check-circle-2' : 'circle'}\" style=\"width:14px; color:${m.completed ? 'var(--success-color)' : 'var(--text-muted)'}\"><\/i> <span style=\"${m.completed ? 'color:var(--text-muted);' : ''}\">${escapeHtml(m.title)}<\/span><\/div>`; });\n                        html += `<\/div><\/div>`;\n                    }\n                    container.innerHTML = html;\n                    lucide.createIcons();\n                }\n            } else {\n                container.style.display = 'none';\n                btnElement.innerHTML = `<i data-lucide=\"eye\" style=\"width:14px;\"><\/i> ${ozgI18n.viewTrack}`;\n                lucide.createIcons();\n            }\n        }\n\n        async function rateProgram( programId, rating ) {\n            const starsDiv = document.querySelector(`.stars[data-program=\"${programId}\"]`);\n            if (starsDiv) {\n                for (let i = 1; i <= 5; i++) {\n                    const star = starsDiv.querySelector(`.star[data-value=\"${i}\"]`);\n                    if (star) {\n                        if (i <= rating) star.classList.add('active');\n                        else star.classList.remove('active');\n                    }\n                }\n            }\n            const resp = await fetch(`${apiBase}\/program\/rate`, { method: 'POST', headers: { 'Content-Type': 'application\/json', 'X-WP-Nonce': nonce }, body: JSON.stringify( { program_id: programId, rating: rating } ) });\n            if (resp.ok) {\n                const rResp = await fetch(`${apiBase}\/program\/get_rating?program_id=${programId}`, { headers: { 'X-WP-Nonce': nonce } });\n                const data = await rResp.json();\n                const displayDiv = document.getElementById(`rating-display-${programId}`);\n                if (displayDiv && data.average) {\n                    displayDiv.innerHTML = `\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u0440\u0435\u0439\u0442\u0438\u043d\u0433: ${data.average} (${data.count} \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0438)`;\n                }\n            }\n        }\n\n        \/\/ Keep for backward compatibility - MBTI test redirects to Kingdom Test\n        async function ozgCompleteRPGTest(testType) {\n            if (testType === 'mbti') {\n                ozgOpenKingdomTest();\n            } else if (testType === 'industry') {\n                ozgOpenIndustryQuiz();\n            }\n        }\n\n        function ozgOpenJournalModal(milestoneId = '') {\n            if (ozgI18n.isGuest) return ozgShowSignUpPrompt();\n            ozgCloseAllModals();\n            document.getElementById('ozgJournalMilestoneId').value = milestoneId;\n            document.getElementById('ozgJournalEntry').value = '';\n            document.getElementById('ozgJournalModal').classList.add('show');\n        }\n\n        function ozgInternalNavigate(url) {\n            if (!url || url === '#') return;\n            \/\/ In a mini-app, we want to stay within the same window\n            window.location.href = url;\n        }\n\n\n\n        function ozgOpenModal(type, progId, entityId = 0, currentTitle = '') {\n            ozgCloseAllModals();\n            document.getElementById('ozgType').value = type;\n            document.getElementById('ozgProgId').value = progId;\n            document.getElementById('ozgEntityId').value = entityId;\n            document.getElementById('ozgTitle').value = currentTitle;\n            document.getElementById('ozgProgramFields').style.display = type === 'program' ? 'block' : 'none';\n            document.getElementById('ozgFreq').style.display = type === 'habit' ? 'block' : 'none';\n            document.getElementById('ozgLink').style.display = type === 'milestone' ? 'block' : 'none';\n\n            let title = type === 'program' ? '\u0417\u0430\u0434\u0430\u043d\u0438\u0435' : (type === 'habit' ? 'Habit' : 'Milestone');\n            document.getElementById('ozgModalTitle').innerText = (entityId ? '\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c ' : '\u0421\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c ') + title;\n            document.getElementById('ozgModal').classList.add('show');\n        }\n\n        function ozgUpdateAreas() {\n            const pillar = document.getElementById('ozgPillar').value;\n            const areaSelect = document.getElementById('ozgArea');\n            areaSelect.innerHTML = '';\n            if (pillar && kingdomStruct[pillar]) {\n                for (let a in kingdomStruct[pillar].areas) {\n                    areaSelect.innerHTML += `<option value=\"${a}\">${kingdomStruct[pillar].areas[a]}<\/option>`;\n                }\n            }\n        }\n\n        async function ozgSave() {\n            const type = document.getElementById('ozgType').value;\n            const title = document.getElementById('ozgTitle').value;\n            if (!title.trim()) return;\n            const data = { action: document.getElementById('ozgEntityId').value == 0 ? 'create' : 'update', entity_id: document.getElementById('ozgEntityId').value, entity_type: type, title: title, program_id: document.getElementById('ozgProgId').value };\n            if (type === 'program') { data.pillar = document.getElementById('ozgPillar').value; data.area = document.getElementById('ozgArea').value; }\n            if (type === 'habit') data.frequency = document.getElementById('ozgFreq').value;\n            if (type === 'milestone') data.linked_course = document.getElementById('ozgLink').value;\n\n            const res = await fetch(`${apiBase}\/coach\/manage`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify(data) });\n            const result = await res.json();\n            if (result.success) { if (result.is_copy) alert(ozgI18n.copyCreated); window.location.reload(); } else { alert(ozgI18n.errorConnection); }\n        }\n\n        async function ozgDelete(id) {\n            if (!confirm(ozgI18n.deleteConfirm)) return;\n            const res = await fetch(`${apiBase}\/coach\/manage`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ action: 'delete', entity_id: id }) });\n            if ((await res.json()).success) window.location.reload();\n        }\n\n\n\n\n\n\n\n\n\n        async function ozgSaveJournalEntry() {\n            const text = document.getElementById('ozgJournalEntry').value;\n            const milestoneId = document.getElementById('ozgJournalMilestoneId').value;\n            if (!text.trim()) { alert(ozgI18n.enterJournalText); return; }\n            await fetch(`${apiBase}\/journal\/add`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ entry_text: text, milestone_id: milestoneId }) });\n            document.getElementById('ozgJournalModal').classList.remove('show');\n            if (milestoneId) {\n                await fetch(`${apiBase}\/milestone\/complete`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ milestone_id: milestoneId }) });\n                alert(ozgI18n.milestoneCompletedLog); window.location.reload();\n            } else {\n                loadJournalEntries();\n                loadCohortActivities();\n            }\n        }\n\n        async function loadJournalEntries() {\n            const container = document.getElementById('journal-entries');\n            if (!container) return;\n            container.innerHTML = '<div style=\"text-align:center;\"><i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite; color:var(--accent-purple);\"><\/i><\/div>';\n            lucide.createIcons();\n            try {\n                const res = await fetch(`${apiBase}\/journal\/list`, { headers: {'X-WP-Nonce': nonce} });\n                const entries = await res.json();\n                if (entries.length === 0) {\n                    container.innerHTML = `<div style=\"text-align:center; color:var(--text-muted);\">${ozgI18n.noActiveQuests}<\/div>`;\n                } else {\n                    container.innerHTML = entries.map(e => `\n                        <div style=\"background:rgba(255,255,255,0.03); padding:16px; border-radius:16px; margin-bottom:12px; border:1px solid rgba(255,255,255,0.05);\">\n                            <div style=\"font-size:0.8rem; color:var(--text-muted); margin-bottom:8px;\"><i data-lucide=\"clock\" style=\"width:12px; display:inline-block; vertical-align:middle;\"><\/i> ${new Date(e.created_at).toLocaleString()}<\/div>\n                            <div style=\"color:var(--text-main); font-size:0.95rem; line-height:1.5;\">${escapeHtml(e.entry_text).replace(\/\\n\/g, '<br>')}<\/div>\n                        <\/div>\n                    `).join('');\n                }\n                lucide.createIcons();\n            } catch(e) { container.innerHTML = `<div style=\"color:var(--warning-color);\">${ozgI18n.errorConnection}<\/div>`; }\n        }\n\n        async function loadCohortActivities() {\n            const container = document.getElementById('cohort-activities');\n            if (!container) return;\n            try {\n                const res = await fetch(`${apiBase}\/cohort\/activities`, { headers: {'X-WP-Nonce': nonce} });\n                const activities = await res.json();\n                if (activities.length > 0) {\n                    container.innerHTML = activities.map(a => `\n                        <div style=\"display:flex; align-items:flex-start; gap:10px; margin-bottom:12px; font-size:0.85rem; border-bottom:1px dashed rgba(255,255,255,0.1); padding-bottom:8px;\">\n                            <div style=\"width:8px; height:8px; border-radius:50%; background:var(--accent-cyan); margin-top:6px;\"><\/div>\n                            <div><strong style=\"color:#fff;\">${escapeHtml(a.display_name)}<\/strong> <span style=\"color:var(--text-muted);\">${a.action_text}<\/span><\/div>\n                        <\/div>\n                    `).join('');\n                } else {\n                    container.innerHTML = `<div style=\"color:var(--text-muted); font-size:0.85rem; text-align:center;\">${ozgI18n.noActiveQuests}<\/div>`;\n                }\n            } catch(e) {}\n        }\n\n\n\n        function ozgShowCreateChallenge() { document.getElementById('ozgCreateChallengeModal').classList.add('show'); }\n\n        async function ozgCreateChallenge() {\n            const title = document.getElementById('ozgChallengeTitle').value;\n            const habitId = document.getElementById('ozgChallengeHabit').value;\n            const type = document.getElementById('ozgChallengeType').value;\n            if (!title.trim() || habitId == 0) { alert(ozgI18n.enterTitleHabit); return; }\n            await fetch(`${apiBase}\/challenge\/create`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ title: title, habit_id: habitId, type: type }) });\n            window.location.reload();\n        }\n\n        function ozgJoinChallenge(id) {\n            fetch(`${apiBase}\/challenge\/join`, { method: 'POST', headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce}, body: JSON.stringify({ challenge_id: id }) })\n            .then(() => window.location.reload());\n        }\n\n\n\n        \/\/ \u2500\u2500 v11.30 helpers \u2500\u2500\n        \/\/ Set creation bar bottom to sit above mobile nav\n        function ozgUpdateCreationBarBottom() {\n            const nav = document.querySelector('.ozg-mob-nav');\n            const footer = document.getElementById('draggableFooter');\n            const bar = document.getElementById('ozgCreationBar');\n            if (bar) {\n                let bottom = 8;\n                if (nav && window.getComputedStyle(nav).display !== 'none') {\n                    bottom = nav.offsetHeight + 8;\n                } else if (footer && window.getComputedStyle(footer).display !== 'none') {\n                    bottom = footer.offsetHeight + 8;\n                }\n                bar.style.bottom = bottom + 'px';\n            }\n        }\n\n                function ozgCreationGuardedClose() {\n            if (window._ozgCreationDraftSaved) { ozgForceCloseCreation(); return; }\n            const w = document.getElementById('ozgUnsavedWarnModal');\n            if (w) { w.style.display = 'flex'; lucide.createIcons(); }\n        }\n        function ozgForceCloseCreation() {\n            document.getElementById('ozgUnsavedWarnModal').style.display = 'none';\n            const m = document.getElementById('ozgCreationPanelModal');\n            if (m) m.classList.remove('show');\n            const iw = document.getElementById('ozgEditorIframeWrap');\n            if (iw) iw.style.display = 'none';\n            const iframe = document.getElementById('ozgEditorIframe');\n            if (iframe) iframe.src = 'about:blank';\n            const body = document.getElementById('ozgCreationPanelBody');\n            if (body) body.style.display = 'block';\n            const ab = document.getElementById('ozgCreationActionBar');\n            if (ab) ab.style.display = 'none';\n            window._ozgCreationDraftSaved = false;\n            window._ozgCreationDraftId = null;\n            window._ozgCreationEditUrl = null;\n            if (localStorage.getItem('ozgActiveTab') === 'coach') {\n                const bar = document.getElementById('ozgCreationBar');\n                if (bar) bar.classList.add('visible');\n            }\n        }\n        async function ozgPublishCreationDraft() {\n            if (!window._ozgCreationDraftId) return;\n            try {\n                const r = await fetch(apiBase + '\/content\/publish', { method:'POST', headers:{'Content-Type':'application\/json','X-WP-Nonce':nonce}, body:JSON.stringify({id:window._ozgCreationDraftId}) });\n                const d = await r.json();\n                showHeaderToast(d.success ? '\ud83d\ude80 Published!' : '\u26a0\ufe0f ' + (d.message||'Error'));\n                if (d.success) { window._ozgCreationDraftSaved = true; ozgForceCloseCreation(); }\n            } catch(e) { showHeaderToast(ozgI18n.errorConnection); }\n        }\n        function ozgOpenCreationEditor() {\n            if (!window._ozgCreationEditUrl) return;\n            ozgOpenIframeEditor(window._ozgCreationEditUrl, 'Full Editor');\n            window._ozgCreationDraftSaved = true;\n        }\n        let _ozgPFTag = '';\n        function ozgSetProfileFeedTag(tag, btn) {\n            _ozgPFTag = tag;\n            document.querySelectorAll('#ozgProfileFeedTags .ozg-feed-tag-btn').forEach(b => b.classList.remove('active'));\n            if (btn) btn.classList.add('active');\n            ozgFilterProfileFeed();\n        }\n        function ozgFilterProfileFeed() {\n            const q = (document.getElementById('ozgProfileFeedSearch')?.value || '').toLowerCase();\n            const typeMap = { 'finance': ['wp-fundraising','campaign'], 'courses': ['courses','course'], 'jobs': ['job','vacancy'], 'challenges': ['challenge','arena'], 'video': ['video'], 'photo': ['photo','image'] };\n            document.querySelectorAll('#ozgProfileFeedGrid .ozg-profile-post-item').forEach(el => {\n                const t = (el.dataset.title||'').toLowerCase();\n                const tp = (el.dataset.type||'').toLowerCase();\n                const matchQ = !q || t.includes(q);\n                const matchTag = !_ozgPFTag || (typeMap[_ozgPFTag] ? typeMap[_ozgPFTag].some(v => tp.includes(v)) : tp.includes(_ozgPFTag));\n                el.style.display = (matchQ && matchTag) ? 'block' : 'none';\n            });\n        }\n        function ozgCoachSearchFilter() {\n            const q = (document.getElementById('ozgCoachSearch')?.value || '').toLowerCase();\n            document.querySelectorAll('#coach-programs-container .ozg-coach-item').forEach(el => {\n                const t = (el.dataset.title || '').toLowerCase();\n                el.style.display = (!q || t.includes(q)) ? 'block' : 'none';\n            });\n        }\n\n        function ozgCoachFilter(cat, btn) {\n            document.querySelectorAll('#coach .ozg-feed-tag-btn').forEach(b => b.classList.remove('active'));\n            if (btn) btn.classList.add('active');\n            document.querySelectorAll('#coach-programs-container .ozg-coach-item').forEach(el => {\n                el.style.display = (!cat || (el.dataset.type||'') === cat) ? 'block' : 'none';\n            });\n        }\n\n        function escapeHtml(str) {\n            if (!str) return '';\n            return str.replace(\/[&<>]\/g, function(m) {\n                if (m === '&') return '&amp;';\n                if (m === '<') return '&lt;';\n                if (m === '>') return '&gt;';\n                return m;\n            }).replace(\/\"\/g, '&quot;').replace(\/'\/g, '&#039;');\n        }\n\n\n        async function ozgStartContentWizard(type) {\n            ozgTriggerBotHelp(type + '_start');\n\n            if (type === 'hobbist_course') {\n                ozgOpenModal('program'); \/\/ Fallback to existing modal until custom wizard ready\n            } else if (type === 'financing_campaign') {\n                 window.location.href = '\/dashboard\/create-campaign\/'; \/\/ Direct to FundEngine FE\n            } else if (type === 'product') {\n                 window.location.href = '\/dashboard\/add-product\/';\n            } else {\n                 window.location.href = '\/wp-admin\/post-new.php'; \/\/ Post fallback\n            }\n        }\n\n\n\n        function ozgTriggerBotHelp(step) {\n            if (typeof qcld_wp_chatbot_open !== 'function') return;\n\n            const intents = {\n                'general_creator': 'How do I add content?',\n                'course_start': 'Help me create a Hobbist Course',\n                'course_curriculum': 'How to add lessons and quizzes?',\n                'campaign_start': 'Tell me about financing campaigns',\n                'product_start': 'How to add a store product?'\n            };\n\n            const msg = intents[step] || 'I need help adding content';\n\n            \/\/ Open and send message\n            qcld_wp_chatbot_open();\n            setTimeout(() => {\n                const input = document.getElementById('qlcd_wp_chatbot_input');\n                if (input) {\n                    input.value = msg;\n                    const sendBtn = document.getElementById('qlcd_wp_chatbot_send_btn');\n                    if (sendBtn) sendBtn.click();\n                }\n            }, 500);\n        }\n\n\n\n        function ozgOpenFsModal(type) {\n            const typeMap = { hobbist_course:'course', financing_campaign:'campaign', product:'product', service:'product', page:'page', post:'post', lesson:'lesson' };\n            ozgShowCreationPanel(typeMap[type] || type);\n        }\n\n\n\n        function ozgFsModalAction(action) {\n            if (action === 'bot') {\n                if (typeof qcld_wp_chatbot_open === 'function') {\n                    qcld_wp_chatbot_open();\n                } else {\n                    alert('AI Assistant is currently offline.');\n                }\n            }\n        }\n\n\n\n        function ozgOpenIframeEditor(url, title) {\n            const modal = document.getElementById('ozgCreationPanelModal');\n            const titleEl = document.getElementById('ozgCreationPanelTitle');\n            const panelBody = document.getElementById('ozgCreationPanelBody');\n            const iframeWrap = document.getElementById('ozgEditorIframeWrap');\n            const iframe = document.getElementById('ozgEditorIframe');\n            const actionBar = document.getElementById('ozgCreationActionBar');\n\n            if (!modal || !iframe) return;\n\n            if (titleEl) titleEl.innerHTML = `<i data-lucide=\"pencil-ruler\" style=\"width:18px;color:var(--cyan);\"><\/i> ${title || 'Editor'}`;\n            if (panelBody) panelBody.style.display = 'none';\n            if (actionBar) actionBar.style.display = 'none';\n            if (iframeWrap) iframeWrap.style.display = 'block';\n\n            iframe.src = url;\n\n            \/\/ Listen for load to detect redirects (e.g. after save)\n            iframe.onload = function() {\n                try {\n                    const currentUrl = iframe.contentWindow.location.href;\n                    \/\/ If it redirects back to the campaign list or dashboard, close and show modal\n                    if (currentUrl.includes('wfp-page=campaign') && !currentUrl.includes('camp=')) {\n                         showHeaderToast('\u2705 Campaign saved!');\n                         ozgForceCloseCreation();\n                         if (window._ozgCreationDraftId) ozgOpenFundraisingModal(window._ozgCreationDraftId);\n                    }\n                } catch(e) {\n                    \/\/ Cross-origin might block reading href, but FundEngine is same-origin\n                }\n            };\n\n            modal.classList.add('show');\n            lucide.createIcons();\n        }\n\n        async function ozgOpenEditorModal(postId) {\n            if (ozgI18n.isGuest) return ozgShowSignUpPrompt();\n            window._ozgCreationDraftSaved = true;\n            \/\/ Open the FRONTEND editor (TutorLMS \/ FundEngine) \u2014 not WP admin\n            let editUrl;\n            try {\n                const r = await fetch(`${apiBase}\/content\/edit_url?id=${postId}`, { headers: {'X-WP-Nonce': nonce} });\n                const d = await r.json();\n                editUrl = d.edit_url || null;\n            } catch(e) { editUrl = null; }\n\n            if (!editUrl) { showHeaderToast('Could not find editor URL.'); return; }\n            ozgOpenIframeEditor(editUrl, 'Full Editor');\n        }\n\n\n\n        async function ozgSendEnrollRequest(studentId, programId, btnEl) {\n            if (!studentId || !programId) { showHeaderToast('Select a student and program first.'); return; }\n            if (btnEl) { btnEl.disabled = true; btnEl.innerText = 'Sending\u2026'; }\n            try {\n                const resp = await fetch(`${apiBase}\/enroll\/request`, {\n                    method: 'POST',\n                    headers: {'Content-Type':'application\/json','X-WP-Nonce': nonce},\n                    body: JSON.stringify({ student_id: studentId, program_id: programId })\n                });\n                const result = await resp.json();\n                if (result.success) {\n                    showHeaderToast('\u2705 ' + (result.message || 'Enrollment request sent!'));\n                    \/\/ Close the enroll modal\n                    const enrollModal = document.getElementById('ozgEnrollRequestModal');\n                    if (enrollModal) enrollModal.classList.remove('show');\n                } else {\n                    showHeaderToast('\u26a0\ufe0f ' + (result.message || 'Failed to send request.'));\n                    if (btnEl) { btnEl.disabled = false; btnEl.innerText = 'Send Enroll Request'; }\n                }\n            } catch(e) { showHeaderToast(ozgI18n.errorConnection); if (btnEl) { btnEl.disabled = false; btnEl.innerText = 'Send Enroll Request'; } }\n        }\n\n\n\n        async function ozgSearchStudentsForEnroll(query) {\n            const results = document.getElementById('ozgEnrollStudentResults');\n            if (!query || query.length < 2) { results.innerHTML = ''; return; }\n            try {\n                const resp = await fetch(`${apiBase}\/users\/search?q=${encodeURIComponent(query)}`, { headers: {'X-WP-Nonce': nonce} });\n                const users = await resp.json();\n                results.innerHTML = users.map(u => `\n                    <div style=\"padding:8px 12px; border-radius:8px; cursor:pointer; display:flex; align-items:center; gap:10px; background:rgba(255,255,255,0.03);\"\n                        onclick=\"document.getElementById('ozgEnrollStudentId').value=${u.id}; document.getElementById('ozgEnrollStudentSearch').value='${escapeHtml(u.name)}'; document.getElementById('ozgEnrollStudentResults').innerHTML='';\">\n                        <img decoding=\"async\" src=\"${u.avatar||'https:\/\/www.gravatar.com\/avatar\/?d=mp&s=32'}\" style=\"width:32px;height:32px;border-radius:50%;\">\n                        <div><div style=\"color:#fff;font-size:0.9rem;\">${escapeHtml(u.name)}<\/div><div style=\"color:var(--text-muted);font-size:0.75rem;\">${escapeHtml(u.email||'')}<\/div><\/div>\n                    <\/div>`).join('');\n            } catch(e) { results.innerHTML = ''; }\n        }\n\n\n\n        function ozgShowEnrollRequestModal(programId, programTitle) {\n            const modal = document.getElementById('ozgEnrollRequestModal');\n            if (!modal) {\n                \/\/ Build modal on the fly if not in DOM\n                const m = document.createElement('div');\n                m.className = 'ozg-modal-overlay';\n                m.id = 'ozgEnrollRequestModal';\n                m.innerHTML = `<div class=\"ozg-modal\" style=\"max-width:440px;\">\n                    <h3 style=\"color:#fff; margin:0 0 16px 0;\">Send Enrollment Request<\/h3>\n                    <p style=\"color:var(--text-muted); font-size:0.9rem; margin-bottom:16px;\">\n                        Course: <strong style=\"color:#fff;\" id=\"ozgEnrollProgTitle\"><\/strong>\n                    <\/p>\n                    <input type=\"hidden\" id=\"ozgEnrollProgId\">\n                    <input type=\"text\" id=\"ozgEnrollStudentSearch\" class=\"ozg-input\" placeholder=\"Search student by name or email\u2026\"\n                        oninput=\"ozgSearchStudentsForEnroll(this.value)\" style=\"margin-bottom:8px;\">\n                    <div id=\"ozgEnrollStudentResults\" style=\"max-height:200px; overflow-y:auto; margin-bottom:16px;\"><\/div>\n                    <input type=\"hidden\" id=\"ozgEnrollStudentId\">\n                    <div style=\"display:flex; justify-content:flex-end; gap:10px;\">\n                        <button class=\"ozg-btn-sec\" onclick=\"document.getElementById('ozgEnrollRequestModal').classList.remove('show')\">Cancel<\/button>\n                        <button class=\"ozg-btn\" onclick=\"ozgSendEnrollRequest(parseInt(document.getElementById('ozgEnrollStudentId').value), parseInt(document.getElementById('ozgEnrollProgId').value), this)\">Send Enroll Request<\/button>\n                    <\/div>\n                <\/div>`;\n                document.body.appendChild(m);\n            }\n            document.getElementById('ozgEnrollProgId').value = programId;\n            document.getElementById('ozgEnrollProgTitle').innerText = programTitle;\n            document.getElementById('ozgEnrollStudentId').value = '';\n            document.getElementById('ozgEnrollStudentSearch').value = '';\n            document.getElementById('ozgEnrollStudentResults').innerHTML = '';\n            document.getElementById('ozgEnrollRequestModal').classList.add('show');\n        }\n\n\n\n        async function ozgShowDonationPanel(campaignId, campaignUrl, btn, kaspiMobile = '') {\n            const panel = document.getElementById(`ozgDonationPanel_${campaignId}`);\n            if (!panel) return;\n\n            if (panel.style.display === 'none') {\n                panel.style.display = 'block';\n                panel.style.background = '#0f121e';\n                panel.style.padding = '20px';\n                panel.style.color = '#fff';\n                panel.style.border = '1px solid #eab308';\n                panel.style.borderRadius = '16px';\n\n                const resp = await fetch(`${apiBase}\/fundraising\/details\/${campaignId}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n\n                const transferMethods = data.transfer_methods || ['kaspi_payment'];\n                const receiverName = data.receiver_name || '';\n                const halykMobile = data.halyk_mobile || '';\n                const currentKaspiMobile = data.kaspi_mobile || kaspiMobile;\n\n                const investorName = EXPECTED_USER_NAME || '';\n\n                let methodSelector = '';\n                if (transferMethods.length > 1) {\n                    methodSelector = `\n                        <div style=\"margin-bottom:16px;\">\n                            <label style=\"display:block; font-size:0.8rem; color:var(--text-muted); margin-bottom:6px;\">Choose Payment Method<\/label>\n                            <select id=\"ozgPaymentMethod_${campaignId}\" class=\"ozg-input\" onchange=\"ozgUpdateDonationMethodView(${campaignId}, this.value)\">\n                                ${transferMethods.map(m => {\n                                    let label = 'Other';\n                                    if (m === 'kaspi_payment') label = 'Kaspi.kz';\n                                    else if (m === 'halyk_payment') label = 'Halyk Bank';\n                                    else if (m === 'bank_payment') label = 'Bank Transfer';\n                                    else if (m === 'offline_payment') label = 'Cash';\n                                    return `<option value=\"${m}\">${label}<\/option>`;\n                                }).join('')}\n                            <\/select>\n                        <\/div>\n                    `;\n                }\n\n                panel.innerHTML = `\n                    <div style=\"display:flex; flex-direction:column; gap:16px;\">\n                        <h4 style=\"margin:0; color:#eab308; font-size:1.1rem; display:flex; align-items:center; gap:8px;\">\n                            <i data-lucide=\"heart-handshake\" style=\"width:20px;\"><\/i> Support Mission\n                        <\/h4>\n\n                        ${methodSelector}\n\n                        <div id=\"ozgMethodDetails_${campaignId}\">\n                            ${ozgGetMethodDetailsHtml(transferMethods[0], currentKaspiMobile, halykMobile, receiverName)}\n                        <\/div>\n\n                        <div style=\"background:rgba(255,170,0,0.05); border:1px solid rgba(255,170,0,0.2); padding:12px; border-radius:12px; font-size:0.85rem; color:#fef08a;\">\n                            After clicking \"Invest now\", you will be redirected to complete the transfer.\n                        <\/div>\n                        <div>\n                            <label style=\"display:block; font-size:0.8rem; color:var(--text-muted); margin-bottom:6px;\">Your Name (for records)<\/label>\n                            <input type=\"text\" id=\"ozgKaspiName_${campaignId}\" class=\"ozg-input\" value=\"${investorName}\" style=\"margin-bottom:0; background:rgba(255,255,255,0.05); border-color:rgba(255,255,255,0.1);\">\n                        <\/div>\n                        <div>\n                            <label style=\"display:block; font-size:0.8rem; color:var(--text-muted); margin-bottom:6px;\">Amount (\u20b8)<\/label>\n                            <input type=\"number\" id=\"ozgKaspiAmount_${campaignId}\" class=\"ozg-input\" placeholder=\"e.g. 5000\" style=\"margin-bottom:0; background:rgba(255,255,255,0.05); border-color:rgba(255,255,255,0.1);\">\n                        <\/div>\n                        <label style=\"display:flex; align-items:center; gap:8px; font-size:0.85rem; cursor:pointer; color:rgba(255,255,255,0.7);\">\n                            <input type=\"checkbox\" id=\"ozgKaspiAnon_${campaignId}\" style=\"width:16px; height:16px; accent-color:#eab308;\">\n                            Incognito (Anonymous investment)\n                        <\/label>\n                        <button class=\"ozg-btn\" style=\"background:linear-gradient(135deg,#eab308,#fbbf24); color:#000; width:100%; justify-content:center; padding:14px; font-weight:800;\"\n                            onclick=\"ozgSubmitDonationIntent(${campaignId}, this)\">\n                            <i data-lucide=\"send\"><\/i> Invest now\n                        <\/button>\n                    <\/div>\n                `;\n                btn.innerHTML = '<i data-lucide=\"chevron-up\"><\/i> Hide Form';\n                lucide.createIcons();\n\n                \/\/ Store data for view updates\n                panel._campaignData = data;\n\n                setTimeout(() => panel.scrollIntoView({ behavior:'smooth', block:'start' }), 150);\n            } else {\n                panel.style.display = 'none';\n                btn.innerHTML = '<i data-lucide=\"heart\"><\/i> Invest now';\n                lucide.createIcons();\n            }\n        }\n\n        function ozgUpdateDonationMethodView(campaignId, method) {\n            const panel = document.getElementById(`ozgDonationPanel_${campaignId}`);\n            const details = document.getElementById(`ozgMethodDetails_${campaignId}`);\n            if (!panel || !details || !panel._campaignData) return;\n\n            const data = panel._campaignData;\n            details.innerHTML = ozgGetMethodDetailsHtml(method, data.kaspi_mobile, data.halyk_mobile, data.receiver_name);\n            lucide.createIcons();\n        }\n\n        function ozgGetMethodDetailsHtml(method, kaspi, halyk, receiver) {\n            let phone = '';\n            let label = '';\n            if (method === 'kaspi_payment') { phone = kaspi; label = 'Kaspi Number'; }\n            else if (method === 'halyk_payment') { phone = halyk; label = 'Halyk Number'; }\n\n            if (!phone) return `<div style=\"background:rgba(255,255,255,0.05); padding:14px; border-radius:12px; border:1px solid rgba(255,255,255,0.1); color:var(--text-muted); font-size:0.9rem;\">Please contact the creator for ${method.replace('_', ' ')} details.<\/div>`;\n\n            return `\n                <div style=\"background:rgba(255,255,255,0.05); padding:14px; border-radius:12px; border:1px solid rgba(255,255,255,0.1);\">\n                    <div style=\"font-size:0.75rem; color:var(--text-muted); margin-bottom:4px; text-transform:uppercase;\">${label}<\/div>\n                    <div style=\"display:flex; justify-content:space-between; align-items:center; margin-bottom:8px;\">\n                        <span style=\"font-size:1.2rem; font-weight:700; color:#fff; letter-spacing:1px;\">${phone}<\/span>\n                        <button class=\"ozg-btn-sec\" style=\"padding:6px 12px; font-size:0.75rem;\" onclick=\"ozgCopyText('${phone}', this)\">\n                            <i data-lucide=\"copy\" style=\"width:14px;\"><\/i> Copy\n                        <\/button>\n                    <\/div>\n                    ${receiver ? `\n                    <div style=\"font-size:0.75rem; color:var(--text-muted); margin-bottom:4px; text-transform:uppercase; border-top:1px solid rgba(255,255,255,0.1); padding-top:8px;\">Receiver Name<\/div>\n                    <div style=\"font-size:1rem; font-weight:600; color:#fff;\">${escapeHtml(receiver)}<\/div>\n                    ` : ''}\n                <\/div>\n            `;\n        }\n\n        async function ozgSubmitDonationIntent(campaignId, btnEl) {\n            const method = document.getElementById(`ozgPaymentMethod_${campaignId}`)?.value || 'kaspi_payment';\n            const name = document.getElementById(`ozgKaspiName_${campaignId}`).value.trim();\n            const amount = parseFloat(document.getElementById(`ozgKaspiAmount_${campaignId}`).value);\n            const anonymous = document.getElementById(`ozgKaspiAnon_${campaignId}`).checked;\n\n            if (!name || isNaN(amount) || amount <= 0) {\n                alert('Please enter a valid name and amount.');\n                return;\n            }\n\n            btnEl.disabled = true;\n            btnEl.innerHTML = '<i data-lucide=\"loader\" style=\"animation:spin 1s linear infinite;\"><\/i> Processing...';\n            lucide.createIcons();\n\n            try {\n                const resp = await fetch(`${apiBase}\/fundraising\/kaspi_intent`, {\n                    method: 'POST',\n                    headers: {'Content-Type': 'application\/json', 'X-WP-Nonce': nonce},\n                    body: JSON.stringify({\n                        campaign_id: campaignId,\n                        amount: amount,\n                        investor_name: name,\n                        anonymous: anonymous,\n                        payment_method: method\n                    })\n                });\n                const data = await resp.json();\n                if (data.success) {\n                    showHeaderToast('\u2705 Donation recorded!');\n\n                    let targetUrl = '';\n                    if (method === 'kaspi_payment' && data.kaspi_url) {\n                        targetUrl = data.kaspi_url;\n                    } else if (method === 'halyk_payment') {\n                        \/\/ Halyk deep link if available, or just instructions\n                        const cleanPhone = (data.halyk_mobile || '').replace(\/[^0-9]\/g, '');\n                        if (cleanPhone) targetUrl = `https:\/\/www.halykbank.kz\/payments\/transfers?phone=${cleanPhone}&amount=${amount}`;\n                    }\n\n                    setTimeout(() => {\n                        if (targetUrl) {\n                            if (tg && tg.openLink) {\n                                tg.openLink(targetUrl);\n                            } else {\n                                const a = document.createElement('a');\n                                a.href = targetUrl;\n                                a.target = '_blank';\n                                a.rel = 'noopener noreferrer';\n                                a.click();\n                            }\n                        } else {\n                            alert('Donation recorded. Please complete the transfer using the information provided.');\n                        }\n                        document.getElementById('ozgFundraisingModal').classList.remove('show');\n                        loadSmartFeed(true);\n                    }, 1000);\n                } else {\n                    alert(data.message || 'Error processing intent.');\n                    btnEl.disabled = false;\n                    btnEl.innerHTML = '<i data-lucide=\"send\"><\/i> Invest now';\n                    lucide.createIcons();\n                }\n            } catch(e) {\n                console.error(e);\n                alert('Connection error. Please try again.');\n                btnEl.disabled = false;\n                btnEl.innerHTML = '<i data-lucide=\"send\"><\/i> Invest now';\n                lucide.createIcons();\n            }\n        }\n\n\n\n        async function ozgOpenFeedCardFromId(postId) {\n            \/\/ Fetch the post data and open course\/lesson\/fundraising modal as appropriate\n            try {\n                const resp = await fetch(`${apiBase}\/feed\/item\/${postId}?_=${Date.now()}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n                if (!data.success) { showHeaderToast('Content not found'); return; }\n\n                if (data.type === 'courses') ozgOpenCourseModal(postId);\n                else if (['lesson', 'tutor_quiz', 'tutor_assignments'].includes(data.type)) ozgOpenLessonModal(postId);\n                else if (['wp-fundraising', 'campaign'].includes(data.type)) ozgOpenFundraisingModal(postId);\n                else ozgOpenPageInDashboard(postId, data.title, data.url);\n            } catch(e) {\n                console.error('Feed card open error:', e);\n                showHeaderToast('Error opening content.');\n            }\n        }\n\n        function ozgShowBrowserSyncPrompt(token) {\n            const syncUrl = `${window.location.origin}\/?ozg_login_token=${token}`;\n\n            \/\/ Create a custom toast\/notification for syncing\n            const prompt = document.createElement('div');\n            prompt.style.cssText = 'position:fixed; bottom:80px; left:50%; transform:translateX(-50%); background:#1c1c1e; border:1px solid var(--accent-cyan); color:#fff; padding:20px; border-radius:20px; box-shadow:0 10px 40px rgba(0,0,0,0.5); z-index:200000; width:90%; max-width:350px; text-align:center; animation:fadeInUp 0.3s ease;';\n            prompt.innerHTML = `\n                <div style=\"font-weight:700; margin-bottom:10px;\">Login on all devices?<\/div>\n                <p style=\"font-size:0.85rem; color:var(--text-muted); margin-bottom:16px;\">Synchronize your login to your system browser for a better experience.<\/p>\n                <div style=\"display:flex; gap:10px;\">\n                    <button class=\"ozg-btn\" style=\"flex:1; padding:10px; font-size:0.9rem;\" id=\"ozgSyncYes\">Sync Now<\/button>\n                    <button class=\"ozg-btn-sec\" style=\"flex:1; padding:10px; font-size:0.9rem; border:none;\" onclick=\"this.parentElement.parentElement.remove()\">Later<\/button>\n                <\/div>\n            `;\n            document.body.appendChild(prompt);\n\n            document.getElementById('ozgSyncYes').onclick = function() {\n                if (tg && tg.openLink) {\n                    tg.openLink(syncUrl);\n                } else {\n                    window.open(syncUrl, '_blank');\n                }\n                prompt.remove();\n                showHeaderToast('\u2705 Sync link opened!');\n            };\n        }\n\n        async function ozgOpenInExternalBrowser(url = null) {\n            try {\n                const resp = await fetch(`${apiBase}\/me\/magic-link`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n                if (data.success && data.url) {\n                    let targetUrl = data.url;\n                    if (url) {\n                        \/\/ Append token to custom URL if provided\n                        const u = new URL(url);\n                        const token = new URL(data.url).searchParams.get('ozg_login_token');\n                        u.searchParams.set('ozg_login_token', token);\n                        targetUrl = u.toString();\n                    }\n\n                    if (tg && tg.openLink) {\n                        tg.openLink(targetUrl);\n                    } else {\n                        window.open(targetUrl, '_blank');\n                    }\n                }\n            } catch(e) { console.error('Magic link error:', e); if(url) window.open(url, '_blank'); }\n        }\n\n        function ozgOpenPageInDashboard(id, title, url) {\n            \/\/ If in Mini App, we might want to offer opening in external browser with login\n            const isMiniApp = (tg && tg.platform && tg.platform !== 'unknown');\n\n            ozgCloseAllModals();\n            const modal = document.getElementById('ozgFsModal');\n            const titleEl = document.getElementById('ozgFsModalTitle');\n            const iframe = document.getElementById('ozgFsIframe');\n            if (!modal || !iframe) return;\n\n            if (titleEl) titleEl.innerHTML = `<i data-lucide=\"external-link\" style=\"width:16px; color:var(--accent-cyan); vertical-align:middle; margin-right:6px;\"><\/i> ${escapeHtml(title)}`;\n\n            try {\n                const u = new URL(url);\n                u.searchParams.set('ozg_iframe', '1');\n                iframe.src = u.toString();\n            } catch(e) {\n                iframe.src = url + (url.includes('?') ? '&' : '?') + 'ozg_iframe=1';\n            }\n\n            modal.classList.add('show');\n            modal.classList.remove('ozg-fs-minimised');\n            lucide.createIcons();\n        }\n\n\n\n        function ozgTimeAgo(date) {\n            const diff = Math.floor((Date.now() - date.getTime()) \/ 1000);\n            if (diff < 60)   return diff + 's ago';\n            if (diff < 3600) return Math.floor(diff\/60) + 'm ago';\n            if (diff < 86400) return Math.floor(diff\/3600) + 'h ago';\n            return Math.floor(diff\/86400) + 'd ago';\n        }\n\n\n\n        function buildProfileCard(item) {\n            const bg = item.thumb\n                ? `background-image: url(${item.thumb}); background-size:cover; background-position:center;`\n                : `background: linear-gradient(135deg, ${item.pillar_color}40, #05070f);`;\n            const likes = item.likes_count || item.likes || 0;\n            const views = item.views_count || item.views || 0;\n            const safeTitle = item.title.replace(\/'\/g, \"\\\\'\").replace(\/\"\/g, '&quot;');\n            return `\n                <div class=\"ozg-feed-card\" style=\"--card-color:${item.pillar_color}; aspect-ratio:9\/16; cursor:pointer; border-radius:12px; border:1px solid rgba(255,255,255,0.1); overflow:hidden; position:relative;\"\n                    onclick=\"ozgOpenPostFromProfile('${item.type}',${item.id}, '${safeTitle}', '${item.url}')\">\n                    <div style=\"${bg} position:absolute; inset:0; z-index:1;\"><\/div>\n                    <div style=\"position:absolute; inset:0; background:linear-gradient(to bottom, transparent 50%, rgba(0,0,0,0.8)); z-index:2;\"><\/div>\n                    <div style=\"position:absolute; top:8px; left:8px; z-index:3; display:flex; flex-direction:column; gap:4px;\">\n                        <span style=\"background: ${item.pillar_color}; color: #000; font-size: 0.5rem; padding: 1px 4px; border-radius: 3px; font-weight:800; text-transform:uppercase;\">${(item.type||'').replace('courses','course').replace('wp-fundraising','finance')}<\/span>\n                    <\/div>\n                    <div style=\"position:absolute; bottom:8px; left:8px; right:8px; z-index:3;\">\n                        <div style=\"font-size:0.75rem; font-weight:600; color:#fff; line-height:1.2; margin-bottom:4px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;\">${escapeHtml(item.title||'')}<\/div>\n                        <div style=\"display:flex; align-items:center; gap:8px; opacity:0.8; font-size:0.65rem; color:#fff;\">\n                            <span style=\"display:flex; align-items:center; gap:2px;\"><i data-lucide=\"heart\" style=\"width:10px;\"><\/i> ${likes}<\/span>\n                            <span style=\"display:flex; align-items:center; gap:2px;\"><i data-lucide=\"eye\" style=\"width:10px;\"><\/i> ${views}<\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>`;\n        }\n\n\n\n        function renderNextProfileBatch() {\n                        const batch = allPosts.slice(profilePostIndex, profilePostIndex + BATCH);\n                        if (batch.length === 0) return;\n                        profilePostIndex += BATCH;\n                        const frag = document.createDocumentFragment();\n                        batch.forEach(item => {\n                            const div = document.createElement('div');\n                            div.innerHTML = buildProfileCard(item).trim();\n                            frag.appendChild(div.firstElementChild);\n                        });\n                        grid.appendChild(frag);\n                        lucide.createIcons();\n                        \/\/ Observe the last card to trigger next batch\n                        if (profilePostIndex < allPosts.length) {\n                            const lastCard = grid.lastElementChild;\n                            if (lastCard && window.IntersectionObserver) {\n                                new IntersectionObserver((entries, obs) => {\n                                    if (entries[0].isIntersecting) {\n                                        obs.disconnect();\n                                        renderNextProfileBatch();\n                                    }\n                                }, { rootMargin: '600px' }).observe(lastCard);\n                            }\n                        }\n                    }\n\n\n\n        async function ozgAdvanceToNextLesson(courseId, completedLessonId) {\n            try {\n                const resp = await fetch(`${apiBase}\/course\/details\/${courseId}?_=${Date.now()}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n                if (!data.success || !data.curriculum) return;\n\n                let allItems = [];\n                data.curriculum.forEach(ch => { if (ch.items) ch.items.forEach(item => allItems.push(item)); });\n                if (allItems.length === 0) return;\n\n                const currentIdx = allItems.findIndex(it => it.id === completedLessonId);\n                if (currentIdx >= 0 && currentIdx < allItems.length - 1) {\n                    const next = allItems[currentIdx + 1];\n                    showHeaderToast('\u2705 Lesson done! Opening next\u2026');\n                    setTimeout(() => ozgOpenLessonModal(next.id), 1200);\n                }\n                \/\/ If this was the last lesson \u2014 simply stay on the completed lesson view.\n                \/\/ The course-complete celebration is not triggered here to avoid confusion.\n            } catch(e) { console.error('Next lesson advance error:', e); }\n        }\n\n\n\n        async function ozgCheckLessonOrder(lessonId, courseId) {\n            if (!courseId) return;\n            try {\n                const resp = await fetch(`${apiBase}\/course\/details\/${courseId}?_=${Date.now()}`, { headers: {'X-WP-Nonce': nonce} });\n                const data = await resp.json();\n                if (!data.success || !data.curriculum) return;\n\n                let allItems = [];\n                data.curriculum.forEach(ch => { if (ch.items) ch.items.forEach(item => allItems.push(item)); });\n                if (allItems.length < 2) return;\n\n                const firstItem  = allItems[0];\n                const currentIdx = allItems.findIndex(it => it.id === lessonId);\n                \/\/ Only prompt if user opened lesson 3+ and lesson 1 is not yet completed\n                if (currentIdx > 1 && !firstItem.is_completed && firstItem.id !== lessonId) {\n                    \/\/ Show a non-blocking banner inside the lesson modal\n                    const modal = document.getElementById('ozgLessonModal');\n                    if (!modal) return;\n                    const banner = document.createElement('div');\n                    banner.id = 'ozgLessonOrderBanner';\n                    banner.style.cssText = 'background:rgba(234,179,8,0.12); border:1px solid #eab308; border-radius:12px; padding:12px 16px; margin:0 0 16px 0; display:flex; align-items:center; gap:12px; flex-wrap:wrap;';\n                    banner.innerHTML = `\n                        <i data-lucide=\"alert-triangle\" style=\"color:#eab308; width:18px; flex-shrink:0;\"><\/i>\n                        <span style=\"flex:1; font-size:0.85rem; color:#fef08a;\">\n                            You opened lesson <strong>${currentIdx + 1}<\/strong> \u2014 it is recommended to start from lesson 1.\n                        <\/span>\n                        <button class=\"ozg-btn\" style=\"padding:6px 14px; font-size:0.8rem; background:linear-gradient(135deg,#eab308,#fbbf24); color:#000;\"\n                            onclick=\"document.getElementById('ozgLessonOrderBanner').remove(); ozgOpenLessonModal(${firstItem.id});\">\n                            Start from Lesson 1\n                        <\/button>\n                        <button onclick=\"this.closest('#ozgLessonOrderBanner').remove();\"\n                            style=\"background:none; border:none; color:var(--muted); cursor:pointer; font-size:0.8rem; padding:4px;\">\n                            Continue anyway\n                        <\/button>\n                    `;\n                    const content = document.getElementById('ozgLessonModalContent');\n                    if (content) content.insertBefore(banner, content.firstChild);\n                    lucide.createIcons();\n                }\n            } catch(e) { \/* non-critical \u2014 ignore *\/ }\n        }\n\n        <\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":-8,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-16013","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/pages\/16013","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/comments?post=16013"}],"version-history":[{"count":3,"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/pages\/16013\/revisions"}],"predecessor-version":[{"id":16017,"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/pages\/16013\/revisions\/16017"}],"wp:attachment":[{"href":"https:\/\/hobbi.st\/ru\/wp-json\/wp\/v2\/media?parent=16013"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}