{"id":281,"date":"2025-01-22T23:42:27","date_gmt":"2025-01-22T22:42:27","guid":{"rendered":"https:\/\/enigma.swallnet.com\/?page_id=281"},"modified":"2025-11-19T17:50:54","modified_gmt":"2025-11-19T16:50:54","slug":"po-stopach-astrolabu","status":"publish","type":"page","link":"https:\/\/enigma.swallnet.com\/index.php\/po-stopach-astrolabu\/","title":{"rendered":"Po stop\u00e1ch Astrol\u00e1bu"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\" style=\"border-style:none;border-width:0px\"><\/p>\n\n\n<!-- Enigma Web Log Active -->\n\n\n\n<p class=\"wp-block-paragraph\" style=\"border-style:none;border-width:0px\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Po stop\u00e1ch Astrol\u00e1bu<\/h2>\n\n\n    <div class=\"review-summary\">\n        <div class=\"star-rating-row\">\n            <div id=\"star-container-5\" class=\"star-rating\"><\/div>\n        <\/div>\n        <div class=\"review-meta-row\">\n            <div class=\"review-summary-text\" id=\"review-summary-text-5\"><\/div>\n        <\/div>\n    <\/div>\n\n    <style>\n        .review-summary {\n            max-width: 300px;\n        }\n\n        .star-rating-row {\n            display: flex;\n            justify-content: flex-start;\n            margin-bottom: 4px;\n        }\n\n        .star-rating {\n            display: flex;\n            font-size: 24px;\n            color: gold;\n            min-width: 130px;\n        }\n\n        .star {\n            position: relative;\n            width: 1em;\n            height: 1em;\n            margin-right: 4px;\n            display: inline-block;\n            background: lightgray;\n            clip-path: polygon(\n                50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%,\n                50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%\n            );\n        }\n\n        .star.filled {\n            background: gold;\n        }\n\n        .star.half::before {\n            content: '';\n            position: absolute;\n            width: 50%;\n            height: 100%;\n            background: gold;\n            left: 0;\n        }\n\n        .review-meta-row {\n            font-size: 14px;\n            color: white;\n        }\n\n        .review-summary-text {\n            color: #ccc;\n            font-weight: 500;\n        }\n    <\/style>\n\n    <script data-jetpack-boost=\"ignore\">\n        document.addEventListener(\"DOMContentLoaded\", function() {\n            const adventureId = 5;\n            const summaryTextId = 'review-summary-text-' + adventureId;\n            const starsId = 'star-container-' + adventureId;\n\n            if (typeof renderEnigmaRating === 'function') {\n                renderEnigmaRating(adventureId, function(totalReviews, averageRating) {\n                    const summary = document.getElementById(summaryTextId);\n                    if (summary && !isNaN(averageRating)) {\n                        summary.textContent = `${totalReviews} hodnocen\u00ed (${averageRating.toFixed(1)})`;\n                    }\n                });\n            }\n        });\n    <\/script>\n    \n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-752eff22 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<div class=\"wp-block-group alignwide is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"has-regular-font-size wp-block-paragraph\"><strong>P\u0159\u00edb\u011bh<\/strong><\/p>\n<\/div>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">Astrol\u00e1b pravdy, legend\u00e1rn\u00ed p\u0159\u00edstroj vytvo\u0159en\u00fd Mistrem Petrem, \u017e\u00e1kem Tychona Brahe, byl po stalet\u00ed skryt\u00fd p\u0159ed sv\u011btem. Nyn\u00ed se v\u0161ak ocitl v rukou nepovolan\u00fdch, kte\u0159\u00ed ho tajn\u011b odnesli z Klementina na nezn\u00e1m\u00e9 m\u00edsto. P\u0159esto\u017ee neznaj\u00ed heslo k jeho aktivaci, \u010das se kr\u00e1t\u00ed \u2013 jejich snahy mohou zp\u016fsobit nenapraviteln\u00e9 \u0161kody.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">Astrol\u00e1b toti\u017e nejen odhaluje pravdu, ale jeho moc dok\u00e1\u017ee naru\u0161it samotnou rovnov\u00e1hu sv\u011bta. Ot\u0159esy vyvolan\u00e9 jeho pou\u017eit\u00edm zp\u016fsobily podivn\u00e9 propojen\u00ed sf\u00e9r a otev\u0159ely cestu k ne\u010dekan\u00e9mu spojenectv\u00ed \u2013 na va\u0161\u00ed detektivn\u00ed v\u00fdprav\u011b v\u00e1s bude prov\u00e1zet Sherlock, virtu\u00e1ln\u00ed pr\u016fvodce inspirovan\u00fd g\u00e9niem dedukce.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">Spole\u010dn\u011b s n\u00edm budete sledovat stopy nep\u0159\u00e1tel, odhalovat fale\u0161n\u00e9 informace a \u010delit ne\u010dekan\u00fdm v\u00fdzv\u00e1m. Dok\u00e1\u017eete z\u00edskat Astrol\u00e1b zp\u011bt a zajistit, \u017ee z\u016fstane v bezpe\u010d\u00ed, nebo jeho pravdu nav\u017edy ztrat\u00edme?<\/p>\n\n\n\n<p class=\"has-text-align-left wp-block-paragraph\">   A nebo je v\u0161e je\u0161t\u011b trochu jinak a va\u0161e rozhodnut\u00ed budou m\u00edt je\u0161t\u011b v\u011bt\u0161\u00ed d\u016fsledky? <\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-style-rounded wp-duotone-unset-2 is-style-rounded--1\" style=\"margin-top:var(--wp--preset--spacing--70);margin-right:0;margin-bottom:var(--wp--preset--spacing--70);margin-left:0\"><img data-dominant-color=\"78624c\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"514\" src=\"https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv1_small.webp\" alt=\"\" class=\"wp-image-1396 not-transparent\" style=\"--dominant-color: #78624c; object-fit:cover\" srcset=\"https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv1_small.webp 900w, https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv1_small-300x171.webp 300w, https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv1_small-768x439.webp 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-752eff22 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<figure class=\"wp-block-image size-full is-resized is-style-rounded is-style-rounded--3\" style=\"margin-top:var(--wp--preset--spacing--70);margin-bottom:var(--wp--preset--spacing--70)\"><img data-dominant-color=\"574e3a\" data-has-transparency=\"false\" loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"514\" src=\"https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv3_small.webp\" alt=\"\" class=\"wp-image-1394 not-transparent\" style=\"--dominant-color: #574e3a; object-fit:cover;width:400px;height:350px\" srcset=\"https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv3_small.webp 900w, https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv3_small-300x171.webp 300w, https:\/\/enigma.swallnet.com\/wp-content\/uploads\/2025\/04\/detektiv3_small-768x439.webp 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<p class=\"has-regular-font-size wp-block-paragraph\"><strong>Kl\u00ed\u010dov\u00e9 prvky hry<\/strong><\/p>\n\n\n\n<ul style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\" class=\"wp-block-list\">\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)\">Detektivn\u00ed p\u00e1tr\u00e1n\u00ed: Sledujte stopy nep\u0159\u00e1tel, analyzujte d\u016fkazy a odhalujte pravdu. Sherlock Holmes v\u00e1m bude poskytovat cenn\u00e9 rady, ale kl\u00ed\u010dov\u00e9 rozhodnut\u00ed bude na v\u00e1s.<\/li>\n\n\n\n<li>T\u0159i mo\u017en\u00e9 z\u00e1v\u011bry \u2013 podle va\u0161ich rozhodnut\u00ed v pr\u016fb\u011bhu hry.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)\">Virtu\u00e1ln\u00ed pr\u016fvodce s AI: Sherlock nen\u00ed jen pr\u016fvodcem, ale tak\u00e9 va\u0161\u00edm spojencem. Jeho brilantn\u00ed deduk\u010dn\u00ed schopnosti o\u017eiv\u00ed p\u0159\u00edb\u011bh a pomohou v\u00e1m v odhalov\u00e1n\u00ed tajemstv\u00ed skryt\u00fdch na v\u00fdznamn\u00fdch pra\u017esk\u00fdch m\u00edstech.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)\">T\u00fdmov\u00e1 dynamika: Rozd\u011blte si role a pracujte jako t\u00fdm. V ur\u010dit\u00fdch momentech se budete muset rozd\u011blit a plnit r\u016fzn\u00e9 \u00fakoly, abyste spole\u010dn\u011b odhalili pravdu.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)\">Interaktivn\u00ed technologie: Vyu\u017eijte GPS a fotoapar\u00e1t sv\u00e9ho telefonu k odhalov\u00e1n\u00ed stop, kter\u00e9 v\u00e1s dovedou bl\u00ed\u017ee k c\u00edli. Virtu\u00e1ln\u00ed Sherlock v\u00e1s povede, ale odhalen\u00ed pravdy je jen na v\u00e1s.<\/li>\n\n\n\n<li style=\"margin-top:var(--wp--preset--spacing--20);margin-bottom:var(--wp--preset--spacing--20);padding-top:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30)\">Nap\u011bt\u00ed a zvraty: Nep\u0159\u00e1tel\u00e9 jsou st\u00e1le o krok p\u0159ed v\u00e1mi. Dok\u00e1\u017eete je p\u0159edehnat a z\u00edskat Astrol\u00e1b d\u0159\u00edve, ne\u017e bude jeho moc zneu\u017eita?<\/li>\n\n\n\n<li><strong>Obt\u00ed\u017enost:<\/strong>&nbsp;St\u0159edn\u00ed a\u017e t\u011b\u017e\u0161\u00ed obt\u00ed\u017enost. 2,5 a\u017e 3 hodiny.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0\">    <div style=\"text-align: center; margin-bottom: 10px;\">\n    <div style=\"display: inline-block;\">\n        <span style=\"font-weight: bold; color: red; margin-right: 10px;\">\n        P\u0159ihlaste se nebo si \u00fa\u010det zalo\u017ete na dv\u011b kliknut\u00ed \u2013 a z\u00edskejte slevu jako nikde jinde!        <\/span>\n        <a href=\"https:\/\/enigma.swallnet.com\/index.php\/login\"\n        class=\"wp-block-button__link wp-element-button\"\n        style=\"display: inline-block; white-space: nowrap; background: #22445d; color: white; padding: 8px 16px; border-radius: 5px; text-decoration: none;\">\n        Vyzkou\u0161ejte Ihned        <\/a>\n    <\/div>\n    <\/div>\n    <\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter is-style-regular has-small-font-size\" style=\"padding-top:var(--wp--preset--spacing--70);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--70);padding-left:var(--wp--preset--spacing--30)\"><table class=\"has-border-color has-primary-border-color has-fixed-layout\" style=\"border-width:7px\"><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">PO\u010cET T\u00ddM\u016e<\/th><th>POPIS<\/th><th class=\"has-text-align-center\" data-align=\"center\">CENA<\/th><th class=\"has-text-align-center\" data-align=\"center\"><\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Solo<\/strong><\/td><td>Ide\u00e1ln\u00ed pro osamocen\u00e9 vlky.<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong><strong><strong><strong>    <span class=\"enigma-dynamic-price\"\n          data-adventure-id=\"5\"\n          data-multiplayer=\"0\"\n          data-user-id=\"0\">\n        ...\n    <\/span>\n\n    <style>\n        \/* m\u016f\u017ee\u0161 upravit podle sv\u00e9ho designu \/ p\u0159esunout do CSS souboru *\/\n        .enigma-price-original {\n            text-decoration: line-through;\n            color: #e74c3c;      \/* \u010derven\u00e1 *\/\n            margin-right: 6px;\n            font-weight: 500;\n        }\n        .enigma-price-user {\n            color: #ffffff;      \/* b\u00edl\u00e1 \u2013 po\u010d\u00edt\u00e1m s tmav\u00fdm pozad\u00edm boxu *\/\n            font-weight: 700;\n        }\n    <\/style>\n\n    <script data-jetpack-boost=\"ignore\">\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        document.querySelectorAll('.enigma-dynamic-price').forEach(function (span) {\n            if (span.dataset.loaded === \"1\") return;\n            span.dataset.loaded = \"1\";\n\n            const adventureId = span.dataset.adventureId;\n            const multiplayer = span.dataset.multiplayer;\n            const userId = span.dataset.userId;\n\n            fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/price?adventureId=${adventureId}&multiplayer=${multiplayer}&userId=${userId}`)\n                .then(response => response.json())\n                .then(data => {\n                    const orig = Number(data.originalPrice);\n                    const user = Number(\n                        (data.userPrice !== undefined) ? data.userPrice : data.finalPrice\n                    );\n\n                    if (!isFinite(orig) || !isFinite(user)) {\n                        span.textContent = '\u2013';\n                        return;\n                    }\n\n                    \/\/ Pokud je cena stejn\u00e1 (\u017e\u00e1dn\u00e1 user sleva) \u2192 zobraz jedno \u010d\u00edslo\n                    if (Math.abs(orig - user) < 0.01) {\n                        span.textContent = user.toFixed(0) + ' K\u010d';\n                    } else {\n                        span.innerHTML =\n                            '<span class=\"enigma-price-original\">' +\n                                orig.toFixed(0) + ' K\u010d' +\n                            '<\/span>' +\n                            '<span class=\"enigma-price-user\">' +\n                                user.toFixed(0) + ' K\u010d' +\n                            '<\/span>';\n                    }\n                })\n                .catch(() => {\n                    span.textContent = '\u2013';\n                });\n        });\n    });\n    <\/script>\n    <\/strong><\/strong><\/strong><\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">    <form class=\"enigma-add-to-cart-form\"\n          method=\"post\"\n          action=\"\"\n          data-user-id=\"0\"\n          data-game-id=\"5\"\n          data-game-name=\"Po stop\u00e1ch Astrol\u00e1bu\"\n          data-multiplayer=\"0\">\n\n        <input type=\"hidden\" name=\"game_id\" value=\"5\">\n        <input type=\"hidden\" name=\"game_name\" value=\"Po stop\u00e1ch Astrol\u00e1bu\">\n        <input type=\"hidden\" name=\"price\" value=\"\">\n        <input type=\"hidden\" name=\"original_price\" value=\"\">\n        <input type=\"hidden\" name=\"multiplayer\" value=\"0\">\n        <input type=\"hidden\" name=\"enigma_add_to_cart\" value=\"1\">\n\n        <button type=\"submit\" class=\"wp-block-button__link wp-element-button\">\n            Koupit        <\/button>\n    <\/form>\n\n    <script data-jetpack-boost=\"ignore\">\n    document.addEventListener('DOMContentLoaded', function () {\n        document.querySelectorAll('.enigma-add-to-cart-form').forEach(function(form) {\n            if (form.dataset.listenerAttached === \"true\") return;\n            form.dataset.listenerAttached = \"true\";\n\n            form.addEventListener('submit', function (e) {\n                e.preventDefault();\n\n                const userId = parseInt(form.dataset.userId) || 0;\n                const gameId = parseInt(form.dataset.gameId);\n                const multiplayer = parseInt(form.dataset.multiplayer);\n                const gameName = form.dataset.gameName;\n\n                const priceField = form.querySelector('input[name=\"price\"]');\n\n                fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/price?adventureId=${gameId}&multiplayer=${multiplayer}&userId=${userId}`)\n                    .then(res => res.json())\n                    .then(data => {\n                        const finalPrice = data.finalPrice;\n                        const originalPrice = data.originalPrice;\n\n                        priceField.value = finalPrice;\n                        \n                        \/\/ dodani original ceny\n                        const originalPriceField = form.querySelector('input[name=\"original_price\"]');\n                        if (originalPriceField) {\n                            originalPriceField.value = originalPrice;\n                        }\n\n                        \/\/ Odeslat analytiku\n                        fetch('https:\/\/enigma.swallnet.com\/api\/marketing\/add-to-cart', {\n                            method: 'POST',\n                            headers: { 'Content-Type': 'application\/json' },\n                            body: JSON.stringify({\n                                userId: userId,\n                                game_id: gameId,\n                                game_name: gameName,\n                                price: finalPrice,\n                                multiplayer: multiplayer\n                            })\n                        });\n                    })\n                    .finally(() => {\n                        \/\/ Po fetchi i analytice formul\u00e1\u0159 ode\u0161leme\n                        form.submit();\n                    });\n            });\n        });\n    });\n    <\/script>\n    <\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>v\u00edce hr\u00e1\u010d\u016f<\/strong><\/td><td>V\u00edc hlav v\u00edc v\u00ed a tady to plat\u00ed dvojn\u00e1sob.<\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong><strong><strong><strong><strong>    <span class=\"enigma-dynamic-price\"\n          data-adventure-id=\"5\"\n          data-multiplayer=\"1\"\n          data-user-id=\"0\">\n        ...\n    <\/span>\n\n    <style>\n        \/* m\u016f\u017ee\u0161 upravit podle sv\u00e9ho designu \/ p\u0159esunout do CSS souboru *\/\n        .enigma-price-original {\n            text-decoration: line-through;\n            color: #e74c3c;      \/* \u010derven\u00e1 *\/\n            margin-right: 6px;\n            font-weight: 500;\n        }\n        .enigma-price-user {\n            color: #ffffff;      \/* b\u00edl\u00e1 \u2013 po\u010d\u00edt\u00e1m s tmav\u00fdm pozad\u00edm boxu *\/\n            font-weight: 700;\n        }\n    <\/style>\n\n    <script data-jetpack-boost=\"ignore\">\n    document.addEventListener(\"DOMContentLoaded\", function () {\n        document.querySelectorAll('.enigma-dynamic-price').forEach(function (span) {\n            if (span.dataset.loaded === \"1\") return;\n            span.dataset.loaded = \"1\";\n\n            const adventureId = span.dataset.adventureId;\n            const multiplayer = span.dataset.multiplayer;\n            const userId = span.dataset.userId;\n\n            fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/price?adventureId=${adventureId}&multiplayer=${multiplayer}&userId=${userId}`)\n                .then(response => response.json())\n                .then(data => {\n                    const orig = Number(data.originalPrice);\n                    const user = Number(\n                        (data.userPrice !== undefined) ? data.userPrice : data.finalPrice\n                    );\n\n                    if (!isFinite(orig) || !isFinite(user)) {\n                        span.textContent = '\u2013';\n                        return;\n                    }\n\n                    \/\/ Pokud je cena stejn\u00e1 (\u017e\u00e1dn\u00e1 user sleva) \u2192 zobraz jedno \u010d\u00edslo\n                    if (Math.abs(orig - user) < 0.01) {\n                        span.textContent = user.toFixed(0) + ' K\u010d';\n                    } else {\n                        span.innerHTML =\n                            '<span class=\"enigma-price-original\">' +\n                                orig.toFixed(0) + ' K\u010d' +\n                            '<\/span>' +\n                            '<span class=\"enigma-price-user\">' +\n                                user.toFixed(0) + ' K\u010d' +\n                            '<\/span>';\n                    }\n                })\n                .catch(() => {\n                    span.textContent = '\u2013';\n                });\n        });\n    });\n    <\/script>\n    <\/strong><\/strong><\/strong><\/strong><\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">    <form class=\"enigma-add-to-cart-form\"\n          method=\"post\"\n          action=\"\"\n          data-user-id=\"0\"\n          data-game-id=\"5\"\n          data-game-name=\"&lt;strong&gt;Po stop\u00e1ch Astrol\u00e1bu&lt;\/strong&gt;\"\n          data-multiplayer=\"1\">\n\n        <input type=\"hidden\" name=\"game_id\" value=\"5\">\n        <input type=\"hidden\" name=\"game_name\" value=\"&lt;strong&gt;Po stop\u00e1ch Astrol\u00e1bu&lt;\/strong&gt;\">\n        <input type=\"hidden\" name=\"price\" value=\"\">\n        <input type=\"hidden\" name=\"original_price\" value=\"\">\n        <input type=\"hidden\" name=\"multiplayer\" value=\"1\">\n        <input type=\"hidden\" name=\"enigma_add_to_cart\" value=\"1\">\n\n        <button type=\"submit\" class=\"wp-block-button__link wp-element-button\">\n            Koupit        <\/button>\n    <\/form>\n\n    <script data-jetpack-boost=\"ignore\">\n    document.addEventListener('DOMContentLoaded', function () {\n        document.querySelectorAll('.enigma-add-to-cart-form').forEach(function(form) {\n            if (form.dataset.listenerAttached === \"true\") return;\n            form.dataset.listenerAttached = \"true\";\n\n            form.addEventListener('submit', function (e) {\n                e.preventDefault();\n\n                const userId = parseInt(form.dataset.userId) || 0;\n                const gameId = parseInt(form.dataset.gameId);\n                const multiplayer = parseInt(form.dataset.multiplayer);\n                const gameName = form.dataset.gameName;\n\n                const priceField = form.querySelector('input[name=\"price\"]');\n\n                fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/price?adventureId=${gameId}&multiplayer=${multiplayer}&userId=${userId}`)\n                    .then(res => res.json())\n                    .then(data => {\n                        const finalPrice = data.finalPrice;\n                        const originalPrice = data.originalPrice;\n\n                        priceField.value = finalPrice;\n                        \n                        \/\/ dodani original ceny\n                        const originalPriceField = form.querySelector('input[name=\"original_price\"]');\n                        if (originalPriceField) {\n                            originalPriceField.value = originalPrice;\n                        }\n\n                        \/\/ Odeslat analytiku\n                        fetch('https:\/\/enigma.swallnet.com\/api\/marketing\/add-to-cart', {\n                            method: 'POST',\n                            headers: { 'Content-Type': 'application\/json' },\n                            body: JSON.stringify({\n                                userId: userId,\n                                game_id: gameId,\n                                game_name: gameName,\n                                price: finalPrice,\n                                multiplayer: multiplayer\n                            })\n                        });\n                    })\n                    .finally(() => {\n                        \/\/ Po fetchi i analytice formul\u00e1\u0159 ode\u0161leme\n                        form.submit();\n                    });\n            });\n        });\n    });\n    <\/script>\n    <\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-top:0;padding-bottom:0\"><\/p>\n\n\n\n<p class=\"has-regular-font-size wp-block-paragraph\"><strong>Dal\u0161\u00ed informace<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">\u2022 <strong>Kolik hr\u00e1\u010d\u016f m\u016f\u017ee b\u00fdt v t\u00fdmu?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"margin-right:0;margin-left:0;padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\">P\u0159i h\u0159e v\u00edce hr\u00e1\u010d\u016f, nen\u00ed jejich po\u010det limitov\u00e1n  \u2013 doporu\u010dujeme 2 a\u017e 6 osob, aby si hru u\u017eili v\u0161ichni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--40);padding-left:var(--wp--preset--spacing--40)\">\u2022 <strong>Co zahrnuje cena?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\">\u2022 Pln\u00fd p\u0159\u00edstup ke h\u0159e \u201ePo stop\u00e1ch Astrol\u00e1bu\u201c.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\">\u2022 Jedine\u010dn\u00fd z\u00e1\u017eitek pro jednotlivce i t\u00fdmy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"padding-right:var(--wp--preset--spacing--60);padding-left:var(--wp--preset--spacing--60)\">\u2022 Virtu\u00e1ln\u00ed pr\u016fvodce s AI, kter\u00fd v\u00e1s nejen vede, ale tak\u00e9 poskytuje zaj\u00edmav\u00e9 informace o m\u00edstech, kter\u00e1 nav\u0161t\u00edv\u00edt<\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-0d5e80e3 wp-block-columns-is-layout-flex\" style=\"padding-right:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--20)\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">    <div class=\"leaderboard-container\">\n        <h1>Nejlep\u0161\u00ed hr\u00e1\u010di<\/h1>\n        <table id=\"leaderboard-table\">\n            <thead>\n                <tr>\n                    <th>Po\u0159ad\u00ed<\/th>\n                    <th>P\u0159ezd\u00edvka<\/th>\n                    <th>Sk\u00f3re<\/th>\n                <\/tr>\n            <\/thead>\n            <tbody>\n                <!-- Dynamically inserted data -->\n            <\/tbody>\n        <\/table>\n        <div id=\"error-message\" class=\"error\"><\/div>\n    <\/div>\n\n    <style>\n        .leaderboard-container {\n            max-width: 800px;\n            margin: 0 auto;\n            background: #383838;\n            border-radius: 15px;\n            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);\n            padding: 20px;\n        }\n        h1 {\n            text-align: center;\n            color: white;\n        }\n        table {\n            width: 100%;\n            border-collapse: collapse;\n            margin-top: 20px;\n        }\n        th, td {\n            text-align: left;\n            padding: 12px;\n            border-bottom: 1px solid #9CA3AF;\n        }\n        th {\n            background-color: #0F3D57;\n            color: white;\n        }\n        tr:hover {\n            background-color: #265A7C;\n        }\n        #leaderboard-table tbody tr:nth-child(1) td {\n            color: #C4A85E;\n            font-weight: bold;\n        }\n        #leaderboard-table tbody tr:nth-child(2) td {\n            color: #A8A9AD;\n            font-weight: bold;\n        }\n        #leaderboard-table tbody tr:nth-child(3) td {\n            color: #CD7F32; \/* Bronze *\/\n            font-weight: bold;\n        }\n        .error {\n            color: red;\n            text-align: center;\n            margin-top: 20px;\n        }\n    <\/style>\n\n    <script data-jetpack-boost=\"ignore\" type=\"text\/javascript\">\n    \/\/ <![CDATA[\n    (function(){\n        async function fetchLeaderboard(adventureId, maxRecords, webLocale) {\n            try {\n                \/\/const response = await fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/leaderboard?adventureId=${adventureId}&maxRecords=${maxRecords}&webLocale=${webLocale}`);\n                const response = await fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/leaderboard?adventureId=${adventureId}&maxRecords=${maxRecords}&webLocale=cs`);\n                if (!response.ok) {\n                    throw new Error(`HTTP error! Status: ${response.status}`);\n                }\n                const data = await response.json();\n                populateLeaderboardTable(data);\n            } catch (error) {\n                document.getElementById('error-message').textContent = 'Nepoda\u0159ilo se na\u010d\u00edst data \u017eeb\u0159\u00ed\u010dku: ' + error.message;\n            }\n        }\n\n        function populateLeaderboardTable(data) {\n            const tableBody = document.getElementById('leaderboard-table').querySelector('tbody');\n            tableBody.innerHTML = ''; \/\/ Clear previous data\n\n            Object.values(data).forEach(record => {\n                const row = document.createElement('tr');\n\n                const rankCell = document.createElement('td');\n                rankCell.textContent = record.rank;\n\n                const nickNameCell = document.createElement('td');\n                nickNameCell.textContent = record.nickName;\n\n                const scoreCell = document.createElement('td');\n                scoreCell.textContent = record.score;\n\n                row.appendChild(rankCell);\n                row.appendChild(nickNameCell);\n                row.appendChild(scoreCell);\n\n                tableBody.appendChild(row);\n            });\n        }\n\n        const adventureId = 5;\n        const maxRecords  = 10;\n        const webLocale   = null;\n        fetchLeaderboard(adventureId, maxRecords, webLocale);\n    })();\n    \/\/ ]]>\n    <\/script>\n    \n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">    <div class=\"detailed-review-wrapper\" data-adventure-id=\"5\">\n        <h3>Hodnocen\u00ed u\u017eivatel\u016f<\/h3>\n\n        <div id=\"category-ratings-5\" class=\"category-ratings\">\n            <div class=\"rating-row\"><div class=\"star-rating\" id=\"cat-0-adventure-5\"><\/div><div class=\"numeric-average\" id=\"avg-0-adventure-5\"><\/div><span class=\"category-label\">Celkov\u00fd z\u00e1\u017eitek<\/span><\/div><div class=\"rating-row\"><div class=\"star-rating\" id=\"cat-1-adventure-5\"><\/div><div class=\"numeric-average\" id=\"avg-1-adventure-5\"><\/div><span class=\"category-label\">H\u00e1danky<\/span><\/div><div class=\"rating-row\"><div class=\"star-rating\" id=\"cat-2-adventure-5\"><\/div><div class=\"numeric-average\" id=\"avg-2-adventure-5\"><\/div><span class=\"category-label\">Lokalita<\/span><\/div><div class=\"rating-row\"><div class=\"star-rating\" id=\"cat-3-adventure-5\"><\/div><div class=\"numeric-average\" id=\"avg-3-adventure-5\"><\/div><span class=\"category-label\">Z\u00e1bava<\/span><\/div>        <\/div>\n\n        <h4>Vybran\u00e9 recenze<\/h4>\n        <div id=\"published-reviews-5\" class=\"published-reviews\"><\/div>\n    <\/div>\n\n    <style>\n        .rating-row {\n            display: flex;\n            align-items: center;\n            margin-bottom: 10px;\n            gap: 10px;\n        }\n        .category-label {\n            font-weight: bold;\n            color: white;\n        }\n        .numeric-average {\n            width: 40px;\n            text-align: right;\n            font-weight: bold;\n            color: white;\n        }\n        .star-rating {\n            display: flex;\n            font-size: 24px;\n        }\n        .star {\n            width: 1em;\n            height: 1em;\n            background: lightgray;\n            clip-path: polygon(\n                50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%,\n                50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%\n            );\n            margin-right: 5px;\n            position: relative;\n        }\n        .star.filled {\n            background: gold;\n        }\n        .star.half::before {\n            content: '';\n            position: absolute;\n            width: 50%;\n            height: 100%;\n            background: gold;\n            left: 0;\n        }\n        .published-review {\n            margin-bottom: 20px;\n            background: #f9f9f9;\n            padding: 10px;\n            border-radius: 5px;\n            border-left: 4px solid #ccc;\n        }\n        .published-review .review-header {\n            display: flex;\n            justify-content: space-between;\n            align-items: center;\n            margin-bottom: 5px;\n        }\n        .published-review .review-nickname {\n            font-weight: bold;\n            color: #333;\n        }\n        .published-review .review-stars {\n            display: flex;\n        }\n        .published-review .review-text {\n            font-style: italic;\n            color: #333;\n            margin-top: 5px;\n        }\n    <\/style>\n\n    <script data-jetpack-boost=\"ignore\">\n        document.addEventListener(\"DOMContentLoaded\", function () {\n            const adventureId = 5;\n            fetch(`https:\/\/enigma.swallnet.com\/api\/adventure\/review-details?adventureId=${adventureId}&webLocale=`)\n                .then(res => res.json())\n                .then(data => {\n                    if (!data.success) return;\n\n                    const averages = [\n                        data.categoryAverages[0], \/\/ Overall Experience\n                        data.categoryAverages[1], \/\/ Puzzles\n                        data.categoryAverages[2], \/\/ Locality\n                        data.categoryAverages[3]  \/\/ Fun\n                    ];\n\n                    averages.forEach((avg, index) => {\n                        renderStars(\"cat-\" + index + \"-adventure-\" + adventureId, avg);\n                        const numeric = document.getElementById(\"avg-\" + index + \"-adventure-\" + adventureId);\n                        if (numeric && avg !== undefined && !isNaN(avg)) {\n                            numeric.textContent = avg.toFixed(1);\n                        }\n                    });\n\n                    const container = document.getElementById(\"published-reviews-\" + adventureId);\n                    data.publishedReviews.forEach(review => {\n                        const div = document.createElement(\"div\");\n                        div.classList.add(\"published-review\");\n\n                        const header = document.createElement(\"div\");\n                        header.classList.add(\"review-header\");\n\n                        const nick = document.createElement(\"div\");\n                        nick.classList.add(\"review-nickname\");\n                        nick.textContent = review.nickName;\n\n                        const stars = document.createElement(\"div\");\n                        stars.classList.add(\"review-stars\");\n                        renderStars(stars, review.average);\n\n                        header.appendChild(nick);\n                        header.appendChild(stars);\n\n                        const textDiv = document.createElement(\"div\");\n                        textDiv.classList.add(\"review-text\");\n                        textDiv.textContent = `\"${review.text}\"`;\n\n                        div.appendChild(header);\n                        div.appendChild(textDiv);\n                        container.appendChild(div);\n                    });\n                });\n\n            function renderStars(containerOrId, avg) {\n                const container = (typeof containerOrId === \"string\") ? document.getElementById(containerOrId) : containerOrId;\n                if (!container) return;\n                container.innerHTML = '';\n                for (let i = 1; i <= 5; i++) {\n                    const star = document.createElement(\"div\");\n                    star.classList.add(\"star\");\n                    if (i <= Math.floor(avg)) {\n                        star.classList.add(\"filled\");\n                    } else if (i - avg < 1) {\n                        star.classList.add(\"half\");\n                    }\n                    container.appendChild(star);\n                }\n            }\n        });\n    <\/script>\n    \n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Po stop\u00e1ch Astrol\u00e1bu P\u0159\u00edb\u011bh Astrol\u00e1b pravdy, legend\u00e1rn\u00ed p\u0159\u00edstroj vytvo\u0159en\u00fd Mistrem Petrem, \u017e\u00e1kem Tychona Brahe, byl po stalet\u00ed skryt\u00fd p\u0159ed sv\u011btem. Nyn\u00ed se v\u0161ak ocitl v rukou nepovolan\u00fdch, kte\u0159\u00ed ho tajn\u011b odnesli z Klementina na nezn\u00e1m\u00e9 m\u00edsto. P\u0159esto\u017ee neznaj\u00ed heslo k jeho aktivaci, \u010das se kr\u00e1t\u00ed \u2013 jejich snahy mohou zp\u016fsobit nenapraviteln\u00e9 \u0161kody. Astrol\u00e1b toti\u017e nejen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"class_list":["post-281","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/pages\/281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/comments?post=281"}],"version-history":[{"count":56,"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/pages\/281\/revisions"}],"predecessor-version":[{"id":2213,"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/pages\/281\/revisions\/2213"}],"wp:attachment":[{"href":"https:\/\/enigma.swallnet.com\/index.php\/wp-json\/wp\/v2\/media?parent=281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}