{"roots":["0:3"],"nodeById":{"0:3":{"type":"WEBPAGE","id":"0:3","name":"/","absoluteBoundingBox":{"x":0.0,"y":0.0,"width":1408.0,"height":1244.0},"isolatedAbsoluteRenderBounds":{"x":0.0,"y":0.0,"width":1408.0,"height":1244.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1408.0,"y":1244.0},"fills":[{"opacity":0.298039227724075,"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true}],"strokeAlign":"INSIDE","strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"children":["0:4"]},"0:4":{"type":"FRAME","id":"0:4","name":"Desktop","absoluteBoundingBox":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"relativeTransform":[[1.0,0.0,64.0],[0.0,1.0,100.0]],"size":{"x":1280.0,"y":1080.0},"fills":[{"blendMode":"NORMAL","type":"SOLID","color":{"r":1.0,"g":1.0,"b":1.0,"a":1.0},"visible":true,"opacity":1.0}],"strokeAlign":"INSIDE","strokes":[],"effects":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"clipsContent":true,"overflowDirection":"VERTICAL_SCROLLING","layoutMode":"VERTICAL","counterAxisSizingMode":"FIXED","isBreakpointFrame":true,"children":["0:7"]},"0:7":{"type":"CODE_INSTANCE","id":"0:7","name":"App","absoluteBoundingBox":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"isolatedAbsoluteRenderBounds":{"x":64.0,"y":100.0,"width":1280.0,"height":1080.0},"relativeTransform":[[1.0,0.0,0.0],[0.0,1.0,0.0]],"size":{"x":1280.0,"y":1080.0},"fills":[],"strokeAlign":"INSIDE","layoutAlign":"STRETCH","layoutGrow":1.0,"strokes":[],"accessibleHTMLTag":"AUTO","isDecorativeImage":false,"ariaAttributes":{},"interactions":[],"codeExportName":"Code0_8.default","componentProperties":{"text#0:0":{"type":"TEXT","value":{"characters":"Code layer","characterStyleOverrides":[],"styleOverrideTable":{},"lineTypes":["NONE"],"lineIndentations":[0],"listStartOffsets":[],"lineStyleOverrides":[0]},"isDefault":true}}}},"assetIdToGuid":{},"guidToUrl":{"0:3":"/"},"fonts":{},"assets":{},"stablePathToAssetInfo":{},"animateRootIds":[],"siteSettings":{"description":"Delivers beautifully crafted Atlassian-style designs that enhance user experience and visual appeal for professional project management tools.","scalingMode":"REFLOW","customCodeBodyStart":"<!-- ============================================ -->\n<!--  ЯНДЕКС МЕТРИКА + ТРЕКИНГ СОБЫТИЙ KARMA      -->\n<!--  Счётчик: 109522467                          -->\n<!--  Куда: Figma Make → Custom Code → Начало <head> -->\n<!-- ============================================ -->\n\n<!-- Yandex.Metrika counter -->\n<script type=\"text/javascript\">\n    (function(m,e,t,r,i,k,a){\n        m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};\n        m[i].l=1*new Date();\n        for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}\n        k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)\n    })(window, document,'script','https://mc.yandex.ru/metrika/tag.js?id=109522467', 'ym');\n    ym(109522467, 'init', {ssr:true, webvisor:true, clickmap:true, ecommerce:\"dataLayer\", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});\n</script>\n<noscript><div><img src=\"https://mc.yandex.ru/watch/109522467\" style=\"position:absolute; left:-9999px;\" alt=\"\" /></div></noscript>\n<!-- /Yandex.Metrika counter -->\n\n\n<!-- Karma: трекинг пользовательских целей -->\n<script>\n(function() {\n  var YM_ID = 109522467;\n\n  // Отправка цели в Метрику\n  function goal(name) {\n    if (typeof ym === 'function') {\n      ym(YM_ID, 'reachGoal', name);\n    }\n  }\n\n  // Нормализация текста (убирает лишние пробелы, переносы, делает lowercase)\n  function norm(s) {\n    return (s || '').replace(/\\s+/g, ' ').trim().toLowerCase();\n  }\n\n  // ============ ОБРАБОТЧИК КЛИКОВ ============\n  document.addEventListener('click', function(e) {\n    // Поднимаемся вверх по DOM, пока не найдём элемент с осмысленным коротким текстом.\n    // Это нужно потому, что в Figma Make кнопки могут быть div'ами или span'ами,\n    // и клик может попасть в дочерний элемент (например, иконку внутри кнопки).\n    var target = e.target;\n    var text = norm(target.innerText || target.textContent || '');\n    var attempts = 0;\n    while ((!text || text.length > 60) && target.parentElement && attempts < 4) {\n      target = target.parentElement;\n      text = norm(target.innerText || target.textContent || '');\n      attempts++;\n    }\n    // Если текст пустой или слишком длинный — это не кнопка, игнорируем\n    if (!text || text.length > 60) return;\n\n    // === КОНТАКТЫ ===\n\n    // Клик по email\n    if (text.indexOf('@karma-tech') !== -1) {\n      goal('contact_email_click');\n      // Если элемент не является обычной ссылкой — принудительно открываем mailto\n      if (target.tagName !== 'A') {\n        setTimeout(function() {\n          window.location.href = 'mailto:info@karma-tech.ru';\n        }, 150);\n      }\n      return;\n    }\n\n    // Клик по телефону\n    if (text.indexOf('769 6203') !== -1 || text.indexOf('7696203') !== -1) {\n      goal('contact_phone_click');\n      if (target.tagName !== 'A') {\n        setTimeout(function() {\n          window.location.href = 'tel:+74957696203';\n        }, 150);\n      }\n      return;\n    }\n\n    // === CTA КНОПКИ ===\n\n    // \"Попробовать\" — в шапке сайта\n    if (text === 'попробовать' || (text.indexOf('попробовать') === 0 && text.length < 15)) {\n      goal('cta_header_try');\n      goal('cta_any');\n      return;\n    }\n\n    // \"Начать бесплатно\" — главная кнопка на первом экране\n    if (text.indexOf('начать бесплатно') !== -1) {\n      goal('cta_hero_start_free');\n      goal('cta_any');\n      return;\n    }\n\n    // \"Смотреть демо\" — вторая кнопка на первом экране\n    if (text.indexOf('смотреть демо') !== -1) {\n      goal('cta_hero_watch_demo');\n      goal('cta_any');\n      return;\n    }\n\n    // \"Запросить демо\" — в блоке цен\n    if (text.indexOf('запросить демо') !== -1) {\n      goal('cta_pricing_request_demo');\n      goal('cta_any');\n      return;\n    }\n\n    // === ПУНКТЫ МЕНЮ (в шапке и футере) ===\n\n    if (text === 'продукты') {\n      goal('nav_menu_products');\n      return;\n    }\n    if (text === 'цены') {\n      goal('nav_menu_pricing');\n      return;\n    }\n    if (text === 'контакты') {\n      goal('nav_menu_contacts');\n      return;\n    }\n  });\n\n  // ============ ОТСЛЕЖИВАНИЕ СКРОЛЛА ============\n  var fired50 = false, fired90 = false;\n  function onScroll() {\n    var h = document.documentElement;\n    var totalHeight = Math.max(h.scrollHeight || 0, document.body.scrollHeight || 0);\n    var scrolled = (window.pageYOffset || h.scrollTop || 0) + window.innerHeight;\n    var pct = totalHeight > 0 ? (scrolled / totalHeight * 100) : 0;\n\n    if (pct >= 50 && !fired50) {\n      fired50 = true;\n      goal('scroll_50');\n    }\n    if (pct >= 90 && !fired90) {\n      fired90 = true;\n      goal('scroll_90');\n    }\n  }\n  window.addEventListener('scroll', onScroll, { passive: true });\n\n  // ============ ВРЕМЯ НА САЙТЕ ============\n  setTimeout(function() {\n    goal('time_on_site_60s');\n  }, 60000);\n})();\n</script>\n<!-- /Karma: трекинг -->","labs":{"E5FBBA911B2B7A09E649D4BE6CDF8591EAEFC881":false},"title":"Karma Tracker and Doc"},"sourceCodeHash":"615b968cc9de568bab20ad95912b51a1301efedd"}