{"id":35574,"date":"2026-08-16T19:53:28","date_gmt":"2026-08-16T17:53:28","guid":{"rendered":"https:\/\/osmstatecnych.cz\/ties\/"},"modified":"2026-08-18T00:17:46","modified_gmt":"2026-08-17T22:17:46","slug":"relations","status":"publish","type":"page","link":"https:\/\/osmstatecnych.cz\/en\/relations\/","title":{"rendered":"RELATIONS"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"35574\" class=\"elementor elementor-35574 elementor-35539\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-594308f e-flex e-con-boxed e-con e-parent\" data-id=\"594308f\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-b839c56 elementor-widget elementor-widget-heading\" data-id=\"b839c56\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">RELATIONS<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-41f6315 e-flex e-con-boxed e-con e-parent\" data-id=\"41f6315\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-834ddf5 elementor-widget elementor-widget-text-editor\" data-id=\"834ddf5\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\r\n    <style>\r\n\r\n        #osm-vazby-798089-wrap {\r\n            width: 100%;\r\n            position: relative;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-toolbar {\r\n\r\n            position: relative;\r\n            z-index: 10;\r\n\r\n            background: #ffffff;\r\n\r\n            padding:\r\n                12px 0 14px 0;\r\n\r\n            margin-bottom:\r\n                42px;\r\n\r\n            box-shadow:\r\n                0 6px 18px\r\n                rgba(0,0,0,.06);\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-controls {\r\n\r\n            display: flex;\r\n            flex-wrap: wrap;\r\n            align-items: stretch;\r\n\r\n            gap: 12px;\r\n        }\r\n\r\n\r\n        #osm-vazby-all-798089 {\r\n\r\n            appearance: none;\r\n\r\n            min-height: 48px;\r\n\r\n            border:\r\n                1px solid #1C4746;\r\n\r\n            background:\r\n                #1C4746;\r\n\r\n            color:\r\n                #ffffff;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n\r\n            font-size:\r\n                14px;\r\n\r\n            font-weight:\r\n                400;\r\n\r\n            padding:\r\n                11px 18px;\r\n\r\n            cursor:\r\n                pointer;\r\n\r\n            transition:\r\n                background .2s ease,\r\n                border-color .2s ease;\r\n        }\r\n\r\n\r\n        #osm-vazby-all-798089:hover {\r\n\r\n            background:\r\n                #FF5C00;\r\n\r\n            border-color:\r\n                #FF5C00;\r\n        }\r\n\r\n\r\n\r\n\r\n        #osm-vazby-798089-legend {\r\n\r\n            display:\r\n                flex;\r\n\r\n            flex-wrap:\r\n                wrap;\r\n\r\n            align-items:\r\n                center;\r\n\r\n            gap:\r\n                6px 18px;\r\n\r\n            margin:\r\n                10px 0 2px 0;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend-title {\r\n\r\n            color:\r\n                #667171;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n\r\n            font-size:\r\n                12px;\r\n\r\n            font-weight:\r\n                400;\r\n\r\n            line-height:\r\n                1.15;\r\n\r\n            text-transform:\r\n                uppercase;\r\n\r\n            letter-spacing:\r\n                .02em;\r\n\r\n            margin-right:\r\n                2px;\r\n\r\n            opacity:\r\n                .85;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter {\r\n\r\n            appearance:\r\n                none;\r\n\r\n            display:\r\n                inline-flex;\r\n\r\n            align-items:\r\n                center;\r\n\r\n            gap:\r\n                9px;\r\n\r\n            padding:\r\n                5px 0 6px 0;\r\n\r\n            border:\r\n                0;\r\n\r\n            border-bottom:\r\n                1px solid transparent;\r\n\r\n            background:\r\n                transparent;\r\n\r\n            color:\r\n                #778181;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n\r\n            font-size:\r\n                12px;\r\n\r\n            font-weight:\r\n                300;\r\n\r\n            line-height:\r\n                1.15;\r\n\r\n            text-transform:\r\n                uppercase;\r\n\r\n            cursor:\r\n                pointer;\r\n\r\n            opacity:\r\n                .66;\r\n\r\n            transition:\r\n                color .18s ease,\r\n                opacity .18s ease,\r\n                border-color .18s ease,\r\n                font-weight .18s ease;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter:hover,\r\n        #osm-vazby-798089-legend .osm-vazby-filter:focus-visible {\r\n\r\n            color:\r\n                #1C4746;\r\n\r\n            opacity:\r\n                1;\r\n\r\n            outline:\r\n                none;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter.is-active {\r\n\r\n            color:\r\n                #1C4746;\r\n\r\n            opacity:\r\n                1;\r\n\r\n            font-weight:\r\n                500;\r\n\r\n            border-bottom-color:\r\n                rgba(28,71,70,.42);\r\n        }\r\n\r\n\r\n        \/*\r\n         * MINIATURN\u00cd VZORKY VAZEB\r\n         * skute\u010dn\u00e1 linka + skute\u010dn\u00e9 troj\u00faheln\u00edkov\u00e9 konce\r\n         *\/\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample {\r\n\r\n            position:\r\n                relative;\r\n\r\n            display:\r\n                inline-block;\r\n\r\n            flex:\r\n                0 0 48px;\r\n\r\n            width:\r\n                48px;\r\n\r\n            height:\r\n                16px;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample .shaft {\r\n\r\n            position:\r\n                absolute;\r\n\r\n            left:\r\n                7px;\r\n\r\n            right:\r\n                7px;\r\n\r\n            top:\r\n                50%;\r\n\r\n            height:\r\n                1.5px;\r\n\r\n            transform:\r\n                translateY(-50%);\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample .arrow {\r\n\r\n            position:\r\n                absolute;\r\n\r\n            top:\r\n                50%;\r\n\r\n            width:\r\n                0;\r\n\r\n            height:\r\n                0;\r\n\r\n            transform:\r\n                translateY(-50%);\r\n\r\n            border-top:\r\n                4px solid transparent;\r\n\r\n            border-bottom:\r\n                4px solid transparent;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample .arrow.right {\r\n\r\n            right:\r\n                0;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample .arrow.left {\r\n\r\n            left:\r\n                0;\r\n        }\r\n\r\n\r\n        \/* \u010cLENSTV\u00cd *\/\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.membership .shaft {\r\n\r\n            background:\r\n                #A8B1B1;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.membership .arrow.right {\r\n\r\n            border-left:\r\n                7px solid #A8B1B1;\r\n        }\r\n\r\n\r\n        \/* SPOLUPR\u00c1CE *\/\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.cooperation .shaft {\r\n\r\n            background:\r\n                #6676CF;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.cooperation .arrow.right {\r\n\r\n            border-left:\r\n                7px solid #6676CF;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.cooperation .arrow.left {\r\n\r\n            border-right:\r\n                7px solid #6676CF;\r\n        }\r\n\r\n\r\n        \/*\r\n         * V\u0160ECHNY VAZBY:\r\n         * dva drobn\u00e9 \u0159\u00e1dky nad sebou.\r\n         *\/\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all {\r\n\r\n            height:\r\n                20px;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .all-line {\r\n\r\n            position:\r\n                absolute;\r\n\r\n            left:\r\n                7px;\r\n\r\n            right:\r\n                7px;\r\n\r\n            height:\r\n                1.5px;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .all-line.membership {\r\n\r\n            top:\r\n                6px;\r\n\r\n            background:\r\n                #A8B1B1;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .all-line.cooperation {\r\n\r\n            bottom:\r\n                5px;\r\n\r\n            background:\r\n                #6676CF;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .mini-arrow {\r\n\r\n            position:\r\n                absolute;\r\n\r\n            width:\r\n                0;\r\n\r\n            height:\r\n                0;\r\n\r\n            border-top:\r\n                3px solid transparent;\r\n\r\n            border-bottom:\r\n                3px solid transparent;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .membership-right {\r\n\r\n            top:\r\n                3px;\r\n\r\n            right:\r\n                0;\r\n\r\n            border-left:\r\n                6px solid #A8B1B1;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .cooperation-left {\r\n\r\n            bottom:\r\n                2px;\r\n\r\n            left:\r\n                0;\r\n\r\n            border-right:\r\n                6px solid #6676CF;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089-legend .osm-vazby-filter-sample.all .cooperation-right {\r\n\r\n            bottom:\r\n                2px;\r\n\r\n            right:\r\n                0;\r\n\r\n            border-left:\r\n                6px solid #6676CF;\r\n        }\r\n\r\n\r\n        @media (max-width: 767px) {\r\n\r\n            #osm-vazby-798089-legend {\r\n\r\n                gap:\r\n                    4px 16px;\r\n            }\r\n\r\n            #osm-vazby-798089-legend-title {\r\n\r\n                flex-basis:\r\n                    100%;\r\n\r\n                margin-right:\r\n                    0;\r\n            }\r\n\r\n\r\n            #osm-vazby-798089-legend .osm-vazby-filter {\r\n\r\n                gap:\r\n                    7px;\r\n\r\n                font-size:\r\n                    11px;\r\n            }\r\n\r\n\r\n            #osm-vazby-798089-legend .osm-vazby-filter-sample {\r\n\r\n                flex-basis:\r\n                    38px;\r\n\r\n                width:\r\n                    38px;\r\n            }\r\n        }\r\n\r\n\r\n        #osm-vazby-select-798089 {\r\n\r\n            flex:\r\n                1 1 360px;\r\n\r\n            min-width:\r\n                280px;\r\n\r\n            height:\r\n                48px;\r\n\r\n            min-height:\r\n                48px;\r\n\r\n            padding:\r\n                0 42px 0 15px;\r\n\r\n            border:\r\n                1px solid #1C4746;\r\n\r\n            background-color:\r\n                #ffffff;\r\n\r\n            color:\r\n                #1C4746;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n\r\n            font-size:\r\n                14px;\r\n\r\n            font-weight:\r\n                300;\r\n\r\n            line-height:\r\n                normal;\r\n\r\n            cursor:\r\n                pointer;\r\n\r\n            box-sizing:\r\n                border-box;\r\n        }\r\n\r\n\r\n        \/*\r\n         * VELK\u00c1 PLOCHA GRAFU\r\n         *\/\r\n        #osm-vazby-stage-798089 {\r\n\r\n            position: relative;\r\n\r\n            width: 100%;\r\n\r\n            height:\r\n                90vh;\r\n\r\n            min-height:\r\n                860px;\r\n\r\n            overflow:\r\n                hidden;\r\n        }\r\n\r\n\r\n        #osm-vazby-798089 {\r\n\r\n            position: absolute;\r\n\r\n            inset: 0;\r\n\r\n            width: 100%;\r\n            height: 100%;\r\n        }\r\n\r\n\r\n        \/*\r\n         * CENTR\u00c1LN\u00cd N\u00c1ZEV\r\n         *\/\r\n        #osm-vazby-labels-798089 {\r\n\r\n            position: absolute;\r\n\r\n            inset: 0;\r\n\r\n            pointer-events:\r\n                none;\r\n\r\n            z-index:\r\n                5;\r\n        }\r\n\r\n\r\n        #osm-vazby-labels-798089 a {\r\n\r\n            position:\r\n                absolute;\r\n\r\n            transform:\r\n                translateX(-50%);\r\n\r\n            display:\r\n                block;\r\n\r\n            width:\r\n                max-content;\r\n\r\n            max-width:\r\n                none;\r\n\r\n            box-sizing:\r\n                border-box;\r\n\r\n            padding:\r\n                6px 12px;\r\n\r\n            background:\r\n                #ffffff;\r\n\r\n            border:\r\n                1px solid #FF5C00;\r\n\r\n            white-space:\r\n                nowrap;\r\n\r\n            text-align:\r\n                center;\r\n\r\n            text-decoration:\r\n                none !important;\r\n\r\n            color:\r\n                #FF5C00;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n\r\n            font-size:\r\n                15px;\r\n\r\n            font-weight:\r\n                300;\r\n\r\n            line-height:\r\n                1.25;\r\n\r\n            text-transform:\r\n                uppercase;\r\n\r\n            pointer-events:\r\n                auto;\r\n\r\n            cursor:\r\n                pointer;\r\n\r\n            transition:\r\n                font-weight .15s ease;\r\n        }\r\n\r\n\r\n        #osm-vazby-labels-798089 a:hover,\r\n        #osm-vazby-labels-798089 a:focus {\r\n\r\n            color:\r\n                #FF5C00 !important;\r\n\r\n            font-weight:\r\n                600;\r\n\r\n            text-decoration:\r\n                none !important;\r\n        }\r\n\r\n\r\n        \/*\r\n         * TOOLTIP OSTATN\u00cdCH UZL\u016e\r\n         *\/\r\n        #osm-vazby-tooltip-798089 {\r\n\r\n            position:\r\n                absolute;\r\n\r\n            z-index:\r\n                20;\r\n\r\n            display:\r\n                none;\r\n\r\n            max-width:\r\n                180px;\r\n\r\n            padding:\r\n                7px 10px;\r\n\r\n            box-sizing:\r\n                border-box;\r\n\r\n            white-space:\r\n                normal;\r\n\r\n            overflow-wrap:\r\n                break-word;\r\n\r\n            background:\r\n                #ffffff;\r\n\r\n            border:\r\n                1px solid #FF5C00;\r\n\r\n            box-shadow:\r\n                0 4px 12px\r\n                rgba(0,0,0,.10);\r\n\r\n            color:\r\n                #FF5C00;\r\n\r\n            font-family:\r\n                \"Open Sans\", sans-serif;\r\n\r\n            font-size:\r\n                13px;\r\n\r\n            font-weight:\r\n                600;\r\n\r\n            line-height:\r\n                1.25;\r\n\r\n            text-align:\r\n                center;\r\n\r\n            text-transform:\r\n                uppercase;\r\n\r\n            pointer-events:\r\n                none;\r\n        }\r\n\r\n\r\n        @media (max-width: 767px) {\r\n\r\n            #osm-vazby-select-798089 {\r\n\r\n                width:\r\n                    100%;\r\n\r\n                min-width:\r\n                    0;\r\n\r\n                flex:\r\n                    1 1 100%;\r\n            }\r\n\r\n\r\n            #osm-vazby-stage-798089 {\r\n\r\n                height:\r\n                    80vh;\r\n\r\n                min-height:\r\n                    650px;\r\n            }\r\n\r\n\r\n            #osm-vazby-798089-toolbar {\r\n\r\n                margin-bottom:\r\n                    28px;\r\n            }\r\n        }\r\n\r\n    <\/style>\r\n\r\n\r\n    <div\r\n        id=\"osm-vazby-798089-wrap\"\r\n    >\r\n\r\n        <div\r\n            id=\"osm-vazby-798089-toolbar\"\r\n        >\r\n\r\n            <div\r\n                id=\"osm-vazby-798089-controls\"\r\n            >\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    id=\"osm-vazby-all-798089\"\r\n                >\r\n                    ALL RELATIONS                <\/button>\r\n\r\n\r\n                <select\r\n                    id=\"osm-vazby-select-798089\"\r\n                >\r\n\r\n                    <option value=\"\">\r\n                        SELECT AN INITIATIVE                    <\/option>\r\n\r\n                <\/select>\r\n\r\n            <\/div>\r\n\r\n            <div\r\n                id=\"osm-vazby-798089-legend\"\r\n                aria-label=\"Filtr vazeb\"\r\n            >\r\n\r\n                <span id=\"osm-vazby-798089-legend-title\">\r\n                    Relation type:                <\/span>\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"osm-vazby-filter\"\r\n                    data-relation-filter=\"membership\"\r\n                    aria-pressed=\"false\"\r\n                >\r\n                    <span\r\n                        class=\"osm-vazby-filter-sample membership\"\r\n                        aria-hidden=\"true\"\r\n                    >\r\n                        <span class=\"shaft\"><\/span>\r\n                        <span class=\"arrow right\"><\/span>\r\n                    <\/span>\r\n\r\n                    <span>\r\n                        Membership                    <\/span>\r\n                <\/button>\r\n\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"osm-vazby-filter\"\r\n                    data-relation-filter=\"cooperation\"\r\n                    aria-pressed=\"false\"\r\n                >\r\n                    <span\r\n                        class=\"osm-vazby-filter-sample cooperation\"\r\n                        aria-hidden=\"true\"\r\n                    >\r\n                        <span class=\"shaft\"><\/span>\r\n                        <span class=\"arrow left\"><\/span>\r\n                        <span class=\"arrow right\"><\/span>\r\n                    <\/span>\r\n\r\n                    <span>\r\n                        Cooperation                    <\/span>\r\n                <\/button>\r\n\r\n\r\n                <button\r\n                    type=\"button\"\r\n                    class=\"osm-vazby-filter is-active\"\r\n                    data-relation-filter=\"all\"\r\n                    aria-pressed=\"true\"\r\n                >\r\n                \r\n\t\t\t\t<span>\r\n                        All types                    <\/span>\r\n                <\/button>\r\n\r\n            <\/div>\r\n\r\n        <\/div>\r\n\r\n\r\n        <div\r\n            id=\"osm-vazby-stage-798089\"\r\n        >\r\n\r\n            <div\r\n                id=\"osm-vazby-798089\"\r\n            ><\/div>\r\n\r\n\r\n            <div\r\n                id=\"osm-vazby-labels-798089\"\r\n            ><\/div>\r\n\r\n\r\n            <div\r\n                id=\"osm-vazby-tooltip-798089\"\r\n            ><\/div>\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n\r\n    <script data-jetpack-boost=\"ignore\" data-jetpack-boost=\"ignore\"\r\n        src=\"https:\/\/unpkg.com\/cytoscape@3.30.2\/dist\/cytoscape.min.js\"\r\n    ><\/script>\r\n\r\n\r\n    <script data-jetpack-boost=\"ignore\" data-jetpack-boost=\"ignore\">\r\n\r\n    (function () {\r\n\r\n        function osmVazbyStart() {\r\n\r\n            if (\r\n                typeof cytoscape ===\r\n                'undefined'\r\n            ) {\r\n\r\n                setTimeout(\r\n                    osmVazbyStart,\r\n                    100\r\n                );\r\n\r\n                return;\r\n            }\r\n\r\n\r\n            const container =\r\n                document.getElementById(\r\n                    \"osm-vazby-798089\"                );\r\n\r\n\r\n            const stage =\r\n                document.getElementById(\r\n                    \"osm-vazby-stage-798089\"                );\r\n\r\n\r\n            const labelsLayer =\r\n                document.getElementById(\r\n                    \"osm-vazby-labels-798089\"                );\r\n\r\n\r\n            const tooltip =\r\n                document.getElementById(\r\n                    \"osm-vazby-tooltip-798089\"                );\r\n\r\n\r\n            const select =\r\n                document.getElementById(\r\n                    \"osm-vazby-select-798089\"                );\r\n\r\n\r\n            const allButton =\r\n                document.getElementById(\r\n                    \"osm-vazby-all-798089\"                );\r\n\r\n\r\n            const relationFilterButtons =\r\n                Array.from(\r\n                    document.querySelectorAll(\r\n                        '#osm-vazby-798089-legend [data-relation-filter]'\r\n                    )\r\n                );\r\n\r\n\r\n            if (\r\n                !container ||\r\n                !stage ||\r\n                !labelsLayer ||\r\n                !tooltip ||\r\n                !select ||\r\n                !allButton ||\r\n                !relationFilterButtons.length\r\n            ) {\r\n                return;\r\n            }\r\n\r\n\r\n            const originalData =\r\n                {\"nodes\":[{\"data\":{\"id\":\"30530\",\"label\":\"Algiz\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/algiz\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/Algiz.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27306\",\"label\":\"ALLIANCE of Indigenous Nations\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/alliance-of-indigenous-nations\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-8-scaled.png?fit=2560%2C2560\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27310\",\"label\":\"Anti-Imperial Block of Nations\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/anti-imperial-block-of-nations\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-9-scaled.png?fit=2560%2C2560\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"26412\",\"label\":\"Atesh\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/atesh\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/Hlavy-logo-9.png?fit=2000%2C2000\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"26414\",\"label\":\"Belgorod People\u2019s Republic\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/belgorod-peoples-republic\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-Prispevek-na-LinkedIn-4.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27313\",\"label\":\"Belarusian Volunteer Corps\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/belarusian-volunteer-corps\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-10.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"26430\",\"label\":\"Berdyansk Partisan Army\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/berdyansk-partisan-army\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-5-scaled.png?fit=2560%2C2560\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27427\",\"label\":\"Polar Bear\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/polar-bear\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/Znovu-20-3.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27428\",\"label\":\"BOAK\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/boak\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/05db8651-2820-49df-83e7-440e57697b81.png?fit=485%2C482\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27968\",\"label\":\"Pavel Kushnir\u2019s UAV\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/sfo-uav\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/fad67682-229a-498e-8200-3e28d55e275e.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27970\",\"label\":\"BYPOL\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/bypol\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/kartoteka-33.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27972\",\"label\":\"Chechen People\u2019s Army\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/chechen-peoples-army\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/kartoteka-38.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27978\",\"label\":\"Chechen Republic of Ichkeria\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/chechen-republic-of-ichkeria\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/kartoteka-45.webp?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27982\",\"label\":\"Chechen United Force\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/chechen-unified-force\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-30.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"25739\",\"label\":\"Black Spark\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/black-spark\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/cerna-jiskra.png?fit=640%2C640\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27986\",\"label\":\"Black Bridge\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/black-bridge\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/79ae6e1b-1781-402e-a729-471fa34e9352.png?fit=640%2C640\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34048\",\"label\":\"Dagestan National Center\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/dagestan-national-center\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/karta-34.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27997\",\"label\":\"Free Russia Forum\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/free-russia-forum\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-31.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28003\",\"label\":\"Free Nations of Post-Russia Forum\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/free-nations-of-post-russia-forum\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-34.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28005\",\"label\":\"Georgian National Legion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/georgian-national-legion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-35.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28008\",\"label\":\"ITER AD ORTUS\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/iter-ad-ortus\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/9d9d8f3b-e725-480c-8e41-a0dfa24e28b5.jpg?fit=320%2C320\\u0026quality=89\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"31518\",\"label\":\"United Transitional Cabinet of Belarus\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/united-transitional-cabinet-of-belarus\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-15.-7.-2026-17_03_20.png?fit=1024%2C1024\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"30541\",\"label\":\"We Are the Black Folk\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/we-are-the-black-folk\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/Jsme-cerny-lid.webp?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28011\",\"label\":\"Karelian Group \u201cNorth\u201d\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/karelian-group-north\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-37.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28013\",\"label\":\"Karelian National Movement\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/karelian-national-movement\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-38.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28001\",\"label\":\"Caucasian Legion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/caucasian-legion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-33.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27999\",\"label\":\"Caucasus Union\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/caucasus-union\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-32.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"25744\",\"label\":\"COALITION of Indigenous Nations\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/coalition-of-indigenous-nations\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/c263f1b9-abd9-4647-9aed-667727e33d43.jpeg?fit=640%2C640\\u0026quality=89\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28015\",\"label\":\"Crimean partisans\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/crimean-partisans\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/Znovu-20-2.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28016\",\"label\":\"Cuban Rebel Movement\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/cuban-rebel-movement\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-39.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28018\",\"label\":\"Cyber-partisans\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/cyber-partisans\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-40.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28020\",\"label\":\"Freedom of Russia Legion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/freedom-of-russia-legion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-41.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28024\",\"label\":\"People\u2019s Vanguard\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/peoples-vanguard\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/predvoj-3.png?fit=1485%2C1485\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28026\",\"label\":\"League of Free Nations\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/league-of-free-nations\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-44.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28028\",\"label\":\"National Republican Army\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/national-republican-army\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-45.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"31152\",\"label\":\"Nemtsov Bridge\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/nemtsov-bridge\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/KARTA.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34396\",\"label\":\"Civic Council\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/civic-council\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/kartoteka-53.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28022\",\"label\":\"Free Cossack Unit\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/free-cossack-unit\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-42.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"33977\",\"label\":\"Dzhokhar Dudayev Battalion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/dzhokhar-dudayev-battalion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/predvoj-27.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34138\",\"label\":\"Imam Shamil Battalion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/imam-shamil-battalion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/karta-37.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34135\",\"label\":\"CRIMEA Battalion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/crimea-battalion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/karta-38.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"33991\",\"label\":\"Sheikh Mansur Battalion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/sheikh-mansur-battalion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/predvoj-29.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"27493\",\"label\":\"Direct action\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/direct-action\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/Prima-akce.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"33753\",\"label\":\"Anti-war sick leave\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/anti-war-sick-leave\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/predvoj-10.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34045\",\"label\":\"Rospartizan\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/rospartizan\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/karta-33.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"31509\",\"label\":\"Russian Volunteer Corps\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/russian-volunteer-corps\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/KARTA-3.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"33934\",\"label\":\"SAKHA RESISTANCE\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/sakha-resistance\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/predvoj-14.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"32357\",\"label\":\"Seversky Krai\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/seversky-krai\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/KARTA-16.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34953\",\"label\":\"Siberian Battalion\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/siberian-battalion\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/kartoteka-73.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"31494\",\"label\":\"United Resistance Front\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/united-resistance-front\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/KARTA-2.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34399\",\"label\":\"Congress of People\u2019s Deputies\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/congress-of-peoples-deputies\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/kartoteka-55.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"25742\",\"label\":\"Skrepach\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/skrepach\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/FORUM-SVOBODNEHO-RUSKA-Prispevek-na-Instagramu-28.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"33804\",\"label\":\"Tactical Group Hatred\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/tactical-group-hatred\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/07\/KARTA-18.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28030\",\"label\":\"Hard sign\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/hard-sign\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/ChatGPT-Image-28.-5.-2026-11_28_32.png?fit=1024%2C1024\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"33490\",\"label\":\"Resistance Attack\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/resistance-attack\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/Znovu-20-5.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28062\",\"label\":\"Insurgency Bulletin\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/insurgency-bulletin\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/kartoteka-13.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28060\",\"label\":\"Voronezh Republic\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/voronezh-republic\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-52.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28057\",\"label\":\"Committee of the Bashkir National Movement Abroad\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/bashkir-national-political-centre\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/kartoteka-77.png?fit=1080%2C1080\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"34211\",\"label\":\"Committee for Independent Ingushetia\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/committee-for-independent-ingushetia\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-50.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28053\",\"label\":\"Vyvozhuk\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/vyvozhuk\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-49.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28051\",\"label\":\"Revolt of the Machines\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/revolt-of-the-machines\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-48.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28049\",\"label\":\"WAR BRIDGE\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/war-bridge\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-47.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28047\",\"label\":\"Stop the Wagons\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/stop-the-wagons\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/RUSOVE-KTERI-NEMLCI-1920-x-1080-px-3000-x-3000-px-46.png?fit=1500%2C1500\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}},{\"data\":{\"id\":\"28031\",\"label\":\"The Twenties Again\",\"url\":\"https:\/\/osmstatecnych.cz\/en\/iniciativy\/the-twenties-again\/\",\"logo\":\"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/05\/Znovu-20.png?fit=1200%2C1200\\u0026quality=80\\u0026ssl=1\",\"has_logo\":\"yes\"}}],\"edges\":[{\"data\":{\"id\":\"m-27306-25744\",\"source\":\"27306\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|27306\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-26414-25744\",\"source\":\"26414\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|26414\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27427-31494\",\"source\":\"27427\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"27427|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27968-31494\",\"source\":\"27968\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"27968|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27972-27978\",\"source\":\"27972\",\"target\":\"27978\",\"rel_type\":\"membership\",\"pair_key\":\"27972|27978\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27982-27306\",\"source\":\"27982\",\"target\":\"27306\",\"rel_type\":\"membership\",\"pair_key\":\"27306|27982\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27982-25744\",\"source\":\"27982\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|27982\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-25739-31494\",\"source\":\"25739\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"25739|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27986-31494\",\"source\":\"27986\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"27986|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28008-31494\",\"source\":\"28008\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"28008|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28011-28013\",\"source\":\"28011\",\"target\":\"28013\",\"rel_type\":\"membership\",\"pair_key\":\"28011|28013\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28011-31509\",\"source\":\"28011\",\"target\":\"31509\",\"rel_type\":\"membership\",\"pair_key\":\"28011|31509\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28013-25744\",\"source\":\"28013\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|28013\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28001-27999\",\"source\":\"28001\",\"target\":\"27999\",\"rel_type\":\"membership\",\"pair_key\":\"27999|28001\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27999-25744\",\"source\":\"27999\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|27999\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27999-27306\",\"source\":\"27999\",\"target\":\"27306\",\"rel_type\":\"membership\",\"pair_key\":\"27306|27999\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28016-31494\",\"source\":\"28016\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"28016|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28024-25744\",\"source\":\"28024\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|28024\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28022-28024\",\"source\":\"28022\",\"target\":\"28024\",\"rel_type\":\"membership\",\"pair_key\":\"28022|28024\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28022-31509\",\"source\":\"28022\",\"target\":\"31509\",\"rel_type\":\"membership\",\"pair_key\":\"28022|31509\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33977-27972\",\"source\":\"33977\",\"target\":\"27972\",\"rel_type\":\"membership\",\"pair_key\":\"27972|33977\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33977-27978\",\"source\":\"33977\",\"target\":\"27978\",\"rel_type\":\"membership\",\"pair_key\":\"27978|33977\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-34138-27999\",\"source\":\"34138\",\"target\":\"27999\",\"rel_type\":\"membership\",\"pair_key\":\"27999|34138\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33991-27972\",\"source\":\"33991\",\"target\":\"27972\",\"rel_type\":\"membership\",\"pair_key\":\"27972|33991\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33991-27978\",\"source\":\"33991\",\"target\":\"27978\",\"rel_type\":\"membership\",\"pair_key\":\"27978|33991\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-27493-25744\",\"source\":\"27493\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|27493\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33934-28026\",\"source\":\"33934\",\"target\":\"28026\",\"rel_type\":\"membership\",\"pair_key\":\"28026|33934\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-32357-31494\",\"source\":\"32357\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"31494|32357\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-32357-25744\",\"source\":\"32357\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|32357\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-34953-34396\",\"source\":\"34953\",\"target\":\"34396\",\"rel_type\":\"membership\",\"pair_key\":\"34396|34953\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-25742-25744\",\"source\":\"25742\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25742|25744\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-25742-31494\",\"source\":\"25742\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"25742|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33804-28024\",\"source\":\"33804\",\"target\":\"28024\",\"rel_type\":\"membership\",\"pair_key\":\"28024|33804\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33490-28016\",\"source\":\"33490\",\"target\":\"28016\",\"rel_type\":\"membership\",\"pair_key\":\"28016|33490\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-33490-31494\",\"source\":\"33490\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"31494|33490\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28062-25744\",\"source\":\"28062\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|28062\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28060-25744\",\"source\":\"28060\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|28060\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28057-25744\",\"source\":\"28057\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|28057\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28057-27306\",\"source\":\"28057\",\"target\":\"27306\",\"rel_type\":\"membership\",\"pair_key\":\"27306|28057\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28057-28026\",\"source\":\"28057\",\"target\":\"28026\",\"rel_type\":\"membership\",\"pair_key\":\"28026|28057\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28057-28003\",\"source\":\"28057\",\"target\":\"28003\",\"rel_type\":\"membership\",\"pair_key\":\"28003|28057\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-34211-28026\",\"source\":\"34211\",\"target\":\"28026\",\"rel_type\":\"membership\",\"pair_key\":\"28026|34211\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-34211-28003\",\"source\":\"34211\",\"target\":\"28003\",\"rel_type\":\"membership\",\"pair_key\":\"28003|34211\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28051-25744\",\"source\":\"28051\",\"target\":\"25744\",\"rel_type\":\"membership\",\"pair_key\":\"25744|28051\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28049-28020\",\"source\":\"28049\",\"target\":\"28020\",\"rel_type\":\"membership\",\"pair_key\":\"28020|28049\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28049-27986\",\"source\":\"28049\",\"target\":\"27986\",\"rel_type\":\"membership\",\"pair_key\":\"27986|28049\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"m-28031-31494\",\"source\":\"28031\",\"target\":\"31494\",\"rel_type\":\"membership\",\"pair_key\":\"28031|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27310-27982\",\"source\":\"27310\",\"target\":\"27982\",\"rel_type\":\"cooperation\",\"pair_key\":\"27310|27982\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27310-34211\",\"source\":\"27310\",\"target\":\"34211\",\"rel_type\":\"cooperation\",\"pair_key\":\"27310|34211\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-25744-27310\",\"source\":\"25744\",\"target\":\"27310\",\"rel_type\":\"cooperation\",\"pair_key\":\"25744|27310\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27310-33934\",\"source\":\"27310\",\"target\":\"33934\",\"rel_type\":\"cooperation\",\"pair_key\":\"27310|33934\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27310-28057\",\"source\":\"27310\",\"target\":\"28057\",\"rel_type\":\"cooperation\",\"pair_key\":\"27310|28057\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27310-34399\",\"source\":\"27310\",\"target\":\"34399\",\"rel_type\":\"cooperation\",\"pair_key\":\"27310|34399\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27970-31518\",\"source\":\"27970\",\"target\":\"31518\",\"rel_type\":\"cooperation\",\"pair_key\":\"27970|31518\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27972-27982\",\"source\":\"27972\",\"target\":\"27982\",\"rel_type\":\"cooperation\",\"pair_key\":\"27972|27982\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27978-27982\",\"source\":\"27978\",\"target\":\"27982\",\"rel_type\":\"cooperation\",\"pair_key\":\"27978|27982\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27982-28026\",\"source\":\"27982\",\"target\":\"28026\",\"rel_type\":\"cooperation\",\"pair_key\":\"27982|28026\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27982-28003\",\"source\":\"27982\",\"target\":\"28003\",\"rel_type\":\"cooperation\",\"pair_key\":\"27982|28003\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-34048-34138\",\"source\":\"34048\",\"target\":\"34138\",\"rel_type\":\"cooperation\",\"pair_key\":\"34048|34138\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-28003-34399\",\"source\":\"28003\",\"target\":\"34399\",\"rel_type\":\"cooperation\",\"pair_key\":\"28003|34399\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-27999-28020\",\"source\":\"27999\",\"target\":\"28020\",\"rel_type\":\"cooperation\",\"pair_key\":\"27999|28020\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-28020-34045\",\"source\":\"28020\",\"target\":\"34045\",\"rel_type\":\"cooperation\",\"pair_key\":\"28020|34045\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-28020-31494\",\"source\":\"28020\",\"target\":\"31494\",\"rel_type\":\"cooperation\",\"pair_key\":\"28020|31494\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-28020-34953\",\"source\":\"28020\",\"target\":\"34953\",\"rel_type\":\"cooperation\",\"pair_key\":\"28020|34953\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-28020-31509\",\"source\":\"28020\",\"target\":\"31509\",\"rel_type\":\"cooperation\",\"pair_key\":\"28020|31509\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-28028-34045\",\"source\":\"28028\",\"target\":\"34045\",\"rel_type\":\"cooperation\",\"pair_key\":\"28028|34045\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-33977-33991\",\"source\":\"33977\",\"target\":\"33991\",\"rel_type\":\"cooperation\",\"pair_key\":\"33977|33991\",\"parallel_pair\":\"no\"}},{\"data\":{\"id\":\"c-31509-34953\",\"source\":\"31509\",\"target\":\"34953\",\"rel_type\":\"cooperation\",\"pair_key\":\"31509|34953\",\"parallel_pair\":\"no\"}}]};\r\n\r\n\r\n            let cy =\r\n                null;\r\n\r\n\r\n            let singleMode =\r\n                false;\r\n\r\n\r\n            let currentCenterId =\r\n                null;\r\n\r\n\r\n            \/*\r\n             * FILTR TYPU VAZBY:\r\n             * all | membership | cooperation\r\n             *\/\r\n            let currentRelationFilter =\r\n                'all';\r\n\r\n\r\n\r\n            \/*\r\n             * =====================================================\r\n             * FILTR \/ KLIKAC\u00cd LEGENDA\r\n             * =====================================================\r\n             *\/\r\n\r\n            function updateRelationFilterUi() {\r\n\r\n                relationFilterButtons.forEach(\r\n                    function (button) {\r\n\r\n                        const isActive =\r\n                            button.dataset.relationFilter ===\r\n                            currentRelationFilter;\r\n\r\n\r\n                        button.classList.toggle(\r\n                            'is-active',\r\n                            isActive\r\n                        );\r\n\r\n\r\n                        button.setAttribute(\r\n                            'aria-pressed',\r\n                            isActive\r\n                                ? 'true'\r\n                                : 'false'\r\n                        );\r\n                    }\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function edgeMatchesRelationFilter(edge) {\r\n\r\n                if (\r\n                    currentRelationFilter ===\r\n                    'all'\r\n                ) {\r\n\r\n                    return true;\r\n                }\r\n\r\n\r\n                return (\r\n                    String(\r\n                        edge.data(\r\n                            'rel_type'\r\n                        )\r\n                    )\r\n                    ===\r\n                    currentRelationFilter\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function syncRelationFilteredNodes() {\r\n\r\n                if (!cy) {\r\n                    return;\r\n                }\r\n\r\n\r\n                cy.nodes()\r\n                    .removeClass(\r\n                        'relation-filtered'\r\n                    );\r\n\r\n\r\n                if (\r\n                    currentRelationFilter ===\r\n                    'all'\r\n                ) {\r\n\r\n                    return;\r\n                }\r\n\r\n\r\n                const activeNodeIds =\r\n                    new Set();\r\n\r\n\r\n                cy.edges().forEach(\r\n                    function (edge) {\r\n\r\n                        if (\r\n                            !edgeMatchesRelationFilter(\r\n                                edge\r\n                            )\r\n                        ) {\r\n\r\n                            return;\r\n                        }\r\n\r\n\r\n                        activeNodeIds.add(\r\n                            String(\r\n                                edge.data(\r\n                                    'source'\r\n                                )\r\n                            )\r\n                        );\r\n\r\n\r\n                        activeNodeIds.add(\r\n                            String(\r\n                                edge.data(\r\n                                    'target'\r\n                                )\r\n                            )\r\n                        );\r\n                    }\r\n                );\r\n\r\n\r\n                \/*\r\n                 * V detailu nech\u00e1me centrum v\u017edy pln\u011b viditeln\u00e9,\r\n                 * i kdyby pro zvolen\u00fd typ nem\u011blo \u017e\u00e1dnou vazbu.\r\n                 *\/\r\n                if (\r\n                    singleMode &&\r\n                    currentCenterId\r\n                ) {\r\n\r\n                    activeNodeIds.add(\r\n                        String(\r\n                            currentCenterId\r\n                        )\r\n                    );\r\n                }\r\n\r\n\r\n                cy.nodes().forEach(\r\n                    function (node) {\r\n\r\n                        if (\r\n                            !activeNodeIds.has(\r\n                                String(\r\n                                    node.id()\r\n                                )\r\n                            )\r\n                        ) {\r\n\r\n                            node.addClass(\r\n                                'relation-filtered'\r\n                            );\r\n                        }\r\n                    }\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function applyRelationFilter() {\r\n\r\n                if (!cy) {\r\n                    return;\r\n                }\r\n\r\n\r\n                cy.batch(\r\n                    function () {\r\n\r\n                        cy.edges().forEach(\r\n                            function (edge) {\r\n\r\n                                edge.style(\r\n                                    'display',\r\n                                    edgeMatchesRelationFilter(\r\n                                        edge\r\n                                    )\r\n                                        ? 'element'\r\n                                        : 'none'\r\n                                );\r\n                            }\r\n                        );\r\n\r\n\r\n                        cy.elements()\r\n                            .removeClass(\r\n                                'faded highlighted center-hover'\r\n                            );\r\n\r\n\r\n                        syncRelationFilteredNodes();\r\n                    }\r\n                );\r\n\r\n\r\n                hideTooltip();\r\n\r\n                updateRelationFilterUi();\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * POMOCN\u00c9 FUNKCE\r\n             *\/\r\n\r\n            function getNodeById(id) {\r\n\r\n                return originalData.nodes.find(\r\n                    function (node) {\r\n\r\n                        return (\r\n                            String(\r\n                                node.data.id\r\n                            )\r\n                            ===\r\n                            String(id)\r\n                        );\r\n                    }\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function getNeighbourIds(id) {\r\n\r\n                const ids =\r\n                    new Set();\r\n\r\n\r\n                const nodeId =\r\n                    String(id);\r\n\r\n\r\n                originalData.edges.forEach(\r\n                    function (edge) {\r\n\r\n                        const source =\r\n                            String(\r\n                                edge.data.source\r\n                            );\r\n\r\n\r\n                        const target =\r\n                            String(\r\n                                edge.data.target\r\n                            );\r\n\r\n\r\n                        if (\r\n                            source ===\r\n                            nodeId\r\n                        ) {\r\n\r\n                            ids.add(\r\n                                target\r\n                            );\r\n                        }\r\n\r\n\r\n                        if (\r\n                            target ===\r\n                            nodeId\r\n                        ) {\r\n\r\n                            ids.add(\r\n                                source\r\n                            );\r\n                        }\r\n                    }\r\n                );\r\n\r\n\r\n                return Array.from(\r\n                    ids\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function hasRelations(id) {\r\n\r\n                const nodeId =\r\n                    String(id);\r\n\r\n\r\n                return originalData.edges.some(\r\n                    function (edge) {\r\n\r\n                        return (\r\n                            String(\r\n                                edge.data.source\r\n                            ) === nodeId\r\n                            ||\r\n                            String(\r\n                                edge.data.target\r\n                            ) === nodeId\r\n                        );\r\n                    }\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function destroyGraph() {\r\n\r\n                labelsLayer.innerHTML =\r\n                    '';\r\n\r\n\r\n                tooltip.style.display =\r\n                    'none';\r\n\r\n\r\n                if (cy) {\r\n\r\n                    cy.destroy();\r\n\r\n                    cy = null;\r\n                }\r\n\r\n\r\n                container.innerHTML =\r\n                    '';\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * STYLY\r\n             *\/\r\n            function graphStyles(single) {\r\n\r\n                return [\r\n\r\n                    \/*\r\n                     * UZLY\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'node',\r\n\r\n                        style: {\r\n\r\n                            'shape':\r\n                                'rectangle',\r\n\r\n                            'background-color':\r\n                                '#ffffff',\r\n\r\n                            'label':\r\n                                '',\r\n\r\n                            'width':\r\n                                single\r\n                                    ? '104px'\r\n                                    : '82px',\r\n\r\n                            'height':\r\n                                single\r\n                                    ? '104px'\r\n                                    : '82px',\r\n\r\n                            'border-width':\r\n                                0\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * LOGA\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'node[has_logo = \"yes\"]',\r\n\r\n                        style: {\r\n\r\n                            'background-image':\r\n                                'data(logo)',\r\n\r\n                            'background-fit':\r\n                                'contain',\r\n\r\n                            'background-repeat':\r\n                                'no-repeat',\r\n\r\n                            'background-position-x':\r\n                                '50%',\r\n\r\n                            'background-position-y':\r\n                                '50%',\r\n\r\n                            'background-width':\r\n                                '88%',\r\n\r\n                            'background-height':\r\n                                '88%',\r\n\r\n                            'background-color':\r\n                                '#ffffff'\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * CENTRUM V KLIDU\r\n                     *\r\n                     * 160 \u00d7 160.\r\n                     * Bez r\u00e1me\u010dku.\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'node.osm-center',\r\n\r\n                        style: {\r\n\r\n                            'width':\r\n                                '118px',\r\n\r\n                            'height':\r\n                                '118px',\r\n\r\n                            'border-width':\r\n                                0\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * CENTRUM P\u0158I HOVERU\r\n                     *\r\n                     * D\u016eLE\u017dIT\u00c1 OPRAVA:\r\n                     *\r\n                     * Rozm\u011bry z\u016fst\u00e1vaj\u00ed STEJN\u00c9.\r\n                     *\r\n                     * D\u00edky tomu se hranice uzlu\r\n                     * neh\u00fdbe a nevznikne zp\u011btn\u00e1\r\n                     * vazba mouseover\/mouseout.\r\n                     *\r\n                     * Zm\u011bn\u00ed se pouze r\u00e1me\u010dek.\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'node.osm-center.center-hover',\r\n\r\n                        style: {\r\n\r\n                            'width':\r\n                                '118px',\r\n\r\n                            'height':\r\n                                '118px',\r\n\r\n                            'border-width':\r\n                                1,\r\n\r\n                            'border-color':\r\n                                '#1C4746',\r\n\r\n                            'background-color':\r\n                                '#ffffff'\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * \u010cLENSTV\u00cd \/ ZAST\u0158E\u0160EN\u00cd\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'edge[rel_type = \"membership\"]',\r\n\r\n                        style: {\r\n\r\n                            'width':\r\n                                single\r\n                                    ? 0.96\r\n                                    : 0.82,\r\n\r\n                            'line-color':\r\n                                '#A8B1B1',\r\n\r\n                            'source-arrow-shape':\r\n                                'none',\r\n\r\n                            'target-arrow-color':\r\n                                '#A8B1B1',\r\n\r\n                            'target-arrow-shape':\r\n                                'triangle',\r\n\r\n                            'arrow-scale':\r\n                                single\r\n                                    ? 0.76\r\n                                    : 0.66,\r\n\r\n                            'curve-style':\r\n                                'bezier',\r\n\r\n                            'opacity':\r\n                                0.96\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * SPOLUPR\u00c1CE \/ MEMORANDA\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'edge[rel_type = \"cooperation\"]',\r\n\r\n                        style: {\r\n\r\n                            'width':\r\n                                single\r\n                                    ? 1.00\r\n                                    : 0.86,\r\n\r\n                            'line-color':\r\n                                '#7B88D8',\r\n\r\n                            'source-arrow-color':\r\n                                '#7B88D8',\r\n\r\n                            'source-arrow-shape':\r\n                                'triangle',\r\n\r\n                            'target-arrow-color':\r\n                                '#7B88D8',\r\n\r\n                            'target-arrow-shape':\r\n                                'triangle',\r\n\r\n                            'arrow-scale':\r\n                                single\r\n                                    ? 0.78\r\n                                    : 0.68,\r\n\r\n                            'curve-style':\r\n                                'bezier',\r\n\r\n                            'opacity':\r\n                                0.76\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * Kdy\u017e mezi dv\u011bma uzly existuj\u00ed\r\n                     * dva typy vazeb, jemn\u011b je rozt\u00e1hneme\r\n                     * na dv\u011b paraleln\u00ed k\u0159ivky.\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'edge[parallel_pair = \"yes\"][rel_type = \"membership\"]',\r\n\r\n                        style: {\r\n\r\n                            'curve-style':\r\n                                'unbundled-bezier',\r\n\r\n                            'control-point-distances':\r\n                                18,\r\n\r\n                            'control-point-weights':\r\n                                0.5\r\n                        }\r\n                    },\r\n\r\n                    {\r\n                        selector:\r\n                            'edge[parallel_pair = \"yes\"][rel_type = \"cooperation\"]',\r\n\r\n                        style: {\r\n\r\n                            'curve-style':\r\n                                'unbundled-bezier',\r\n\r\n                            'control-point-distances':\r\n                                -18,\r\n\r\n                            'control-point-weights':\r\n                                0.5\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * OKOLN\u00cd UZEL P\u0158I HOVERU\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'node.highlighted',\r\n\r\n                        style: {\r\n\r\n                            'border-width':\r\n                                2,\r\n\r\n                            'border-color':\r\n                                '#1C4746'\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * \u010cLENSTV\u00cd P\u0158I HOVERU\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'edge.highlighted[rel_type = \"membership\"]',\r\n\r\n                        style: {\r\n\r\n                            'width':\r\n                                1.22,\r\n\r\n                            'line-color':\r\n                                '#8F9999',\r\n\r\n                            'target-arrow-color':\r\n                                '#8F9999',\r\n\r\n                            'opacity':\r\n                                0.86\r\n                        }\r\n                    },\r\n\r\n                    \/*\r\n                     * SPOLUPR\u00c1CE P\u0158I HOVERU\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'edge.highlighted[rel_type = \"cooperation\"]',\r\n\r\n                        style: {\r\n\r\n                            'width':\r\n                                1.28,\r\n\r\n                            'line-color':\r\n                                '#6676CF',\r\n\r\n                            'source-arrow-color':\r\n                                '#6676CF',\r\n\r\n                            'target-arrow-color':\r\n                                '#6676CF',\r\n\r\n                            'opacity':\r\n                                0.92\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * UZLY BEZ VAZBY V AKTU\u00c1LN\u00cdM FILTRU\r\n                     *\r\n                     * Nezmiz\u00ed, aby se graf nep\u0159eskakoval\r\n                     * a n\u00e1v\u0161t\u011bvn\u00edk neztratil orientaci.\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            'node.relation-filtered',\r\n\r\n                        style: {\r\n\r\n                            'opacity':\r\n                                0.18\r\n                        }\r\n                    },\r\n\r\n\r\n                    \/*\r\n                     * POHASL\u00c9 PRVKY\r\n                     *\/\r\n                    {\r\n                        selector:\r\n                            '.faded',\r\n\r\n                        style: {\r\n\r\n                            'opacity':\r\n                                0.12\r\n                        }\r\n                    }\r\n                ];\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * CENTR\u00c1LN\u00cd N\u00c1ZEV\r\n             *\/\r\n            function createCenterLabel() {\r\n\r\n                labelsLayer.innerHTML =\r\n                    '';\r\n\r\n\r\n                if (\r\n                    !singleMode ||\r\n                    !cy ||\r\n                    !currentCenterId\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const center =\r\n                    cy.getElementById(\r\n                        String(\r\n                            currentCenterId\r\n                        )\r\n                    );\r\n\r\n\r\n                if (\r\n                    !center ||\r\n                    center.empty()\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const link =\r\n                    document.createElement(\r\n                        'a'\r\n                    );\r\n\r\n\r\n                link.href =\r\n                    center.data(\r\n                        'url'\r\n                    );\r\n\r\n\r\n                link.textContent =\r\n                    String(\r\n                        center.data(\r\n                            'label'\r\n                        )\r\n                    ).toUpperCase();\r\n\r\n\r\n                link.dataset.nodeId =\r\n                    center.id();\r\n\r\n\r\n                \/*\r\n                 * Kliknut\u00ed na n\u00e1zev\r\n                 * vede norm\u00e1ln\u011b na kartu.\r\n                 *\/\r\n                link.addEventListener(\r\n                    'click',\r\n                    function (event) {\r\n\r\n                        event.stopPropagation();\r\n                    }\r\n                );\r\n\r\n\r\n                \/*\r\n                 * Hover n\u00e1zvu pou\u017e\u00edv\u00e1\r\n                 * stejn\u00e9 zv\u00fdrazn\u011bn\u00ed centra\r\n                 * jako hover loga.\r\n                 *\/\r\n                link.addEventListener(\r\n                    'mouseenter',\r\n                    function () {\r\n\r\n                        highlightCenter(\r\n                            center\r\n                        );\r\n                    }\r\n                );\r\n\r\n\r\n                link.addEventListener(\r\n                    'mouseleave',\r\n                    function () {\r\n\r\n                        clearHighlight();\r\n                    }\r\n                );\r\n\r\n\r\n                labelsLayer.appendChild(\r\n                    link\r\n                );\r\n\r\n\r\n                updateCenterLabel();\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * POZICE CENTR\u00c1LN\u00cdHO N\u00c1ZVU\r\n             *\r\n             * Proto\u017ee se centrum p\u0159i hoveru\r\n             * u\u017e fyzicky NEZV\u011aT\u0160UJE,\r\n             * tato pozice z\u016fst\u00e1v\u00e1 stabiln\u00ed.\r\n             *\/\r\n            function updateCenterLabel() {\r\n\r\n                if (\r\n                    !cy ||\r\n                    !singleMode ||\r\n                    !currentCenterId\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const link =\r\n                    labelsLayer.querySelector(\r\n                        'a[data-node-id]'\r\n                    );\r\n\r\n\r\n                if (!link) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const center =\r\n                    cy.getElementById(\r\n                        String(\r\n                            currentCenterId\r\n                        )\r\n                    );\r\n\r\n\r\n                if (\r\n                    !center ||\r\n                    center.empty()\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const pos =\r\n                    center.renderedPosition();\r\n\r\n\r\n                const height =\r\n                    center.renderedHeight();\r\n\r\n\r\n                link.style.left =\r\n                    pos.x + 'px';\r\n\r\n\r\n                link.style.top =\r\n                    (\r\n                        pos.y +\r\n                        height \/ 2 +\r\n                        14\r\n                    ) + 'px';\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * ZV\u00ddRAZN\u011aN\u00cd OKOLN\u00cdHO UZLU\r\n             *\/\r\n            function highlightNode(node) {\r\n\r\n                if (\r\n                    !cy ||\r\n                    !node ||\r\n                    node.empty()\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                if (\r\n                    node.hasClass(\r\n                        'relation-filtered'\r\n                    )\r\n                ) {\r\n\r\n                    return;\r\n                }\r\n\r\n\r\n                const activeEdges =\r\n                    node.connectedEdges()\r\n                        .filter(\r\n                            function (edge) {\r\n\r\n                                return edgeMatchesRelationFilter(\r\n                                    edge\r\n                                );\r\n                            }\r\n                        );\r\n\r\n\r\n                const relatedNodes =\r\n                    activeEdges.connectedNodes();\r\n\r\n\r\n                cy.elements()\r\n                    .addClass(\r\n                        'faded'\r\n                    );\r\n\r\n\r\n                node\r\n                    .removeClass(\r\n                        'faded'\r\n                    )\r\n                    .addClass(\r\n                        'highlighted'\r\n                    );\r\n\r\n\r\n                activeEdges\r\n                    .removeClass(\r\n                        'faded'\r\n                    )\r\n                    .addClass(\r\n                        'highlighted'\r\n                    );\r\n\r\n\r\n                relatedNodes\r\n                    .removeClass(\r\n                        'faded'\r\n                    );\r\n            }\r\n\r\n\r\n            \/*\r\n             * ZV\u00ddRAZN\u011aN\u00cd CENTRA\r\n             *\r\n             * Bez zm\u011bny rozm\u011bru.\r\n             *\/\r\n            function highlightCenter(node) {\r\n\r\n                if (\r\n                    !cy ||\r\n                    !node ||\r\n                    node.empty()\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const activeEdges =\r\n                    node.connectedEdges()\r\n                        .filter(\r\n                            function (edge) {\r\n\r\n                                return edgeMatchesRelationFilter(\r\n                                    edge\r\n                                );\r\n                            }\r\n                        );\r\n\r\n\r\n                const relatedNodes =\r\n                    activeEdges.connectedNodes();\r\n\r\n\r\n                cy.elements()\r\n                    .addClass(\r\n                        'faded'\r\n                    );\r\n\r\n\r\n                node\r\n                    .removeClass(\r\n                        'faded highlighted'\r\n                    )\r\n                    .addClass(\r\n                        'center-hover'\r\n                    );\r\n\r\n\r\n                activeEdges\r\n                    .removeClass(\r\n                        'faded'\r\n                    )\r\n                    .addClass(\r\n                        'highlighted'\r\n                    );\r\n\r\n\r\n                relatedNodes\r\n                    .removeClass(\r\n                        'faded'\r\n                    );\r\n            }\r\n\r\n\r\n            function clearHighlight() {\r\n\r\n                if (!cy) {\r\n                    return;\r\n                }\r\n\r\n\r\n                cy.elements()\r\n                    .removeClass(\r\n                        'faded highlighted center-hover'\r\n                    );\r\n\r\n\r\n                syncRelationFilteredNodes();\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * TOOLTIP\r\n             *\/\r\n            function showTooltip(node) {\r\n\r\n                if (\r\n                    !node ||\r\n                    node.empty()\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                tooltip.textContent =\r\n                    String(\r\n                        node.data(\r\n                            'label'\r\n                        )\r\n                    ).toUpperCase();\r\n\r\n\r\n                tooltip.style.display =\r\n                    'block';\r\n\r\n\r\n                updateTooltip(\r\n                    node\r\n                );\r\n            }\r\n\r\n\r\n\r\n            function updateTooltip(node) {\r\n\r\n                if (\r\n                    !node ||\r\n                    node.empty()\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const pos =\r\n                    node.renderedPosition();\r\n\r\n\r\n                const nodeWidth =\r\n                    node.renderedWidth();\r\n\r\n\r\n                const nodeHeight =\r\n                    node.renderedHeight();\r\n\r\n\r\n                \/*\r\n                 * TADY byl skute\u010dn\u00fd probl\u00e9m:\r\n                 *\r\n                 * Tento oran\u017eov\u00fd n\u00e1zev je TOOLTIP p\u0159i hoveru\r\n                 * v CEL\u00c9 S\u00cdTI, ne centr\u00e1ln\u00ed n\u00e1zev detailu.\r\n                 *\r\n                 * Proto ho zarovn\u00e1v\u00e1me podle polohy uzlu\r\n                 * v cel\u00e9 plo\u0161e grafu:\r\n                 *\r\n                 * vlevo  -> roste doprava\r\n                 * vpravo -> roste doleva\r\n                 * st\u0159ed  -> z\u016fst\u00e1v\u00e1 centrovan\u00fd\r\n                 *\r\n                 * Bez translateX(), tak\u017ee nem\u00e1 co ut\u00e9ct\r\n                 * mimo levou\/pravou hranu.\r\n                 *\/\r\n\r\n                tooltip.style.visibility =\r\n                    'hidden';\r\n\r\n\r\n                tooltip.style.display =\r\n                    'block';\r\n\r\n\r\n                tooltip.style.setProperty(\r\n                    'transform',\r\n                    'none',\r\n                    'important'\r\n                );\r\n\r\n\r\n                \/*\r\n                 * Skute\u010dn\u00e1 velikost boxu po vykreslen\u00ed.\r\n                 *\/\r\n                const tooltipWidth =\r\n                    tooltip.offsetWidth;\r\n\r\n\r\n                const tooltipHeight =\r\n                    tooltip.offsetHeight;\r\n\r\n\r\n                const stageWidth =\r\n                    stage.clientWidth;\r\n\r\n\r\n                const stageHeight =\r\n                    stage.clientHeight;\r\n\r\n\r\n                const edgeGap =\r\n                    12;\r\n\r\n\r\n                let tooltipLeft;\r\n\r\n\r\n                if (\r\n                    pos.x <\r\n                    stageWidth * 0.38\r\n                ) {\r\n\r\n                    \/*\r\n                     * Lev\u00e1 v\u00fdse\u010d:\r\n                     * lev\u00fd okraj boxu srovn\u00e1me\r\n                     * s lev\u00fdm okrajem loga.\r\n                     *\/\r\n                    tooltipLeft =\r\n                        pos.x -\r\n                        nodeWidth \/ 2;\r\n\r\n                } else if (\r\n                    pos.x >\r\n                    stageWidth * 0.62\r\n                ) {\r\n\r\n                    \/*\r\n                     * Prav\u00e1 v\u00fdse\u010d:\r\n                     * prav\u00fd okraj boxu srovn\u00e1me\r\n                     * s prav\u00fdm okrajem loga.\r\n                     *\/\r\n                    tooltipLeft =\r\n                        pos.x +\r\n                        nodeWidth \/ 2 -\r\n                        tooltipWidth;\r\n\r\n                } else {\r\n\r\n                    \/*\r\n                     * St\u0159ed:\r\n                     * klasick\u00e9 centrov\u00e1n\u00ed.\r\n                     *\/\r\n                    tooltipLeft =\r\n                        pos.x -\r\n                        tooltipWidth \/ 2;\r\n                }\r\n\r\n\r\n                \/*\r\n                 * Tvrd\u00e1 pojistka:\r\n                 * cel\u00fd n\u00e1zev mus\u00ed z\u016fstat uvnit\u0159 grafu.\r\n                 *\/\r\n                const maxLeft =\r\n                    Math.max(\r\n                        edgeGap,\r\n                        stageWidth -\r\n                        tooltipWidth -\r\n                        edgeGap\r\n                    );\r\n\r\n\r\n                tooltipLeft =\r\n                    Math.min(\r\n                        maxLeft,\r\n                        Math.max(\r\n                            edgeGap,\r\n                            tooltipLeft\r\n                        )\r\n                    );\r\n\r\n\r\n                \/*\r\n                 * Standardn\u011b pod logem.\r\n                 *\/\r\n                let tooltipTop =\r\n                    pos.y +\r\n                    nodeHeight \/ 2 +\r\n                    10;\r\n\r\n\r\n                \/*\r\n                 * Kdyby dole nebylo m\u00edsto,\r\n                 * zobraz\u00edme n\u00e1zev nad logem.\r\n                 *\/\r\n                if (\r\n                    tooltipTop +\r\n                    tooltipHeight >\r\n                    stageHeight -\r\n                    edgeGap\r\n                ) {\r\n\r\n                    tooltipTop =\r\n                        pos.y -\r\n                        nodeHeight \/ 2 -\r\n                        tooltipHeight -\r\n                        10;\r\n                }\r\n\r\n\r\n                tooltipTop =\r\n                    Math.max(\r\n                        edgeGap,\r\n                        Math.min(\r\n                            stageHeight -\r\n                            tooltipHeight -\r\n                            edgeGap,\r\n                            tooltipTop\r\n                        )\r\n                    );\r\n\r\n\r\n                tooltip.style.left =\r\n                    tooltipLeft +\r\n                    'px';\r\n\r\n\r\n                tooltip.style.top =\r\n                    tooltipTop +\r\n                    'px';\r\n\r\n\r\n                tooltip.style.visibility =\r\n                    'visible';\r\n            }\r\n\r\n\r\n\r\n            function hideTooltip() {\r\n\r\n                tooltip.style.display =\r\n                    'none';\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * DETAIL P\u0158ED O\u010cI\r\n             *\/\r\n            function bringGraphIntoView() {\r\n\r\n                const rect =\r\n                    toolbar.getBoundingClientRect();\r\n\r\n\r\n                const targetY =\r\n                    window.pageYOffset +\r\n                    rect.top -\r\n                    16;\r\n\r\n\r\n                window.scrollTo({\r\n\r\n                    top:\r\n                        Math.max(\r\n                            0,\r\n                            targetY\r\n                        ),\r\n\r\n                    behavior:\r\n                        'smooth'\r\n                });\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * UD\u00c1LOSTI\r\n             *\/\r\n            function bindGraphEvents() {\r\n\r\n                \/*\r\n                 * KLIK NA LOGO\r\n                 *\/\r\n                cy.on(\r\n                    'tap',\r\n                    'node',\r\n                    function (evt) {\r\n\r\n                        const node =\r\n                            evt.target;\r\n\r\n\r\n                        const nodeId =\r\n                            String(\r\n                                node.id()\r\n                            );\r\n\r\n\r\n                        \/*\r\n                         * CENTR\u00c1LN\u00cd LOGO\r\n                         * V DETAILU -> KARTA\r\n                         *\/\r\n                        if (\r\n                            singleMode &&\r\n                            nodeId ===\r\n                            String(\r\n                                currentCenterId\r\n                            )\r\n                        ) {\r\n\r\n                            const url =\r\n                                node.data(\r\n                                    'url'\r\n                                );\r\n\r\n\r\n                            if (url) {\r\n\r\n                                window.location.href =\r\n                                    url;\r\n                            }\r\n\r\n\r\n                            return;\r\n                        }\r\n\r\n\r\n                        \/*\r\n                         * OSTATN\u00cd UZLY ->\r\n                         * JEJICH VLASTN\u00cd S\u00cd\u0164\r\n                         *\/\r\n                        showSingle(\r\n                            nodeId\r\n                        );\r\n                    }\r\n                );\r\n\r\n\r\n                \/*\r\n                 * HOVER\r\n                 *\/\r\n                cy.on(\r\n                    'mouseover',\r\n                    'node',\r\n                    function (evt) {\r\n\r\n                        container.style.cursor =\r\n                            'pointer';\r\n\r\n\r\n                        const node =\r\n                            evt.target;\r\n\r\n\r\n                        if (\r\n                            node.hasClass(\r\n                                'relation-filtered'\r\n                            )\r\n                        ) {\r\n\r\n                            container.style.cursor =\r\n                                'default';\r\n\r\n                            hideTooltip();\r\n\r\n                            return;\r\n                        }\r\n\r\n\r\n                        const nodeId =\r\n                            String(\r\n                                node.id()\r\n                            );\r\n\r\n\r\n                        \/*\r\n                         * CENTRUM\r\n                         *\/\r\n                        if (\r\n                            singleMode &&\r\n                            nodeId ===\r\n                            String(\r\n                                currentCenterId\r\n                            )\r\n                        ) {\r\n\r\n                            highlightCenter(\r\n                                node\r\n                            );\r\n\r\n\r\n                        } else {\r\n\r\n                            \/*\r\n                             * OKOLN\u00cd UZEL\r\n                             *\/\r\n                            highlightNode(\r\n                                node\r\n                            );\r\n\r\n\r\n                            showTooltip(\r\n                                node\r\n                            );\r\n                        }\r\n                    }\r\n                );\r\n\r\n\r\n                cy.on(\r\n                    'mouseout',\r\n                    'node',\r\n                    function () {\r\n\r\n                        container.style.cursor =\r\n                            'default';\r\n\r\n\r\n                        clearHighlight();\r\n\r\n                        hideTooltip();\r\n                    }\r\n                );\r\n\r\n\r\n                \/*\r\n                 * N\u00e1zev se h\u00fdbe jen\r\n                 * p\u0159i skute\u010dn\u00e9m pan\/zoom\/position,\r\n                 * ne kv\u016fli hover zm\u011bn\u011b velikosti,\r\n                 * proto\u017ee tu jsme odstranili.\r\n                 *\/\r\n                cy.on(\r\n                    'render pan zoom position',\r\n                    function () {\r\n\r\n                        updateCenterLabel();\r\n                    }\r\n                );\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * =====================================================\r\n             * CELKOV\u00c1 S\u00cd\u0164\r\n             * =====================================================\r\n             *\/\r\n            function showAllRelations() {\r\n\r\n                destroyGraph();\r\n\r\n\r\n                singleMode =\r\n                    false;\r\n\r\n\r\n                currentCenterId =\r\n                    null;\r\n\r\n\r\n                select.value =\r\n                    '';\r\n\r\n\r\n                const connectedNodes =\r\n                    originalData.nodes.filter(\r\n                        function (node) {\r\n\r\n                            return hasRelations(\r\n                                node.data.id\r\n                            );\r\n                        }\r\n                    );\r\n\r\n\r\n                const connectedIds =\r\n                    new Set(\r\n                        connectedNodes.map(\r\n                            function (node) {\r\n\r\n                                return String(\r\n                                    node.data.id\r\n                                );\r\n                            }\r\n                        )\r\n                    );\r\n\r\n\r\n                const connectedEdges =\r\n                    originalData.edges.filter(\r\n                        function (edge) {\r\n\r\n                            return (\r\n                                connectedIds.has(\r\n                                    String(\r\n                                        edge.data.source\r\n                                    )\r\n                                )\r\n                                &&\r\n                                connectedIds.has(\r\n                                    String(\r\n                                        edge.data.target\r\n                                    )\r\n                                )\r\n                            );\r\n                        }\r\n                    );\r\n\r\n\r\n                const elements =\r\n                    connectedNodes.concat(\r\n                        connectedEdges\r\n                    );\r\n\r\n\r\n                cy = cytoscape({\r\n\r\n                    container:\r\n                        container,\r\n\r\n                    elements:\r\n                        elements,\r\n\r\n                    style:\r\n                        graphStyles(\r\n                            false\r\n                        ),\r\n\r\n                    layout: {\r\n\r\n                        \/*\r\n                         * GRID:\r\n                         *\r\n                         * Pravideln\u00e1 m\u0159\u00ed\u017eka.\r\n                         * Nejv\u00edce propojen\u00e9 iniciativy \u0159ad\u00edme jako prvn\u00ed,\r\n                         * p\u0159i shod\u011b podle n\u00e1zvu, aby byl v\u00fdsledek stabiln\u00ed\r\n                         * a z\u00e1rove\u0148 trochu informa\u010dn\u00ed.\r\n                         *\/\r\n                        name:\r\n                            'grid',\r\n\r\n                        animate:\r\n                            false,\r\n\r\n                        fit:\r\n                            true,\r\n\r\n                        padding:\r\n                            36,\r\n\r\n                        avoidOverlap:\r\n                            true,\r\n\r\n                        avoidOverlapPadding:\r\n                            46,\r\n\r\n                        nodeDimensionsIncludeLabels:\r\n                            false,\r\n\r\n                        condense:\r\n                            true,\r\n\r\n                        spacingFactor:\r\n                            1.32,\r\n\r\n                        sort:\r\n                            function (a, b) {\r\n\r\n                                const degreeDiff =\r\n                                    b.degree() -\r\n                                    a.degree();\r\n\r\n\r\n                                if (\r\n                                    degreeDiff !== 0\r\n                                ) {\r\n\r\n                                    return degreeDiff;\r\n                                }\r\n\r\n\r\n                                return String(\r\n                                    a.data('label')\r\n                                ).localeCompare(\r\n                                    String(\r\n                                        b.data('label')\r\n                                    ),\r\n                                    undefined,\r\n                                    {\r\n                                        sensitivity:\r\n                                            'base'\r\n                                    }\r\n                                );\r\n                            }\r\n                    },\r\n\r\n                    minZoom:\r\n                        0.15,\r\n\r\n                    maxZoom:\r\n                        4,\r\n\r\n                    wheelSensitivity:\r\n                        0.25\r\n                });\r\n\r\n\r\n                bindGraphEvents();\r\n\r\n\r\n                applyRelationFilter();\r\n\r\n\r\n                labelsLayer.innerHTML =\r\n                    '';\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * =====================================================\r\n             * DETAIL JEDN\u00c9 INICIATIVY\r\n             * =====================================================\r\n             *\/\r\n            function showSingle(nodeId) {\r\n\r\n                const centerData =\r\n                    getNodeById(\r\n                        nodeId\r\n                    );\r\n\r\n\r\n                if (!centerData) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const neighbourIds =\r\n                    getNeighbourIds(\r\n                        nodeId\r\n                    );\r\n\r\n\r\n                if (\r\n                    !neighbourIds.length\r\n                ) {\r\n                    return;\r\n                }\r\n\r\n\r\n                const allowedIds =\r\n                    new Set(\r\n                        [\r\n                            String(nodeId),\r\n\r\n                            ...neighbourIds.map(\r\n                                String\r\n                            )\r\n                        ]\r\n                    );\r\n\r\n\r\n                const selectedNodes =\r\n                    originalData.nodes\r\n                        .filter(\r\n                            function (node) {\r\n\r\n                                return allowedIds.has(\r\n                                    String(\r\n                                        node.data.id\r\n                                    )\r\n                                );\r\n                            }\r\n                        )\r\n                        .map(\r\n                            function (node) {\r\n\r\n                                return {\r\n\r\n                                    data:\r\n                                        Object.assign(\r\n                                            {},\r\n                                            node.data\r\n                                        ),\r\n\r\n                                    classes:\r\n                                        String(\r\n                                            node.data.id\r\n                                        ) ===\r\n                                        String(nodeId)\r\n\r\n                                            ? 'osm-center'\r\n                                            : ''\r\n                                };\r\n                            }\r\n                        );\r\n\r\n\r\n                const selectedEdges =\r\n                    originalData.edges.filter(\r\n                        function (edge) {\r\n\r\n                            return (\r\n                                allowedIds.has(\r\n                                    String(\r\n                                        edge.data.source\r\n                                    )\r\n                                )\r\n                                &&\r\n                                allowedIds.has(\r\n                                    String(\r\n                                        edge.data.target\r\n                                    )\r\n                                )\r\n                            );\r\n                        }\r\n                    );\r\n\r\n\r\n                const elements =\r\n                    selectedNodes.concat(\r\n                        selectedEdges\r\n                    );\r\n\r\n\r\n                destroyGraph();\r\n\r\n\r\n                singleMode =\r\n                    true;\r\n\r\n\r\n                currentCenterId =\r\n                    String(nodeId);\r\n\r\n\r\n                select.value =\r\n                    String(nodeId);\r\n\r\n\r\n                const relationCount =\r\n                    neighbourIds.length;\r\n\r\n\r\n                \/*\r\n                 * VELK\u00dd PAVOUK\r\n                 *\/\r\n                let layoutOptions = {\r\n\r\n                    name:\r\n                        'cose',\r\n\r\n                    animate:\r\n                        false,\r\n\r\n                    fit:\r\n                        true,\r\n\r\n                    padding:\r\n                        190,\r\n\r\n                    nodeRepulsion:\r\n                        30000,\r\n\r\n                    idealEdgeLength:\r\n                        255,\r\n\r\n                    edgeElasticity:\r\n                        78,\r\n\r\n                    nestingFactor:\r\n                        1.2,\r\n\r\n                    gravity:\r\n                        0.58,\r\n\r\n                    numIter:\r\n                        1400,\r\n\r\n                    initialTemp:\r\n                        180,\r\n\r\n                    coolingFactor:\r\n                        0.95,\r\n\r\n                    minTemp:\r\n                        1\r\n                };\r\n\r\n\r\n                \/*\r\n                 * Bez zvl\u00e1\u0161tn\u00edho re\u017eimu pro 1\u20132 vazby:\r\n                 * detail se te\u010f dr\u017e\u00ed jednoho konzistentn\u00edho\r\n                 * m\u011b\u0159\u00edtka pro v\u0161echny iniciativy.\r\n                 *\/\r\n\r\n\r\n                cy = cytoscape({\r\n\r\n                    container:\r\n                        container,\r\n\r\n                    elements:\r\n                        elements,\r\n\r\n                    style:\r\n                        graphStyles(\r\n                            true\r\n                        ),\r\n\r\n                    layout:\r\n                        layoutOptions,\r\n\r\n                    minZoom:\r\n                        0.2,\r\n\r\n                    maxZoom:\r\n                        4,\r\n\r\n                    wheelSensitivity:\r\n                        0.25\r\n                });\r\n\r\n\r\n                bindGraphEvents();\r\n\r\n\r\n                applyRelationFilter();\r\n\r\n\r\n                createCenterLabel();\r\n\r\n\r\n                updateCenterLabel();\r\n\r\n\r\n                setTimeout(\r\n                    function () {\r\n\r\n                        bringGraphIntoView();\r\n\r\n                    },\r\n                    80\r\n                );\r\n            }\r\n\r\n\r\n\r\n            \/*\r\n             * =====================================================\r\n             * DROPDOWN\r\n             * =====================================================\r\n             *\/\r\n\r\n            const selectableNodes =\r\n                originalData.nodes\r\n                    .filter(\r\n                        function (node) {\r\n\r\n                            return hasRelations(\r\n                                node.data.id\r\n                            );\r\n                        }\r\n                    )\r\n                    .sort(\r\n                        function (a, b) {\r\n\r\n                            return a.data.label\r\n                                .localeCompare(\r\n                                    b.data.label,\r\n                                    undefined,\r\n                                    {\r\n                                        sensitivity:\r\n                                            'base'\r\n                                    }\r\n                                );\r\n                        }\r\n                    );\r\n\r\n\r\n            selectableNodes.forEach(\r\n                function (node) {\r\n\r\n                    const option =\r\n                        document.createElement(\r\n                            'option'\r\n                        );\r\n\r\n\r\n                    option.value =\r\n                        node.data.id;\r\n\r\n\r\n                    option.textContent =\r\n                        String(\r\n                            node.data.label\r\n                        ).toUpperCase();\r\n\r\n\r\n                    select.appendChild(\r\n                        option\r\n                    );\r\n                }\r\n            );\r\n\r\n\r\n\r\n            relationFilterButtons.forEach(\r\n                function (button) {\r\n\r\n                    button.addEventListener(\r\n                        'click',\r\n                        function () {\r\n\r\n                            const requestedFilter =\r\n                                this.dataset.relationFilter;\r\n\r\n\r\n                            if (\r\n                                ![\r\n                                    'all',\r\n                                    'membership',\r\n                                    'cooperation'\r\n                                ].includes(\r\n                                    requestedFilter\r\n                                )\r\n                            ) {\r\n\r\n                                return;\r\n                            }\r\n\r\n\r\n                            currentRelationFilter =\r\n                                requestedFilter;\r\n\r\n\r\n                            applyRelationFilter();\r\n                        }\r\n                    );\r\n                }\r\n            );\r\n\r\n\r\n\r\n            select.addEventListener(\r\n                'change',\r\n                function () {\r\n\r\n                    const id =\r\n                        this.value;\r\n\r\n\r\n                    if (!id) {\r\n\r\n                        showAllRelations();\r\n\r\n                        return;\r\n                    }\r\n\r\n\r\n                    showSingle(\r\n                        id\r\n                    );\r\n                }\r\n            );\r\n\r\n\r\n\r\n            allButton.addEventListener(\r\n                'click',\r\n                function () {\r\n\r\n                    showAllRelations();\r\n                }\r\n            );\r\n\r\n\r\n\r\n            \/*\r\n             * START\r\n             *\/\r\n            showAllRelations();\r\n\r\n        }\r\n\r\n\r\n\r\n        if (\r\n            document.readyState ===\r\n            'loading'\r\n        ) {\r\n\r\n            document.addEventListener(\r\n                'DOMContentLoaded',\r\n                osmVazbyStart\r\n            );\r\n\r\n        } else {\r\n\r\n            osmVazbyStart();\r\n        }\r\n\r\n    })();\r\n\r\n    <\/script>\r\n\r\n    \t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-36f54cf4 e-flex e-con-boxed e-con e-parent\" data-id=\"36f54cf4\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-232d29b0 elementor-invisible elementor-widget elementor-widget-heading\" data-id=\"232d29b0\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;,&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">BE PART OF THE RESISTANCE MOVEMENT<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-8a9afdf elementor-align-center elementor-widget__width-initial elementor-invisible elementor-widget elementor-widget-button\" data-id=\"8a9afdf\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;zoomIn&quot;,&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/donate.stripe.com\/14keVk8phcEjb2E8wP\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">DONATE<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-6a66dcf1 elementor-cta--skin-cover elementor-cta--valign-bottom elementor-widget__width-inherit elementor-animated-content elementor-bg-transform elementor-bg-transform-zoom-in elementor-widget elementor-widget-call-to-action\" data-id=\"6a66dcf1\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"call-to-action.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<a class=\"elementor-cta\" href=\"https:\/\/www.startovac.cz\/projekty\/rusove-kteri-nemlci-patron\" target=\"_blank\">\n\t\t\t\t\t<div class=\"elementor-cta__bg-wrapper\">\n\t\t\t\t<div class=\"elementor-cta__bg elementor-bg\" style=\"background-image: url(https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/06\/hlava-fundraiser.png?fit=2553%2C834&#038;quality=80&#038;ssl=1);\" role=\"img\" aria-label=\"head fundraiser\"><\/div>\n\t\t\t\t<div class=\"elementor-cta__bg-overlay\"><\/div>\n\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-cta__content\">\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-cta__button-wrapper elementor-cta__content-item elementor-content-item elementor-animated-item--grow\">\n\t\t\t\t\t<span class=\"elementor-cta__button elementor-button elementor-size-\">\n\t\t\t\t\t\tBECOME A PATRON\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-ribbon elementor-ribbon-right\">\n\t\t\t\t<div class=\"elementor-ribbon-inner\">\n\t\t\t\t\tSTARTOVA\u010c\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t<\/a>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-500d96ba e-flex e-con-boxed e-con e-parent\" data-id=\"500d96ba\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-56b5a9b6 elementor-widget elementor-widget-spacer\" data-id=\"56b5a9b6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div data-ka-cursor-size=\"1\" class=\"elementor-element elementor-element-4eba20d6 elementor-widget elementor-widget-text-editor\" data-id=\"4eba20d6\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;kng_cursor_interaction&quot;:&quot;default&quot;,&quot;kng_cursor_magnetic&quot;:&quot;none&quot;,&quot;kng_cursor_size_multiplier&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]}}\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><strong><span>\u00a9 <\/span><\/strong><strong>MAGNIFICENT EIGHT <\/strong>2022 &#8211; 2026<\/p>\t\t\t\t\t\t\t\t<\/div>\n\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":"<p>RELATIONS BE PART OF THE RESISTANCE MOVEMENT DONATE BECOME A PATRON STARTOVA\u010c \u00a9 MAGNIFICENT EIGHT 2022 &#8211; 2026<\/p>\n","protected":false},"author":1,"featured_media":35575,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"_acf_changed":false,"ocean_front_end_style_editor":"no","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","omw_enable_modal_window":"enable","footnotes":""},"class_list":["post-35574","page","type-page","status-publish","has-post-thumbnail","hentry","entry","has-media"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>RELATIONS - OSM STATE\u010cN\u00ddCH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/osmstatecnych.cz\/en\/relations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RELATIONS - OSM STATE\u010cN\u00ddCH\" \/>\n<meta property=\"og:description\" content=\"RELATIONS BE PART OF THE RESISTANCE MOVEMENT DONATE BECOME A PATRON STARTOVA\u010c \u00a9 MAGNIFICENT EIGHT 2022 &#8211; 2026\" \/>\n<meta property=\"og:url\" content=\"https:\/\/osmstatecnych.cz\/en\/relations\/\" \/>\n<meta property=\"og:site_name\" content=\"OSM STATE\u010cN\u00ddCH\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-17T22:17:46+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/vazby.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/\",\"url\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/\",\"name\":\"RELATIONS - OSM STATE\u010cN\u00ddCH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/osmstatecnych.cz\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/vazby.png?fit=1536%2C1024&quality=80&ssl=1\",\"datePublished\":\"2026-08-16T17:53:28+00:00\",\"dateModified\":\"2026-08-17T22:17:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/osmstatecnych.cz\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/vazby.png?fit=1536%2C1024&quality=80&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/osmstatecnych.cz\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/vazby.png?fit=1536%2C1024&quality=80&ssl=1\",\"width\":1536,\"height\":1024},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/relations\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Dom\u016f\",\"item\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/magnificent-eight\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RELATIONS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/\",\"name\":\"OSM \u221e STATE\u010cN\u00ddCH\",\"description\":\"monitoring hnut\u00ed odporu proti rusk\u00e9mu re\u017eimu\",\"publisher\":{\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/#\\\/schema\\\/person\\\/22b295a49f97c1c5adc48db20fb99403\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/osmstatecnych.cz\\\/en\\\/#\\\/schema\\\/person\\\/22b295a49f97c1c5adc48db20fb99403\",\"name\":\"Anna Valentov\u00e1\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g\",\"caption\":\"Anna Valentov\u00e1\"},\"logo\":{\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g\"},\"description\":\"Narozena 1968. Pra\u017e\u00e1k v jizerskohorsk\u00e9m exilu. Vlastn\u011b po\u0159\u00e1d p\u0159ekl\u00e1d\u00e1m. Jako tlumo\u010dn\u00edk mezi z\u00fa\u010dastn\u011bn\u00fdmi stranami a rozpl\u00e9ta\u010d zapleten\u00e9ho kdysi v terapii... Taky kdy\u017e se d\u00e1 p\u0159elo\u017eit n\u011bco kr\u00e1sn\u00e9ho nebo d\u016fle\u017eit\u00e9ho - aby o tom v\u011bd\u011blo v\u00edc lid\u00ed. No - a te\u010f je v\u00e1lka. A najednou je to v\u0161echno t\u0159eba. Snad to aspo\u0148 kouskem p\u0159isp\u011bje...\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"RELATIONS - OSM STATE\u010cN\u00ddCH","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/osmstatecnych.cz\/en\/relations\/","og_locale":"en_US","og_type":"article","og_title":"RELATIONS - OSM STATE\u010cN\u00ddCH","og_description":"RELATIONS BE PART OF THE RESISTANCE MOVEMENT DONATE BECOME A PATRON STARTOVA\u010c \u00a9 MAGNIFICENT EIGHT 2022 &#8211; 2026","og_url":"https:\/\/osmstatecnych.cz\/en\/relations\/","og_site_name":"OSM STATE\u010cN\u00ddCH","article_modified_time":"2026-08-17T22:17:46+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/vazby.png","type":"image\/png"}],"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/osmstatecnych.cz\/en\/relations\/","url":"https:\/\/osmstatecnych.cz\/en\/relations\/","name":"RELATIONS - OSM STATE\u010cN\u00ddCH","isPartOf":{"@id":"https:\/\/osmstatecnych.cz\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/osmstatecnych.cz\/en\/relations\/#primaryimage"},"image":{"@id":"https:\/\/osmstatecnych.cz\/en\/relations\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/vazby.png?fit=1536%2C1024&quality=80&ssl=1","datePublished":"2026-08-16T17:53:28+00:00","dateModified":"2026-08-17T22:17:46+00:00","breadcrumb":{"@id":"https:\/\/osmstatecnych.cz\/en\/relations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/osmstatecnych.cz\/en\/relations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/osmstatecnych.cz\/en\/relations\/#primaryimage","url":"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/vazby.png?fit=1536%2C1024&quality=80&ssl=1","contentUrl":"https:\/\/i0.wp.com\/osmstatecnych.cz\/wp-content\/uploads\/2026\/08\/vazby.png?fit=1536%2C1024&quality=80&ssl=1","width":1536,"height":1024},{"@type":"BreadcrumbList","@id":"https:\/\/osmstatecnych.cz\/en\/relations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Dom\u016f","item":"https:\/\/osmstatecnych.cz\/en\/magnificent-eight\/"},{"@type":"ListItem","position":2,"name":"RELATIONS"}]},{"@type":"WebSite","@id":"https:\/\/osmstatecnych.cz\/en\/#website","url":"https:\/\/osmstatecnych.cz\/en\/","name":"OSM \u221e STATE\u010cN\u00ddCH","description":"monitoring hnut\u00ed odporu proti rusk\u00e9mu re\u017eimu","publisher":{"@id":"https:\/\/osmstatecnych.cz\/en\/#\/schema\/person\/22b295a49f97c1c5adc48db20fb99403"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/osmstatecnych.cz\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/osmstatecnych.cz\/en\/#\/schema\/person\/22b295a49f97c1c5adc48db20fb99403","name":"Anna Valentov\u00e1","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g","caption":"Anna Valentov\u00e1"},"logo":{"@id":"https:\/\/secure.gravatar.com\/avatar\/87b561c64f624990122c0bf4b0170aaf0d549538d69db5aeecbca3abcfd7d3f4?s=96&d=mm&r=g"},"description":"Narozena 1968. Pra\u017e\u00e1k v jizerskohorsk\u00e9m exilu. Vlastn\u011b po\u0159\u00e1d p\u0159ekl\u00e1d\u00e1m. Jako tlumo\u010dn\u00edk mezi z\u00fa\u010dastn\u011bn\u00fdmi stranami a rozpl\u00e9ta\u010d zapleten\u00e9ho kdysi v terapii... Taky kdy\u017e se d\u00e1 p\u0159elo\u017eit n\u011bco kr\u00e1sn\u00e9ho nebo d\u016fle\u017eit\u00e9ho - aby o tom v\u011bd\u011blo v\u00edc lid\u00ed. No - a te\u010f je v\u00e1lka. A najednou je to v\u0161echno t\u0159eba. Snad to aspo\u0148 kouskem p\u0159isp\u011bje..."}]}},"jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/pages\/35574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/comments?post=35574"}],"version-history":[{"count":12,"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/pages\/35574\/revisions"}],"predecessor-version":[{"id":35684,"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/pages\/35574\/revisions\/35684"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/media\/35575"}],"wp:attachment":[{"href":"https:\/\/osmstatecnych.cz\/en\/wp-json\/wp\/v2\/media?parent=35574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}