{"id":19433,"date":"2025-04-29T01:26:34","date_gmt":"2025-04-29T01:26:34","guid":{"rendered":"https:\/\/hubsteel.casethemes.net\/?page_id=19433"},"modified":"2026-05-16T18:19:44","modified_gmt":"2026-05-16T13:19:44","slug":"home","status":"publish","type":"page","link":"https:\/\/feznavoi.uz\/ru\/","title":{"rendered":"Bosh Sahifa"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"19433\" class=\"elementor elementor-19433\">\n\t\t\t\t<div class=\"elementor-element elementor-element-76e8983 e-con-full e-flex e-con e-parent \" data-id=\"76e8983\" data-element_type=\"container\" data-e-type=\"container\" id=\"map\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\t\t<div class=\"elementor-element elementor-element-b2b4def elementor-widget elementor-widget-html\" data-id=\"b2b4def\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\n\t.widget {\n\t\tmargin: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\toverflow: hidden;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tposition: relative;\n\t}\n\n\t.scale {\n\t\ttransform-origin: center center;\n\t\twill-change: transform;\n\t}\n\n\t.scene {\n\t\twidth: 100vw;\n\t\theight: 40vw;\n\t\ttransition: transform 0.1s linear;\n\t\tdisplay: flex;\n\t\tbox-sizing: border-box;\n\t\tposition: relative;\n\t}\n\n\t.area {\n\t\tposition: absolute;\n\t\toverflow: visible;\n\t\tpointer-events: none;\n\t\tbackground: transparent;\n\t\tuser-select: none;\n\t}\n\n\t.area img {\n\t\twidth: 100%;\n\t\tdisplay: block;\n\t\tobject-fit: contain;\n\t\tpointer-events: none;\n\t\tuser-select: none;\n\t\ttransition: 0.2s ease;\n\t}\n\n\t.area_1 {\n\t\ttop: 5.6vw;\n\t\tleft: 22vw;\n\t}\n\t.area_2 {\n\t\twidth: 37vw;\n\t\ttop: 24.6vw;\n\t\tleft: 37.7vw;\n\t}\n\t.area_3 {\n\t\twidth: 61vw;\n\t\ttop: 1vw;\n\t\tleft: -1vw;\n\t}\n\n\t.scene.hovering .area img,\n\t.scene.zoomed .area img {\n\t\tfilter: saturate(0) brightness(1.35);\n\t}\n\n\t.scene.hovering .area.hovered img,\n\t.scene.zoomed .area.active img {\n\t\tfilter: saturate(1) brightness(1) opacity(1) !important;\n\t}\n\n\t.scene.hovering .area.hovered {\n\t\tz-index: 10;\n\t}\n\t.scene.zoomed .area {\n\t\tpointer-events: none;\n\t}\n\t.scene.zoomed .area.active {\n\t\tpointer-events: all !important;\n\t\tcursor: move;\n\t\tz-index: 20;\n\t\toverflow: visible;\n\t}\n\n\t.area > .marker:not(.spawned) {\n\t\ttop: 50%;\n\t\tleft: 50%;\n\t\topacity: 1;\n\t\ttransform: translate(-50%, -50%) scale(var(--outer-marker-scale, 1.25));\n\t}\n\n\t.scene.zoomed .area .marker:not(.spawned) {\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\ttransition: opacity 0.2s ease;\n\t}\n\n\t@keyframes markerPulse {\n\t\t0%,\n\t\t100% {\n\t\t\tbox-shadow: 0 0 0 0 rgba(29, 180, 206, 0.4);\n\t\t}\n\t\t50% {\n\t\t\tbox-shadow: 0 0 0 0.4vw rgba(29, 180, 206, 0);\n\t\t}\n\t}\n\n\t@keyframes markerAppear {\n\t\tfrom {\n\t\t\topacity: 0;\n\t\t\ttransform: translate(-50%, -50%) scale(0);\n\t\t}\n\t\tto {\n\t\t\topacity: 1;\n\t\t\ttransform: translate(-50%, -50%) scale(1);\n\t\t}\n\t}\n\n\t@keyframes circleGrow {\n\t\t0% {\n\t\t\ttransform: scale(0);\n\t\t}\n\t\t65% {\n\t\t\ttransform: scale(1.25);\n\t\t}\n\t\t100% {\n\t\t\ttransform: scale(1);\n\t\t}\n\t}\n\n\t@keyframes titleReveal {\n\t\tfrom {\n\t\t\tclip-path: inset(0 100% 0 0);\n\t\t}\n\t\tto {\n\t\t\tclip-path: inset(0 0% 0 0);\n\t\t}\n\t}\n\n\t.marker {\n\t\tposition: absolute;\n\t\ttransform: translate(-50%, -50%) scale(0);\n\t\tbackground: linear-gradient(135deg, rgba(255, 255, 255, 0.97), rgba(240, 247, 255, 0.95));\n\t\tborder: 0.04vw solid rgba(77, 166, 213, 0.2);\n\t\tborder-radius: 0.5vw;\n\t\tbox-shadow:\n\t\t\t0 0.15vw 0.6vw rgba(77, 166, 213, 0.15),\n\t\t\t0 0.05vw 0.18vw rgba(0, 0, 0, 0.08),\n\t\t\tinset 0 0.04vw 0 rgba(255, 255, 255, 0.8);\n\t\toverflow: hidden;\n\t\tpointer-events: all;\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\twidth: fit-content;\n\t\tz-index: 31;\n\t\topacity: 0;\n\t\ttransition:\n\t\t\tbox-shadow 0.3s ease,\n\t\t\tborder-color 0.3s ease,\n\t\t\tbackground 0.3s ease;\n\t}\n\n\t.marker.show {\n\t\tanimation: markerAppear 0.18s ease-out forwards;\n\t}\n\n\t.marker.show .marker_head::before {\n\t\tanimation:\n\t\t\tcircleGrow 0.25s cubic-bezier(0.34, 1.56, 0.64, 1) forwards,\n\t\t\tmarkerPulse 1.5s ease-in-out 0.25s infinite;\n\t}\n\n\t.marker.show .marker_title {\n\t\tdisplay: inline-block;\n\t\tanimation: titleReveal 0.18s ease 0.16s both;\n\t}\n\n\t.marker:hover {\n\t\tbox-shadow:\n\t\t\t0 0.3vw 1.2vw rgba(77, 166, 213, 0.28),\n\t\t\t0 0.09vw 0.36vw rgba(0, 0, 0, 0.1),\n\t\t\tinset 0 0.04vw 0 rgba(255, 255, 255, 0.9);\n\t\tborder-color: rgba(77, 166, 213, 0.45);\n\t\tbackground: linear-gradient(135deg, #fff, rgba(232, 245, 255, 0.98));\n\t}\n\n\t.marker_head {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 0.06vw;\n\t}\n\n\t.marker_head::before {\n\t\tcontent: '+';\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tmin-width: 0.78vw;\n\t\theight: 0.78vw;\n\t\tbackground: #1db4ce;\n\t\tborder-radius: 50%;\n\t\tmargin: 0.1vw;\n\t\tflex-shrink: 0;\n\t\tcursor: pointer;\n\t\tfont-size: 0.46vw;\n\t\tfont-weight: 300;\n\t\tcolor: #fff;\n\t\tline-height: 1;\n\t\tanimation: markerPulse 1.5s ease-in-out infinite;\n\t\tbox-shadow: 0 0.06vw 0.18vw rgba(29, 180, 206, 0.3);\n\t\ttransition: background 0.3s ease;\n\t}\n\n\t.marker_title {\n\t\tpadding: 0 0.3vw 0 0.07vw;\n\t\tfont-size: 0.3vw;\n\t\tfont-weight: 700;\n\t\tletter-spacing: 0.035vw;\n\t\ttext-transform: uppercase;\n\t\tcolor: #1e2235;\n\t\ttransition: color 0.3s ease;\n\t}\n\n\t.marker:hover .marker_title {\n\t\tcolor: #3b82c4;\n\t}\n\n\t.marker_body {\n\t\twidth: 0;\n\t\tmin-width: 100%;\n\t\tmax-height: 0;\n\t\toverflow: hidden;\n\t\ttransition:\n\t\t\tmax-height 0.2s ease,\n\t\t\tpadding 0.2s ease;\n\t\tpadding: 0 0.3vw;\n\t\tbox-sizing: border-box;\n\t}\n\n\t.marker_body p {\n\t\tfont-size: 0.27vw;\n\t\tline-height: 1.6;\n\t\tcolor: #64748b;\n\t\twhite-space: normal;\n\t\tmargin: 0;\n\t}\n\n\t.marker.expanded {\n\t\tborder-color: rgba(77, 166, 213, 0.4);\n\t\tbackground: linear-gradient(135deg, #fff, rgba(240, 249, 255, 0.98));\n\t\tbox-shadow:\n\t\t\t0 0.3vw 1.3vw rgba(77, 166, 213, 0.22),\n\t\t\t0 0.09vw 0.36vw rgba(0, 0, 0, 0.08),\n\t\t\tinset 0 0.04vw 0 rgba(255, 255, 255, 0.9);\n\t}\n\n\t.marker.expanded .marker_body {\n\t\tmax-height: 7vw;\n\t\tpadding: 0.3vw;\n\t}\n\t.marker.expanded .marker_head::before {\n\t\tcontent: '\u2212';\n\t\tanimation: none;\n\t}\n\n\t.hint {\n\t\tposition: absolute;\n\t\tbottom: clamp(12px, 1.2vw, 20px);\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%) translateY(12px);\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: clamp(6px, 0.55vw, 10px);\n\t\tbackground: rgba(255, 255, 255, 0.92);\n\t\tborder: max(1px, 0.07vw) solid #e2e8f0;\n\t\tcolor: #64748b;\n\t\tfont-size: clamp(12px, 0.78vw, 15px);\n\t\tfont-weight: 500;\n\t\tpadding: clamp(8px, 0.5vw, 12px) clamp(12px, 0.7vw, 16px);\n\t\tborder-radius: clamp(20px, 3.5vw, 50px);\n\t\tz-index: 100;\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\ttransition:\n\t\t\topacity 0.1s linear,\n\t\t\ttransform 0.1s linear;\n\t\tbox-shadow: 0 0.28vw 1.1vw rgba(0, 0, 0, 0.1);\n\t}\n\n\t.hint.visible {\n\t\topacity: 1;\n\t\ttransform: translateX(-50%) translateY(0);\n\t}\n\n\t.back_btn {\n\t\tposition: absolute;\n\t\ttop: clamp(12px, 3vw, 20px);\n\t\tleft: clamp(12px, 3vw, 20px);\n\t\tz-index: 100;\n\t\tbackground: rgba(255, 255, 255, 0.92);\n\t\tborder: 1.5px solid #e2e8f0;\n\t\tborder-radius: 50%;\n\t\twidth: 44px;\n\t\theight: 44px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcursor: pointer;\n\t\tbox-shadow: 0 2px 12px rgba(0, 0, 0, 0.12);\n\t\tcolor: #1e2235;\n\t\topacity: 0;\n\t\tpointer-events: none;\n\t\ttransition: opacity 0.1s ease;\n\t\t-webkit-tap-highlight-color: transparent;\n\t\tpadding: 0;\n\t\toutline: none;\n\t}\n\n\t.back_btn.visible {\n\t\topacity: 1;\n\t\tpointer-events: all;\n\t}\n\n\t@media (max-width: 768px) {\n\t\t.back_btn {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.hint_scroll {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.hint {\n\t\t\tbottom: auto;\n\t\t\ttop: clamp(12px, 3vw, 20px);\n\t\t\tleft: clamp(12px, 3vw, 20px);\n\t\t\ttransform: translateX(0) translateY(-8px);\n\t\t}\n\t\t.hint.visible {\n\t\t\tcursor: pointer;\n\t\t\tpointer-events: auto;\n\t\t\ttransform: translateX(0) translateY(0);\n\t\t}\n\t}\n\n\t@media (min-width: 769px) {\n\t\t.back_btn {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.hint_back {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.hint.visible {\n\t\t\tcursor: pointer;\n\t\t\tpointer-events: auto;\n\t\t}\n\t}\n<\/style>\n\n<div class=\"widget\" id=\"vmapWidget\">\n\t<div class=\"scale\" id=\"sceneScale\">\n\t\t<section class=\"scene\" id=\"scene\">\n\t\t\t<div class=\"area area_1\" id=\"card1\" data-index=\"0\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/feznavoi.uz\/wp-content\/uploads\/2026\/02\/vmap_1-scaled.png\" alt=\"\" draggable=\"false\" \/>\n\t\t\t<\/div>\n\t\t\t<div class=\"area area_2\" id=\"card2\" data-index=\"1\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/feznavoi.uz\/wp-content\/uploads\/2026\/02\/vmap_2.png\" alt=\"\" draggable=\"false\" \/>\n\t\t\t<\/div>\n\t\t\t<div class=\"area area_3\" id=\"card3\" data-index=\"2\">\n\t\t\t\t<img decoding=\"async\" src=\"https:\/\/feznavoi.uz\/wp-content\/uploads\/2026\/02\/vmap_3.png\" alt=\"\" draggable=\"false\" \/>\n\t\t\t<\/div>\n\t\t<\/section>\n\t<\/div>\n\t<button class=\"back_btn\" id=\"vmapBackBtn\" aria-label=\"\u041d\u0430\u0437\u0430\u0434\">\n\t\t<svg\n\t\t\twidth=\"20\"\n\t\t\theight=\"20\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstroke-width=\"2.5\"\n\t\t\tstroke-linecap=\"round\"\n\t\t\tstroke-linejoin=\"round\">\n\t\t\t<path d=\"M15 18l-6-6 6-6\" \/>\n\t\t<\/svg>\n\t<\/button>\n\t<div class=\"hint\" id=\"scrollHint\">\n\t\t<svg\n\t\t\tclass=\"hint_back\"\n\t\t\twidth=\"18\"\n\t\t\theight=\"18\"\n\t\t\tviewBox=\"0 0 24 24\"\n\t\t\tfill=\"none\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstroke-width=\"2.5\"\n\t\t\tstroke-linecap=\"round\"\n\t\t\tstroke-linejoin=\"round\">\n\t\t\t<path d=\"M15 18l-6-6 6-6\" \/>\n\t\t<\/svg>\n\t\t<svg class=\"hint_scroll\" width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n\t\t\t<rect x=\"5\" y=\"2\" width=\"14\" height=\"20\" rx=\"7\" \/>\n\t\t\t<line x1=\"12\" y1=\"6\" x2=\"12\" y2=\"10\" \/>\n\t\t<\/svg>\n\t\t\u041f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f\n\t<\/div>\n\t<div id=\"nav\"><\/div>\n<\/div>\n\n<script>\n\t;(function () {\n\t\t'use strict'\n\n\t\tvar MARKERS = [\n\t\t\t{ area: 0, type: 'label', title: '\u041f\u043e\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442' },\n\t\t\t{ area: 0, type: 'point', x: 38, y: 35, title: '\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u0441\u0435\u0442\u044c', desc: '\u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c 500 \u043a\u0412\u0442, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0442 \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u0446\u0438\u0438' },\n\t\t\t{ area: 0, type: 'point', x: 60, y: 50, title: '\u0412\u043e\u0434\u043e\u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0438\u0435', desc: '\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u043e\u0434\u043e\u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0438\u0435, \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435 4 \u0431\u0430\u0440' },\n\t\t\t{ area: 0, type: 'point', x: 48, y: 68, title: '\u0413\u0430\u0437\u043e\u043f\u0440\u043e\u0432\u043e\u0434', desc: '\u0412\u044b\u0441\u043e\u043a\u043e\u0435 \u0434\u0430\u0432\u043b\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u043d\u0430\u044f \u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c 5000 \u043c\u00b3\/\u0447' },\n\t\t\t{ area: 1, type: 'label', title: '\u0418\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430' },\n\t\t\t{ area: 1, type: 'point', x: 30, y: 40, title: '\u0423\u0447\u0430\u0441\u0442\u043e\u043a \u04101', desc: '\u041f\u043b\u043e\u0449\u0430\u0434\u044c 5000 \u043c\u00b2, \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0430\u043d\u043e' },\n\t\t\t{ area: 1, type: 'point', x: 55, y: 30, title: '\u0423\u0447\u0430\u0441\u0442\u043e\u043a \u04102', desc: '\u041f\u043b\u043e\u0449\u0430\u0434\u044c 3000 \u043c\u00b2, \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0441 \u044f\u043d\u0432\u0430\u0440\u044f 2025' },\n\t\t\t{ area: 1, type: 'point', x: 65, y: 65, title: '\u0423\u0447\u0430\u0441\u0442\u043e\u043a \u04103', desc: '\u041f\u043b\u043e\u0449\u0430\u0434\u044c 4500 \u043c\u00b2, \u0434\u043e\u0440\u043e\u0433\u0430 \u0430\u0441\u0444\u0430\u043b\u044c\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430' },\n\t\t\t{ area: 2, type: 'label', title: '\u0410\u0440\u0435\u043d\u0434\u043e\u0432\u0430\u0442\u044c' },\n\t\t\t{ area: 2, type: 'point', x: 40, y: 45, title: '\u0421\u043a\u043b\u0430\u0434 1', desc: '\u041f\u043b\u043e\u0449\u0430\u0434\u044c 2000 \u043c\u00b2, \u043e\u0442\u0430\u043f\u043b\u0438\u0432\u0430\u0435\u043c\u044b\u0439, \u0432\u043e\u0440\u043e\u0442\u0430 4\u00d74 \u043c' },\n\t\t\t{ area: 2, type: 'point', x: 62, y: 35, title: '\u0421\u043a\u043b\u0430\u0434 2', desc: '\u041f\u043b\u043e\u0449\u0430\u0434\u044c 1500 \u043c\u00b2, \u043c\u043e\u0440\u043e\u0437\u0438\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u043a\u0446\u0438\u0438' },\n\t\t\t{ area: 2, type: 'point', x: 50, y: 70, title: '\u041e\u0444\u0438\u0441', desc: '\u041f\u043b\u043e\u0449\u0430\u0434\u044c 500 \u043c\u00b2, \u043a\u043b\u0430\u0441\u0441 A, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u043a\u0430' },\n\t\t]\n\n\t\tvar ZOOM_SCALE = 2.5\n\t\tvar OUTER_SCALE = 1.25\n\t\tvar INNER_RATIO = 0.9\n\t\tvar MAP_SCALE = 1 \/\/ xarita boshlang'ich masshtabi: 1 = standart, 1.2 = kattaroq, 0.8 = kichikroq\n\n\t\tvar scriptEl = document.currentScript\n\t\tvar widgetRoot =\n\t\t\tscriptEl && scriptEl.previousElementSibling && scriptEl.previousElementSibling.classList.contains('widget')\n\t\t\t\t? scriptEl.previousElementSibling\n\t\t\t\t: document.querySelector('.widget')\n\t\tif (!widgetRoot) return\n\n\t\tvar scene = widgetRoot.querySelector('.scene')\n\t\tvar sceneScale = widgetRoot.querySelector('.scale')\n\t\tvar maps = Array.prototype.slice.call(widgetRoot.querySelectorAll('.area'))\n\t\tvar scrollHint = widgetRoot.querySelector('.hint')\n\t\tvar backBtn = widgetRoot.querySelector('.back_btn')\n\t\tif (!scene || !sceneScale || !maps.length || !scrollHint) return\n\n\t\t\/* mobile nav \u2014 all styles inline !important *\/\n\t\tvar mobileNav = document.getElementById('nav') || document.createElement('div')\n\t\tmobileNav.id = 'nav'\n\t\twidgetRoot.appendChild(mobileNav)\n\t\t;(function () {\n\t\t\tvar s = mobileNav.style\n\t\t\ts.setProperty('position', 'absolute', 'important')\n\t\t\ts.setProperty('top', '0', 'important')\n\t\t\ts.setProperty('left', '0', 'important')\n\t\t\ts.setProperty('right', '0', 'important')\n\t\t\ts.setProperty('bottom', '0', 'important')\n\t\t\ts.setProperty('z-index', '9999', 'important')\n\t\t\ts.setProperty('flex-direction', 'column', 'important')\n\t\t\ts.setProperty('align-items', 'center', 'important')\n\t\t\ts.setProperty('justify-content', 'flex-start', 'important')\n\t\t\ts.setProperty('padding-top', '50px', 'important')\n\t\t\ts.setProperty('gap', '16px', 'important')\n\t\t\ts.setProperty('background', 'rgba(8,18,38,0.55)', 'important')\n\t\t\ts.setProperty('display', 'none', 'important')\n\t\t\ts.setProperty('pointer-events', 'none', 'important')\n\t\t})()\n\n\t\tfunction fixWidgetHeight() {\n\t\t\tif (window.innerWidth <= 768) {\n\t\t\t\twidgetRoot.style.setProperty('height', '100svh', 'important')\n\t\t\t\twidgetRoot.style.setProperty('min-height', '100svh', 'important')\n\t\t\t} else {\n\t\t\t\twidgetRoot.style.removeProperty('height')\n\t\t\t\twidgetRoot.style.removeProperty('min-height')\n\t\t\t}\n\t\t}\n\t\tfixWidgetHeight()\n\n\t\tMARKERS.filter(function (m) {\n\t\t\treturn m.type === 'label'\n\t\t}).forEach(function (item) {\n\t\t\tvar btn = document.createElement('button')\n\t\t\tvar bs = btn.style\n\t\t\tbs.setProperty('pointer-events', 'auto', 'important')\n\t\t\tbs.setProperty('display', 'block', 'important')\n\t\t\tbs.setProperty('background', '#1db4ce', 'important')\n\t\t\tbs.setProperty('color', '#fff', 'important')\n\t\t\tbs.setProperty('font-family', 'inherit', 'important')\n\t\t\tbs.setProperty('font-size', 'clamp(11px,3vw,14px)', 'important')\n\t\t\tbs.setProperty('font-weight', '700', 'important')\n\t\t\tbs.setProperty('letter-spacing', '0.06em', 'important')\n\t\t\tbs.setProperty('text-transform', 'uppercase', 'important')\n\t\t\tbs.setProperty('border', 'none', 'important')\n\t\t\tbs.setProperty('border-radius', '0', 'important')\n\t\t\tbs.setProperty('padding', 'clamp(7px,1.5vw,10px) 0', 'important')\n\t\t\tbs.setProperty('width', 'min(60vw,240px)', 'important')\n\t\t\tbs.setProperty('text-align', 'center', 'important')\n\t\t\tbs.setProperty('cursor', 'pointer', 'important')\n\t\t\tbs.setProperty('box-shadow', '0 6px 24px rgba(29,180,206,0.35)', 'important')\n\t\t\tbs.setProperty('outline', 'none', 'important')\n\t\t\tbs.setProperty('box-sizing', 'border-box', 'important')\n\t\t\tbs.setProperty('margin', '0', 'important')\n\t\t\tbtn.textContent = item.title\n\t\t\tbtn.addEventListener('click', function () {\n\t\t\t\tif (state === 'idle' && maps[item.area]) enterZoom(maps[item.area])\n\t\t\t})\n\t\t\tmobileNav.appendChild(btn)\n\t\t})\n\n\t\tfunction navShow() {\n\t\t\tif (window.innerWidth <= 768) {\n\t\t\t\tmobileNav.style.setProperty('display', 'flex', 'important')\n\t\t\t\tmobileNav.style.setProperty('pointer-events', 'auto', 'important')\n\t\t\t} else {\n\t\t\t\tmobileNav.style.setProperty('display', 'none', 'important')\n\t\t\t}\n\t\t}\n\t\tfunction navHide() {\n\t\t\tmobileNav.style.setProperty('display', 'none', 'important')\n\t\t}\n\n\t\tnavShow()\n\t\twindow.addEventListener('resize', function () {\n\t\t\tfixWidgetHeight()\n\t\t\tupdateCoverScale()\n\t\t\tif (state === 'idle') navShow()\n\t\t})\n\n\t\tMARKERS.filter(function (m) {\n\t\t\treturn m.type === 'label'\n\t\t}).forEach(function (m) {\n\t\t\tvar el = document.createElement('div')\n\t\t\tel.className = 'marker'\n\t\t\tel.innerHTML = '<div class=\"marker_head\"><span class=\"marker_title\">' + m.title + '<\/span><\/div>'\n\t\t\tmaps[m.area].appendChild(el)\n\t\t})\n\n\t\tvar state = 'idle'\n\t\tvar activeMap = null,\n\t\t\tactiveMapIndex = null\n\t\tvar panX = 0,\n\t\t\tpanY = 0\n\t\tvar zoomOx = 50,\n\t\t\tzoomOy = 50,\n\t\t\tsceneW = 0,\n\t\t\tsceneH = 0\n\t\tvar isDragging = false\n\t\tvar dragStartX = 0,\n\t\t\tdragStartY = 0,\n\t\t\tpanStartX = 0,\n\t\t\tpanStartY = 0\n\t\tvar hoveredMap = null\n\t\tvar rafPending = false,\n\t\t\tlatestCX = 0,\n\t\t\tlatestCY = 0\n\t\tvar hitCanvases = new Map()\n\t\tvar canPixelTest = true\n\n\t\tfunction vw() {\n\t\t\treturn window.innerWidth \/ 100\n\t\t}\n\n\t\tfunction updateCoverScale() {\n\t\t\tif (state === 'zoomed' || state === 'zooming' || state === 'unzooming') return\n\t\t\tscene.style.setProperty('--outer-marker-scale', String(OUTER_SCALE))\n\t\t\tvar baseH = window.innerWidth * 0.4\n\t\t\tvar byHeight = Math.max(1, window.innerHeight \/ baseH)\n\t\t\tvar overscan = window.innerWidth <= 768 ? 1.88 : 1.62\n\t\t\tvar scale = byHeight * overscan * MAP_SCALE\n\t\t\tvar liftY = -window.innerHeight * 0.06\n\t\t\tsceneScale.style.transform = 'translate3d(0,' + liftY + 'px,0) scale(' + scale + ')'\n\t\t\tvar margin = Math.max(12, window.innerHeight * 0.015)\n\t\t\tvar minTop = Infinity,\n\t\t\t\tmaxBot = -Infinity\n\t\t\twidgetRoot.querySelectorAll('.area > .marker:not(.spawned)').forEach(function (m) {\n\t\t\t\tvar r = m.getBoundingClientRect()\n\t\t\t\tif (r.top < minTop) minTop = r.top\n\t\t\t\tif (r.bottom > maxBot) maxBot = r.bottom\n\t\t\t})\n\t\t\tif (isFinite(minTop) && isFinite(maxBot)) {\n\t\t\t\tvar safe = liftY\n\t\t\t\tif (minTop < margin) safe += margin - minTop\n\t\t\t\tif (maxBot > window.innerHeight - margin) safe -= maxBot - (window.innerHeight - margin)\n\t\t\t\tsceneScale.style.transform = 'translate3d(0,' + safe + 'px,0) scale(' + scale + ')'\n\t\t\t}\n\t\t}\n\n\t\tupdateCoverScale()\n\n\t\tfunction buildHitCanvas(el) {\n\t\t\ttry {\n\t\t\t\tvar img = el.querySelector('img')\n\t\t\t\tvar c = document.createElement('canvas')\n\t\t\t\tc.width = img.naturalWidth\n\t\t\t\tc.height = img.naturalHeight\n\t\t\t\tvar ctx = c.getContext('2d', { willReadFrequently: true })\n\t\t\t\tctx.drawImage(img, 0, 0)\n\t\t\t\tctx.getImageData(0, 0, 1, 1)\n\t\t\t\thitCanvases.set(el, { ctx: ctx, nw: img.naturalWidth, nh: img.naturalHeight })\n\t\t\t} catch (e) {\n\t\t\t\tcanPixelTest = false\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener('load', function () {\n\t\t\tmaps.forEach(function (m) {\n\t\t\t\tvar img = m.querySelector('img')\n\t\t\t\tif (img.naturalWidth > 0) buildHitCanvas(m)\n\t\t\t})\n\t\t\tupdateCoverScale()\n\t\t})\n\n\t\tfunction isOverImage(el, cx, cy) {\n\t\t\tvar r = el.getBoundingClientRect()\n\t\t\tif (!canPixelTest) return cx >= r.left && cx <= r.right && cy >= r.top && cy <= r.bottom\n\t\t\tvar d = hitCanvases.get(el)\n\t\t\tif (!d) return cx >= r.left && cx <= r.right && cy >= r.top && cy <= r.bottom\n\t\t\tvar sc = Math.min(r.width \/ d.nw, r.height \/ d.nh)\n\t\t\tvar rw = d.nw * sc,\n\t\t\t\trh = d.nh * sc\n\t\t\tvar ix = (cx - r.left - (r.width - rw) \/ 2) \/ sc\n\t\t\tvar iy = (cy - r.top - (r.height - rh) \/ 2) \/ sc\n\t\t\tif (ix < 0 || iy < 0 || ix >= d.nw || iy >= d.nh) return false\n\t\t\ttry {\n\t\t\t\treturn d.ctx.getImageData(Math.floor(ix), Math.floor(iy), 1, 1).data[3] > 20\n\t\t\t} catch (e) {\n\t\t\t\tcanPixelTest = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\n\t\tfunction findMapAt(x, y) {\n\t\t\tfor (var i = 0; i < maps.length; i++) {\n\t\t\t\tif (isOverImage(maps[i], x, y)) return maps[i]\n\t\t\t}\n\t\t\treturn null\n\t\t}\n\n\t\tfunction clearHover() {\n\t\t\tif (state !== 'idle') return\n\t\t\tif (hoveredMap) hoveredMap.classList.remove('hovered')\n\t\t\thoveredMap = null\n\t\t\tscene.classList.remove('hovering')\n\t\t\tsceneScale.style.cursor = ''\n\t\t}\n\n\t\tsceneScale.addEventListener('mousemove', function (e) {\n\t\t\tif (state !== 'idle') return\n\t\t\tvar found = findMapAt(e.clientX, e.clientY)\n\t\t\tif (found === hoveredMap) return\n\t\t\tif (hoveredMap) {\n\t\t\t\thoveredMap.classList.remove('hovered')\n\t\t\t\tscene.classList.remove('hovering')\n\t\t\t}\n\t\t\thoveredMap = found\n\t\t\tif (found) {\n\t\t\t\tscene.classList.add('hovering')\n\t\t\t\tfound.classList.add('hovered')\n\t\t\t}\n\t\t\tsceneScale.style.cursor = found ? 'pointer' : ''\n\t\t})\n\n\t\tsceneScale.addEventListener('mouseleave', clearHover)\n\t\twindow.addEventListener('blur', clearHover)\n\t\tdocument.addEventListener('visibilitychange', function () {\n\t\t\tif (document.hidden) clearHover()\n\t\t})\n\n\t\tsceneScale.addEventListener('click', function (e) {\n\t\t\tif (state !== 'idle') return\n\t\t\tvar m = findMapAt(e.clientX, e.clientY)\n\t\t\tif (m) enterZoom(m)\n\t\t})\n\n\t\tfunction enterZoom(map) {\n\t\t\tstate = 'zooming'\n\t\t\tactiveMap = map\n\t\t\tactiveMapIndex = +map.dataset.index\n\t\t\tscene.classList.remove('hovering')\n\t\t\tmaps.forEach(function (m) {\n\t\t\t\tm.classList.remove('hovered')\n\t\t\t})\n\t\t\tvar sr = scene.getBoundingClientRect()\n\t\t\tvar cr = map.getBoundingClientRect()\n\t\t\tvar mapCx = cr.left + cr.width \/ 2\n\t\t\tvar mapCy = cr.top + cr.height \/ 2\n\t\t\tzoomOx = 50\n\t\t\tzoomOy = 50\n\t\t\tsceneW = sr.width\n\t\t\tsceneH = sr.height\n\t\t\tpanX = panY = 0\n\t\t\tscene.style.transformOrigin = zoomOx + '% ' + zoomOy + '%'\n\t\t\tscene.style.transform = 'scale(' + ZOOM_SCALE + ')'\n\t\t\tscene.classList.add('zoomed')\n\t\t\tmap.classList.add('active')\n\t\t\tnavHide()\n\t\t\tif (backBtn) backBtn.classList.add('visible')\n\t\t\tvar scx = (sr.left + sr.right) \/ 2\n\t\t\tvar scy = (sr.top + sr.bottom) \/ 2\n\t\t\tvar clamped = clampPan(\n\t\t\t\twindow.innerWidth \/ 2 - (scx + ZOOM_SCALE * (mapCx - scx)),\n\t\t\t\twindow.innerHeight \/ 2 - (scy + ZOOM_SCALE * (mapCy - scy)),\n\t\t\t)\n\t\t\tpanX = clamped.x\n\t\t\tpanY = clamped.y\n\t\t\tapplyTransform()\n\t\t\tsetTimeout(function () {\n\t\t\t\tstate = 'zoomed'\n\t\t\t\tspawnDots(activeMapIndex)\n\t\t\t\tscrollHint.classList.add('visible')\n\t\t\t}, 150)\n\t\t}\n\n\t\tfunction exitZoom() {\n\t\t\tif (state !== 'zoomed') return\n\t\t\tstate = 'unzooming'\n\t\t\tremoveDots()\n\t\t\tscrollHint.classList.remove('visible')\n\t\t\tif (backBtn) backBtn.classList.remove('visible')\n\t\t\tpanX = panY = 0\n\t\t\tscene.style.transform = 'scale(1)'\n\t\t\tsetTimeout(function () {\n\t\t\t\tscene.style.cssText = ''\n\t\t\t\tactiveMap.classList.remove('active')\n\t\t\t\tscene.classList.remove('zoomed')\n\t\t\t\tactiveMap = null\n\t\t\t\tactiveMapIndex = null\n\t\t\t\tstate = 'idle'\n\t\t\t\tupdateCoverScale()\n\t\t\t\tnavShow()\n\t\t\t}, 150)\n\t\t}\n\n\t\tfunction applyTransform() {\n\t\t\tvar S = sceneW > 0 ? sceneW \/ (100 * vw()) : 1\n\t\t\tscene.style.transformOrigin = zoomOx + '% ' + zoomOy + '%'\n\t\t\tscene.style.transform =\n\t\t\t\t'scale(' + ZOOM_SCALE + ') translate(' + panX \/ (ZOOM_SCALE * S * vw()) + 'vw,' + panY \/ (ZOOM_SCALE * S * vw()) + 'vw)'\n\t\t}\n\n\t\tfunction clampPan(nx, ny) {\n\t\t\tvar maxX = Math.max(0, (ZOOM_SCALE * sceneW) \/ 2 - window.innerWidth \/ 2)\n\t\t\tvar maxY = Math.max(0, (ZOOM_SCALE * sceneH) \/ 2 - window.innerHeight \/ 2)\n\t\t\treturn {\n\t\t\t\tx: Math.max(-maxX, Math.min(nx, maxX)),\n\t\t\t\ty: Math.max(-maxY, Math.min(ny, maxY)),\n\t\t\t}\n\t\t}\n\n\t\tfunction startDrag(cx, cy) {\n\t\t\tisDragging = true\n\t\t\tdragStartX = cx\n\t\t\tdragStartY = cy\n\t\t\tpanStartX = panX\n\t\t\tpanStartY = panY\n\t\t\trafPending = false\n\t\t\tscene.style.transition = 'transform 0.08s ease-out'\n\t\t}\n\n\t\tfunction moveDrag(cx, cy) {\n\t\t\tlatestCX = cx\n\t\t\tlatestCY = cy\n\t\t\tif (rafPending) return\n\t\t\trafPending = true\n\t\t\trequestAnimationFrame(function () {\n\t\t\t\trafPending = false\n\t\t\t\tif (!isDragging) return\n\t\t\t\tvar nx = panStartX + (latestCX - dragStartX)\n\t\t\t\tvar ny = panStartY + (latestCY - dragStartY)\n\t\t\t\tvar c = clampPan(nx, ny)\n\t\t\t\tif (c.x !== nx) {\n\t\t\t\t\tdragStartX = latestCX\n\t\t\t\t\tpanStartX = c.x\n\t\t\t\t}\n\t\t\t\tif (c.y !== ny) {\n\t\t\t\t\tdragStartY = latestCY\n\t\t\t\t\tpanStartY = c.y\n\t\t\t\t}\n\t\t\t\tpanX = c.x\n\t\t\t\tpanY = c.y\n\t\t\t\tapplyTransform()\n\t\t\t})\n\t\t}\n\n\t\tfunction endDrag(wasTap) {\n\t\t\tif (!isDragging) return\n\t\t\tvar moved = Math.abs(panX - panStartX) + Math.abs(panY - panStartY) > 5\n\t\t\tisDragging = false\n\t\t\trafPending = false\n\t\t\tscene.style.transition = 'transform 0.15s ease-out'\n\t\t\tif (moved) updateActiveCard()\n\t\t\telse if (wasTap && state === 'zoomed') exitZoom()\n\t\t}\n\n\t\tsceneScale.addEventListener('mousedown', function (e) {\n\t\t\tif (state !== 'zoomed' || e.target.closest('.marker')) return\n\t\t\tstartDrag(e.clientX, e.clientY)\n\t\t\tsceneScale.style.cursor = 'grabbing'\n\t\t})\n\n\t\twindow.addEventListener('mousemove', function (e) {\n\t\t\tif (!isDragging) return\n\t\t\tmoveDrag(e.clientX, e.clientY)\n\t\t})\n\n\t\twindow.addEventListener('mouseup', function () {\n\t\t\tif (!isDragging) return\n\t\t\tsceneScale.style.cursor = ''\n\t\t\tendDrag(false)\n\t\t})\n\n\t\tsceneScale.addEventListener(\n\t\t\t'touchstart',\n\t\t\tfunction (e) {\n\t\t\t\tif (state !== 'zoomed' || e.target.closest('.marker')) return\n\t\t\t\te.preventDefault()\n\t\t\t\tvar t = e.touches[0]\n\t\t\t\tstartDrag(t.clientX, t.clientY)\n\t\t\t},\n\t\t\t{ passive: false },\n\t\t)\n\n\t\tsceneScale.addEventListener(\n\t\t\t'touchmove',\n\t\t\tfunction (e) {\n\t\t\t\tif (!isDragging) return\n\t\t\t\te.preventDefault()\n\t\t\t\tvar t = e.touches[0]\n\t\t\t\tmoveDrag(t.clientX, t.clientY)\n\t\t\t},\n\t\t\t{ passive: false },\n\t\t)\n\n\t\tsceneScale.addEventListener('touchend', function (e) {\n\t\t\tif (!isDragging) return\n\t\t\tvar tappedOutside = !e.target.closest('.active')\n\t\t\tendDrag(tappedOutside)\n\t\t})\n\n\t\tfunction updateActiveCard() {\n\t\t\tvar cx = window.innerWidth \/ 2,\n\t\t\t\tcy = window.innerHeight \/ 2\n\t\t\tvar closest = null,\n\t\t\t\tminD = Infinity\n\t\t\tmaps.forEach(function (m) {\n\t\t\t\tvar r = m.getBoundingClientRect()\n\t\t\t\tvar dx = r.left + r.width \/ 2 - cx\n\t\t\t\tvar dy = r.top + r.height \/ 2 - cy\n\t\t\t\tvar d = dx * dx + dy * dy\n\t\t\t\tif (d < minD) {\n\t\t\t\t\tminD = d\n\t\t\t\t\tclosest = m\n\t\t\t\t}\n\t\t\t})\n\t\t\tif (closest && closest !== activeMap) {\n\t\t\t\tremoveDots()\n\t\t\t\tactiveMap.classList.remove('active')\n\t\t\t\tactiveMap = closest\n\t\t\t\tactiveMapIndex = +closest.dataset.index\n\t\t\t\tactiveMap.classList.add('active')\n\t\t\t\tspawnDots(activeMapIndex)\n\t\t\t}\n\t\t}\n\n\t\tfunction spawnDots(index) {\n\t\t\tremoveDots()\n\t\t\tvar pts = MARKERS.filter(function (m) {\n\t\t\t\treturn m.area === index && m.type === 'point'\n\t\t\t})\n\t\t\tvar sc = Math.max(0.45, Math.min(0.75, (OUTER_SCALE * INNER_RATIO) \/ ZOOM_SCALE))\n\t\t\tpts.forEach(function (pt, i) {\n\t\t\t\tvar m = document.createElement('div')\n\t\t\t\tm.className = 'marker spawned'\n\t\t\t\tm.style.scale = String(sc)\n\t\t\t\tm.style.left = pt.x + '%'\n\t\t\t\tm.style.top = pt.y + '%'\n\t\t\t\tm.innerHTML =\n\t\t\t\t\t'<div class=\"marker_head\"><span class=\"marker_title\">' +\n\t\t\t\t\tpt.title +\n\t\t\t\t\t'<\/span><\/div>' +\n\t\t\t\t\t'<div class=\"marker_body\"><p>' +\n\t\t\t\t\tpt.desc +\n\t\t\t\t\t'<\/p><\/div>'\n\t\t\t\tm.addEventListener('click', function (e) {\n\t\t\t\t\te.stopPropagation()\n\t\t\t\t\tvar was = m.classList.contains('expanded')\n\t\t\t\t\tactiveMap.querySelectorAll('.marker.expanded').forEach(function (el) {\n\t\t\t\t\t\tel.classList.remove('expanded')\n\t\t\t\t\t})\n\t\t\t\t\tif (!was) m.classList.add('expanded')\n\t\t\t\t})\n\t\t\t\tactiveMap.appendChild(m)\n\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tm.classList.add('show')\n\t\t\t\t\t}, i * 60)\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tfunction removeDots() {\n\t\t\tif (!activeMap) return\n\t\t\tactiveMap.querySelectorAll('.marker.spawned').forEach(function (d) {\n\t\t\t\td.remove()\n\t\t\t})\n\t\t}\n\n\t\twidgetRoot.addEventListener(\n\t\t\t'wheel',\n\t\t\tfunction (e) {\n\t\t\t\tif (e.ctrlKey) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tif (state === 'zoomed' && e.target.closest('.scene')) {\n\t\t\t\t\te.preventDefault()\n\t\t\t\t\texitZoom()\n\t\t\t\t}\n\t\t\t},\n\t\t\t{ passive: false },\n\t\t)\n\n\t\tscene.addEventListener('click', function (e) {\n\t\t\tif (state !== 'zoomed') return\n\t\t\tif (Math.abs(e.clientX - dragStartX) + Math.abs(e.clientY - dragStartY) > 5) return\n\t\t\tif (!e.target.closest('.active')) exitZoom()\n\t\t})\n\n\t\twindow.addEventListener('keydown', function (e) {\n\t\t\tif (e.key === 'Escape' && state === 'zoomed') exitZoom()\n\t\t})\n\n\t\tif (backBtn) {\n\t\t\tbackBtn.addEventListener('click', function () {\n\t\t\t\tif (state === 'zoomed') exitZoom()\n\t\t\t})\n\t\t}\n\n\t\tscrollHint.addEventListener('click', function () {\n\t\t\tif (state === 'zoomed') exitZoom()\n\t\t})\n\t})()\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\r\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u0442\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c\u0441\u044f<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-19433","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/pages\/19433","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/comments?post=19433"}],"version-history":[{"count":16,"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/pages\/19433\/revisions"}],"predecessor-version":[{"id":23567,"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/pages\/19433\/revisions\/23567"}],"wp:attachment":[{"href":"https:\/\/feznavoi.uz\/ru\/wp-json\/wp\/v2\/media?parent=19433"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}