{"version":3,"file":"shared-lib.WFSAnuFy.mjs","names":[],"sources":["https:/framerusercontent.com/modules/zuigcFBrKz86csUiyz5l/T434kcpXKcV81qKs8N1x/siteMetadata.js"],"sourcesContent":["// Generated by Framer (4076eae)\nconst valuesByLocaleId={KqpOtR_Ug:{v0:\"NF is an architectural and research practice dedicated to\\xa0enhancing the\\xa0well-being of\\xa0both people and the\\xa0planet\"}};function getLocalizedValue(key,locale){while(locale){const values=valuesByLocaleId[locale.id];if(values){const value=values[key];if(value)return value;}locale=locale.fallback;}}export default function metadata(params,activeLocale){return{customHTMLBodyEnd:'<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css\">\\n<script src=\"https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js\"></script>\\n\\n<script>\\n(function () {\\n  const CONTAINER_SEL = \\'[data-framer-name=\"ArticleBody\"]\\';\\n\\n  function bindContainer(container) {\\n    if (!container || container.__lbBound) return;\\n    container.__lbBound = true;\\n\\n    container.addEventListener(\\'click\\', (e) => {\\n      const picOrImg = e.target.closest(\\'picture, img\\');\\n      if (!picOrImg || !container.contains(picOrImg)) return;\\n\\n      e.preventDefault(); // не переходим по ссылке, если есть\\n      const clickedImg = picOrImg.tagName.toLowerCase() === \\'picture\\'\\n        ? picOrImg.querySelector(\\'img\\')\\n        : picOrImg;\\n\\n      const imgNodes = Array.from(container.querySelectorAll(\\'picture img, img\\'));\\n      const seen = new Set();\\n      const items = [];\\n      let startIndex = 0;\\n\\n      imgNodes.forEach(node => {\\n        const src = node.currentSrc || node.src;\\n        if (!src || seen.has(src)) return;\\n        seen.add(src);\\n        if (node === clickedImg) startIndex = items.length;\\n        items.push({ src, type: \\'image\\', caption: node.alt || \\'\\' });\\n      });\\n\\n      if (items.length && window.Fancybox) {\\n        Fancybox.show(items, { startIndex });\\n      }\\n    });\\n  }\\n\\n  function scanAndBind() {\\n    document.querySelectorAll(CONTAINER_SEL).forEach(bindContainer);\\n  }\\n\\n  // 1. При первой загрузке\\n  document.addEventListener(\\'DOMContentLoaded\\', scanAndBind);\\n\\n  // 2. При SPA-навигации\\n  window.addEventListener(\\'framer:navigation:end\\', () => {\\n    setTimeout(scanAndBind, 50);\\n  });\\n\\n  // 3. При любых изменениях в контейнере Framer\\n  const root = document.querySelector(\\'#main, body\\'); // Framer рендерит сюда страницы\\n  if (root) {\\n    const observer = new MutationObserver(() => scanAndBind());\\n    observer.observe(root, { childList: true, subtree: true });\\n  }\\n})();\\n</script>\\n\\n<script>\\n(() => {\\n  const ENDPOINT = \"https://functions.yandexcloud.net/d4eh4nqpml3qgrhpj436\";\\n\\n  // RU/EN определяем по первому сегменту пути или html[lang]\\n  const isEN = () =>\\n    location.pathname.split(\"/\")[1] === \"en\" ||\\n    (document.documentElement.lang || \"\").toLowerCase() === \"en\";\\n\\n  // Тулкит-страница? (работает для /toolkit и /en/toolkit)\\n  const onToolkit = () => /(^|\\\\/)toolkit(\\\\/|$)/.test(location.pathname);\\n\\n  // 1) Перехватываем submit (в т.ч. из попапа)\\n  document.addEventListener(\"submit\", async (e) => {\\n    const form = e.target;\\n    if (!(form instanceof HTMLFormElement)) return;\\n    if (!onToolkit()) return;                 // только на тулките\\n    if (!form.reportValidity()) return;       // нативная валидация\\n\\n    e.preventDefault();                       // гасим дефолт Framer/плагинов\\n\\n    // Собираем данные\\n    const fd = new FormData(form);\\n    fd.append(\"_page\", location.pathname);\\n    fd.append(\"_lang\", isEN() ? \"en\" : \"ru\");\\n    fd.append(\"_form\", \"toolkit\");\\n\\n    const payload = {};\\n    fd.forEach((v, k) => (payload[k] = v));\\n\\n    // Надёжная отправка (без Beacon)\\n    try {\\n      await fetch(ENDPOINT, {\\n        method: \"POST\",\\n        headers: { \"Content-Type\": \"application/json\" },\\n        body: JSON.stringify(payload),\\n        keepalive: true\\n      });\\n    } catch (_) {\\n      // игнорируем — всё равно уходим дальше\\n    }\\n\\n    // Гарантированный редирект (не через роутер Framer)\\n    const target = isEN() ? \"/en/toolkit-open\" : \"/toolkit-open\";\\n    setTimeout(() => { location.href = target; }, 200); // маленькая пауза, чтобы запрос стартанул\\n  }, { capture: true });\\n\\n  // 2) Если кнопка в попапе \\xabлевого\\xbb типа (не submit), принудительно сабмитим форму\\n  document.addEventListener(\"click\", (e) => {\\n    if (!onToolkit()) return;\\n    const btn = e.target.closest(\\'button, [role=\"button\"], [data-framer-name*=\"Button\"]\\');\\n    if (!btn) return;\\n    const form = btn.closest(\"form\");\\n    if (!form) return;\\n\\n    const t = (btn.getAttribute(\"type\") || \"\").toLowerCase();\\n    if (t === \"submit\") return;\\n    form.requestSubmit(); // триггерит наш submit-хендлер выше\\n  }, { capture: true });\\n})();\\n</script>\\n\\n<script>\\n  // форма с контактами\\n(() => {\\n  const ENDPOINT = \"https://functions.yandexcloud.net/d4eh4nqpml3qgrhpj436\";\\n\\n  // RU/EN — только по первому сегменту пути\\n  const isEN = () => {\\n    const seg = location.pathname.replace(/\\\\/+$/, \"\").split(\"/\")[1] || \"\";\\n    return seg.toLowerCase() === \"en\";\\n  };\\n\\n  const onForm = () => /(^|\\\\/)form(\\\\/|$)/.test(location.pathname);\\n\\n  document.addEventListener(\"submit\", async (e) => {\\n    const form = e.target;\\n    if (!(form instanceof HTMLFormElement)) return;\\n    if (!onForm()) return;\\n\\n    if (!form.reportValidity()) return;\\n\\n    e.preventDefault();\\n    e.stopPropagation();\\n    if (typeof e.stopImmediatePropagation === \"function\") e.stopImmediatePropagation();\\n\\n    const fd = new FormData(form);\\n    fd.append(\"_page\", location.pathname);\\n    fd.append(\"_lang\", isEN() ? \"en\" : \"ru\");\\n    fd.append(\"_form\", \"project-form\");\\n\\n    const payload = {};\\n    fd.forEach((v, k) => (payload[k] = v));\\n\\n    try {\\n      await fetch(ENDPOINT, {\\n        method: \"POST\",\\n        headers: { \"Content-Type\": \"application/json\" },\\n        body: JSON.stringify(payload),\\n        keepalive: true\\n      });\\n    } catch (_) {}\\n\\n    const target = isEN() ? \"/en/thank-you\" : \"/thank-you\";\\n    setTimeout(() => { location.href = target; }, 200);\\n  }, { capture: true });\\n\\n  // Кнопки без type=\"submit\" → инициируем отправку\\n  document.addEventListener(\"click\", (e) => {\\n    if (!onForm()) return;\\n    const btn = e.target.closest(\\'button, [role=\"button\"], [data-framer-name*=\"Button\"]\\');\\n    if (!btn) return;\\n    const form = btn.closest(\"form\");\\n    if (!form) return;\\n    const t = (btn.getAttribute(\"type\") || \"\").toLowerCase();\\n    if (t === \"submit\") return;\\n    form.requestSubmit();\\n  }, { capture: true });\\n})();\\n</script>',customHTMLHeadEnd:'<style>\\n\\n/* Заголовки */\\n.framer-text h1,\\n.framer-text h2,\\n.framer-text h3,\\n.framer-text h4 {\\n  margin: 24px 0 12px 0 !important;\\n}\\n\\n/* Отступ между заголовком и следующим блоком (в т.ч. списком) */\\n.framer-text h1 + .framer-text,\\n.framer-text h2 + .framer-text,\\n.framer-text h3 + .framer-text,\\n.framer-text h4 + .framer-text {\\n  margin-top: 12px !important;\\n}\\n\\n/* Абзацы */\\n.framer-text p {\\n  margin: 0 0 16px 0 !important;\\n}\\n\\n/* Списки */\\n.framer-text ul,\\n.framer-text ol {\\n  margin: 0 0 16px 20px !important;\\n  padding-left: 20px !important;\\n}\\n\\n.framer-text li {\\n  margin-bottom: 12px !important;\\n}\\n\\n.framer-text li p {\\n  margin: 0 !important;\\n}\\n\\n/* Добавляет курсор-лупу при наведении на картинку в ArticleBody */\\n[data-framer-name=\"ArticleBody\"] picture:hover,\\n[data-framer-name=\"ArticleBody\"] img:hover {\\n  cursor: zoom-in;\\n}\\n\\n</style>\\n\\n\\n',description:getLocalizedValue(\"v0\",activeLocale)??\"NF — это архитектурное и\\xa0исследовательское бюро, деятельность которого направлена на\\xa0повышение благополучия людей и\\xa0планеты\",favicon:\"https://framerusercontent.com/assets/tnWp0kBN8sGacO571koOP8INKDw.png\",robots:\"max-image-preview:large\",socialImage:\"https://framerusercontent.com/assets/KYy0U3EMdRqNw8AntqivCG4h2E.png\",title:\"NF Architechture studio\"};}export const metadataVersion=1;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"metadataVersion\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"2DACuK,SAAS,EAAkB,EAAI,EAAO,CAAC,KAAM,GAAO,CAAC,IAAM,EAAO,EAAiB,EAAO,IAAI,GAAG,EAAO,CAAC,IAAM,EAAM,EAAO,GAAK,GAAG,EAAM,OAAO,EAAO,EAAO,EAAO,UAAW,SAAwB,EAAS,EAAO,EAAa,CAAC,MAAM,CAAC,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAA27L,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA83B,YAAY,EAAkB,KAAK,EAAa,EAAE,uIAAuI,QAAQ,uEAAuE,OAAO,0BAA0B,YAAY,sEAAsE,MAAM,0BAA0B,iBAAvoP,EAAiB,CAAC,UAAU,CAAC,GAAG,+HAA+H,CAAC"}