diff --git a/README.md b/README.md index 6623897..3d0afce 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,27 @@ -# NODE.DC Local Working Copy +# NODE.DC PromoSite -This repository contains the current NODE.DC base site: a structured local copy of the recovered Webflow page, localized to Russian and prepared for the block/CMS refactor. - -The rebuild source is `/Users/dcconstructions/site-rescue/ssscript.app`. - -## Run - -```bash -cd /Users/dcconstructions/Downloads/mnt/NODEDC/NODEDC_SITE -python3 -m http.server 8081 --bind 127.0.0.1 -``` - -Open http://127.0.0.1:8081/ - -## Admin And Render - -The first refactor step keeps the Webflow markup intact, but moves the home page into a block-rendered structure: - -- `content/pages/home.json` - ordered page regions and block instances. -- `templates/pages/home/shell.html` - original page shell with block slots. -- `templates/pages/home/blocks/` - exact HTML chunks extracted from the current page. -- `tools/render-home.mjs` - renders `index.html` from the content model and templates. -- `admin/` - local admin UI for block order, enable/disable, duplicate, copy/paste, and JSON edits. - -`heroWaitlist` and `featureVideo` already expose typed content fields in the admin. Other blocks are still managed as HTML-template blocks until their content fields are extracted. - -Run the local admin: - -```bash -cd /Users/dcconstructions/Downloads/mnt/NODEDC/NODEDC_SITE -npm run admin -``` - -Open http://127.0.0.1:8090/admin/ - -Render the public page after JSON changes: - -```bash -npm run render:home -``` - -If the current `index.html` must be re-extracted into fresh templates: - -```bash -npm run extract:home -``` +Static promo site for NODE.DC: an enterprise platform for processes, data, AI agents, workflow automation, Hub, Engine, Ops, and applied business modules. ## Structure -- `index.html`, `beta-apply.html`, `founders.html`, `enterprise.html` - editable local pages. -- `assets/webflow` - Webflow CSS, JS, and image assets. -- `assets/custom` - custom NODE.DC CSS/JS published on Vercel. -- `assets/media` - downloaded videos from ssscript.dev. -- `assets/vendor` - third-party browser scripts. -- `docs/` - refactor notes, block model draft, and admin plan. -- `originals` - untouched files copied from the original wget download. -- `backbase/ssscript.app` - original downloaded app bundle backup. -- `asset-manifest.json` - source URL to local file mapping. -- `tools/build-local-copy.mjs` - rebuild script. It uses `NODEDC_SOURCE_DIR` when provided, otherwise the original local rescue folder. -- `tools/localize-ru.mjs` - Russian localization and NODE.DC brand patch script. +- `content/pages/home.json` - structured content model for the homepage. +- `templates/pages/home/shell.html` - homepage shell and shared head/runtime includes. +- `templates/pages/home/blocks` - block templates used by the renderer and admin. +- `content/block-templates/home.json` - sanitized admin block presets. +- `assets/site` - local runtime CSS, JS, fonts, and base UI images. +- `assets/custom` - NODE.DC custom runtime and overrides. +- `assets/uploads` - product media managed by the site/admin flow. +- `admin` and `tools/admin-server.mjs` - local content admin. -External product/API/documentation links are intentionally left as external URLs. +## Commands + +```bash +npm run render:home +npm run admin +``` + +For a static preview: + +```bash +python3 -m http.server 8081 --bind 127.0.0.1 +``` diff --git a/admin/admin.css b/admin/admin.css index c5f109a..e152db4 100644 --- a/admin/admin.css +++ b/admin/admin.css @@ -795,6 +795,13 @@ body[data-file-picker-active="true"] .editor { scrollbar-color: rgba(255, 255, 255, 0.25) transparent; } +body[data-admin-mode="seo"] #add-block, +body[data-admin-mode="seo"] .block-meta-card, +body[data-admin-mode="seo"] .structure-card, +body[data-admin-mode="seo"] .json-details { + display: none; +} + .hidden { display: none !important; } @@ -802,7 +809,8 @@ body[data-file-picker-active="true"] .editor { .settings-card, .content-panel, .json-details, -.content-group { +.content-group, +.seo-diagnostics { border-radius: var(--launcher-radius-card); background: rgba(255, 255, 255, 0.045); } @@ -930,6 +938,72 @@ body[data-file-picker-active="true"] .editor { white-space: nowrap; } +.seo-diagnostics { + display: grid; + gap: 1rem; + padding: 1rem; +} + +.seo-metric-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 0.75rem; +} + +.seo-metric { + display: grid; + gap: 0.35rem; + min-width: 0; + border-radius: 1rem; + background: rgba(255, 255, 255, 0.055); + padding: 0.82rem; +} + +.seo-metric span { + overflow: hidden; + color: var(--text-muted); + font-size: 0.68rem; + font-weight: 850; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; +} + +.seo-metric strong { + overflow: hidden; + color: var(--text-primary); + font-size: 0.88rem; + font-weight: 850; + line-height: 1.2; + text-overflow: ellipsis; + white-space: nowrap; +} + +.seo-metric[data-status="good"] strong, +.seo-field-meter[data-status="good"] { + color: #bcf4d1; +} + +.seo-metric[data-status="warn"] strong, +.seo-field-meter[data-status="warn"] { + color: #f3d28b; +} + +.seo-metric[data-status="bad"] strong, +.seo-field-meter[data-status="bad"] { + color: #ffb7b7; +} + +.seo-field-meter { + overflow: hidden; + color: var(--text-muted); + font-size: 0.68rem; + font-weight: 720; + text-overflow: ellipsis; + text-transform: none; + white-space: nowrap; +} + .boolean-field { align-content: start; } @@ -1313,7 +1387,8 @@ body[data-file-picker-active="true"] .editor { } input, -textarea { +textarea, +select { width: 100%; border: 0; border-radius: 1rem; @@ -1323,7 +1398,8 @@ textarea { } input:focus, -textarea:focus { +textarea:focus, +select:focus { background: rgba(255, 255, 255, 0.1); box-shadow: none; } @@ -1333,6 +1409,10 @@ textarea { resize: vertical; } +select { + appearance: none; +} + .toggle-row { justify-content: flex-start; gap: 0.65rem; @@ -2473,6 +2553,10 @@ textarea { grid-template-columns: 1fr; } + .seo-metric-grid { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + .media-preview-panel { grid-template-columns: 9rem minmax(0, 1fr); grid-template-rows: auto auto; @@ -2500,7 +2584,7 @@ textarea { .nodedc-expanded-nav-group { display: grid; width: 100%; - grid-template-columns: repeat(3, minmax(0, 1fr)); + grid-template-columns: repeat(2, minmax(0, 1fr)); overflow: visible; } @@ -2519,7 +2603,8 @@ textarea { } .field-grid, - .group-grid { + .group-grid, + .seo-metric-grid { grid-template-columns: 1fr; } diff --git a/admin/admin.js b/admin/admin.js index 8e55bbf..8c41ab7 100644 --- a/admin/admin.js +++ b/admin/admin.js @@ -34,7 +34,12 @@ function readLastMediaDirectory() { return String(readAdminLayoutState().lastMediaDirectory || "").replace(/^\/+/, ""); } +function readAdminMode() { + return readAdminLayoutState().mode === "seo" ? "seo" : "content"; +} + const state = { + mode: readAdminMode(), page: null, templates: [], selected: null, @@ -69,7 +74,78 @@ const state = { const SECTIONS_REGION_ID = "sections"; const SECTIONS_REGION_LABEL = "Секции"; +const PAGE_SEO_DEFAULTS = { + title: "NODE.DC - платформа для процессов, данных и ИИ-агентов", + description: + "NODE.DC объединяет Hub, Engine, Ops, прикладные модули и сквозного ассистента для задач, workflow, данных, ролей, интеграций и инженерных моделей.", + canonicalUrl: "https://nodedc.dctouch.ru/", + robots: "index,follow,max-image-preview:large", + siteName: "NODE.DC", + locale: "ru_RU", + ogImage: "https://nodedc.dctouch.ru/assets/site/images/69b6acdde3123ef078e2b7f3_og-img.jpg", + imageAlt: "NODE.DC - платформа для процессов, данных и ИИ-агентов", + organizationName: "DCTOUCH", + organizationUrl: "https://dctouch.ru/", + applicationCategory: "BusinessApplication", +}; + +const BLOCK_SEO_DEFAULTS = { + targetCluster: "", + searchIntent: "", + primaryQuery: "", + secondaryQueries: "", + title: "", + description: "", + coverageNotes: "", + indexHint: "section", +}; + +const PAGE_SEO_FIELDS = [ + { path: "seo.title", label: "Title страницы", kind: "text", group: "Сниппет", min: 35, max: 70 }, + { path: "seo.description", label: "Description страницы", kind: "textarea", group: "Сниппет", min: 110, max: 170 }, + { path: "seo.canonicalUrl", label: "Canonical URL", kind: "url", group: "Индексация" }, + { + path: "seo.robots", + label: "Robots meta", + kind: "select", + group: "Индексация", + options: ["index,follow,max-image-preview:large", "noindex,nofollow", "index,follow"], + }, + { path: "seo.siteName", label: "Site name", kind: "text", group: "Open Graph" }, + { path: "seo.locale", label: "Locale", kind: "text", group: "Open Graph" }, + { path: "seo.ogImage", label: "OG image", kind: "url", group: "Open Graph" }, + { path: "seo.imageAlt", label: "OG image alt", kind: "textarea", group: "Open Graph", min: 20, max: 120 }, + { path: "seo.organizationName", label: "Organization", kind: "text", group: "Schema.org" }, + { path: "seo.organizationUrl", label: "Organization URL", kind: "url", group: "Schema.org" }, + { path: "seo.applicationCategory", label: "Application category", kind: "text", group: "Schema.org" }, +]; + +const BLOCK_SEO_FIELDS = [ + { path: "seo.targetCluster", label: "Кластер", kind: "text", group: "Семантика" }, + { path: "seo.searchIntent", label: "Интент", kind: "textarea", group: "Семантика", min: 20, max: 220 }, + { path: "seo.primaryQuery", label: "Основной запрос", kind: "text", group: "Семантика" }, + { path: "seo.secondaryQueries", label: "Смежные запросы", kind: "textarea", group: "Семантика" }, + { path: "seo.title", label: "SEO-заголовок блока", kind: "text", group: "Сниппет блока", min: 35, max: 80 }, + { path: "seo.description", label: "SEO-описание блока", kind: "textarea", group: "Сниппет блока", min: 90, max: 180 }, + { + path: "seo.indexHint", + label: "Роль в индексации", + kind: "select", + group: "Индексация", + options: ["section", "supporting", "conversion", "noindex"], + }, + { path: "seo.coverageNotes", label: "Заметки по охвату", kind: "textarea", group: "Аналитика", min: 20, max: 500 }, +]; + const el = { + modeContent: document.querySelector("#admin-mode-content"), + modeSeo: document.querySelector("#admin-mode-seo"), + sidebarTitle: document.querySelector("#sidebar-title"), + workspaceRole: document.querySelector("#workspace-role"), + editorHeading: document.querySelector("#editor-heading"), + panelKicker: document.querySelector("#content-panel-kicker"), + panelTitle: document.querySelector("#content-panel-title"), + panelNote: document.querySelector("#content-panel-note"), regions: document.querySelector("#regions"), addBlock: document.querySelector("#add-block"), reload: document.querySelector("#reload"), @@ -143,7 +219,7 @@ const STATIC_FALLBACK = { enabled: true, content: { navigation: { - logoSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", + logoSrc: "./assets/site/images/69ad964d951f9d17cc5a919e_logo-app.svg", logoAlt: "главная", brandLabel: "NODE.DC", links: [ @@ -152,7 +228,7 @@ const STATIC_FALLBACK = { { enabled: true, label: "Документация", - href: "https://docs.ssscript.app/", + href: "https://nodedc.dctouch.ru/", target: "", linkMode: "href", linkTarget: "_blank", @@ -191,9 +267,9 @@ const STATIC_FALLBACK = { href: "javascript:void(0)", linkTarget: "", targetId: "app-data", - iconSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", + iconSrc: "./assets/site/images/69ad964d951f9d17cc5a919e_logo-app.svg", iconAlt: "Иконка NODE.DC", - className: "dock-icon ssscript", + className: "dock-icon nodedc-app", iconClass: "logo", dividerBefore: false, }, @@ -203,7 +279,7 @@ const STATIC_FALLBACK = { href: "javascript:void(0)", linkTarget: "", targetId: "", - iconSrc: "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif", + iconSrc: "./assets/site/images/69a9ae818a76c773dc3cf7bc_trash.avif", iconAlt: "Белая иконка корзины.", className: "dock-icon no-bg", iconClass: "dock-app-img trash", @@ -214,11 +290,11 @@ const STATIC_FALLBACK = { }, assets: { webglModelSrc: "./assets/custom/icon.glb", - logoPng: "./assets/custom/logo.png", + logoPng: "./assets/uploads/images/Logo/dclogo_white_alpha-mqus5if2.png", logoPngAlt: "Логотип NODE.DC", - appIconSrc: "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", + appIconSrc: "./assets/site/images/69ad964d951f9d17cc5a919e_logo-app.svg", appIconAlt: "Иконка NODE.DC", - appWordmarkSrc: "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + appWordmarkSrc: "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", appWordmarkAlt: "Логотип NODE.DC", faviconSvg: "./assets/uploads/favicon/icon-adaptive.svg", faviconIco: "./assets/uploads/favicon/favicon.ico", @@ -272,7 +348,7 @@ const STATIC_FALLBACK = { targetId: "", iconSrc: "", iconAlt: "", - className: "dock-icon ssscript", + className: "dock-icon nodedc-app", iconClass: "", dividerBefore: false, }, @@ -322,7 +398,7 @@ const GROUP_COPY = { Слайдер: "Видео-превью и подписи карточек внутри горизонтального слайдера.", Скролл: "Скорость локальной прокрутки внутри блока: меньше значение — спокойнее шаг, больше — быстрее.", "Один клик": "Подблок про быстрое добавление и настройку компонентов.", - MCP: "Подблок про MCP-сервер и контекст Webflow.", + MCP: "Подблок про MCP-сервер и контекст NODE.DC.", "Окно FAQ": "Название окна FAQ и служебные подписи mail-интерфейса.", Отправитель: "Профиль отправителя в FAQ: аватар, имя и подписи письма.", FAQ: "Вопросы и ответы mail-интерфейса. Каждый пункт можно добавить, удалить и переставить.", @@ -354,7 +430,7 @@ const MEDIA_ROOT_FILTERS = [ ["assets", "Assets"], ["assets/uploads", "Uploads"], ["assets/media", "Media"], - ["assets/webflow/images", "Webflow"], + ["assets/site/images", "NODE.DC"], ["assets/custom", "Custom"], ]; const FINDER_TRASH_ICON_SVG = @@ -459,6 +535,276 @@ function setByPath(source, path, nextValue) { target[lastKey] = nextValue; } +function ensurePageSeo() { + if (!state.page) return; + state.page.seo = { + ...PAGE_SEO_DEFAULTS, + ...(state.page.seo || {}), + }; +} + +function ensureBlockSeo(block) { + if (!block || isStaticSelection()) return; + block.seo = { + ...BLOCK_SEO_DEFAULTS, + ...(block.seo || {}), + }; +} + +function ensureSeoModel() { + ensurePageSeo(); + + for (const region of state.page?.regions || []) { + for (const block of region.blocks || []) { + block.seo = { + ...BLOCK_SEO_DEFAULTS, + ...(block.seo || {}), + }; + } + } +} + +function setAdminMode(nextMode) { + const mode = nextMode === "seo" ? "seo" : "content"; + state.mode = mode; + updateAdminLayoutState({ mode }); + if (state.page) { + renderAll(); + } else { + updateAdminModeSurface(); + } +} + +function updateAdminModeSurface() { + const isSeo = state.mode === "seo"; + document.body.dataset.adminMode = state.mode; + + if (el.modeContent) el.modeContent.dataset.active = String(!isSeo); + if (el.modeSeo) el.modeSeo.dataset.active = String(isSeo); + if (el.sidebarTitle) el.sidebarTitle.textContent = isSeo ? "SEO" : "Администрирование"; + if (el.workspaceRole) el.workspaceRole.textContent = isSeo ? "SEO-режим сайта" : "Администратор сайта"; + if (el.editorHeading) el.editorHeading.textContent = isSeo ? "SEO сайта" : "Настройки сайта"; + if (el.panelKicker) el.panelKicker.textContent = isSeo ? "SEO" : "Контент"; + if (el.panelTitle) el.panelTitle.textContent = isSeo ? "Семантика и сниппеты" : "Редактируемые поля"; + if (el.panelNote) { + el.panelNote.textContent = isSeo + ? "Поля готовят страницу и секции к семантической настройке и дальнейшей автоматизации." + : "Поля сгруппированы по смысловым подблокам верстки."; + } +} + +function editorJsonPayload(block) { + if (state.mode === "seo" && isStaticSelection()) { + return state.page?.seo || {}; + } + + return block || {}; +} + +function groupedSeoFields(fields) { + const groups = new Map(); + + for (const seoField of fields) { + const groupName = seoField.group || "SEO"; + if (!groups.has(groupName)) groups.set(groupName, []); + groups.get(groupName).push(seoField); + } + + return groups; +} + +function compactText(value) { + if (value == null) return ""; + if (Array.isArray(value)) return value.map(compactText).join(" "); + if (typeof value === "object") return Object.values(value).map(compactText).join(" "); + + return String(value) + .replace(/<[^>]*>/g, " ") + .replace(/https?:\/\/\S+/g, " ") + .replace(/\s+/g, " ") + .trim(); +} + +function seoLengthStatus(value, min, max) { + const length = String(value || "").trim().length; + if (!min && !max) return { status: "info", text: length ? `${length} симв.` : "пусто" }; + if (!length) return { status: "bad", text: `пусто · цель ${min || 0}-${max || "∞"}` }; + if ((min && length < min) || (max && length > max)) { + return { status: "warn", text: `${length} симв. · цель ${min || 0}-${max || "∞"}` }; + } + return { status: "good", text: `${length} симв.` }; +} + +function createSeoMetric(label, value, status = "info") { + const item = document.createElement("div"); + const caption = document.createElement("span"); + const number = document.createElement("strong"); + + item.className = "seo-metric"; + item.dataset.status = status; + caption.textContent = label; + number.textContent = value; + item.append(caption, number); + return item; +} + +function blockTextStats(block) { + const text = compactText(block?.content || ""); + const words = text ? text.split(/\s+/).filter(Boolean).length : 0; + return { text, words, chars: text.length }; +} + +function renderSeoDiagnostics({ targetModel, fields, isStatic }) { + const diagnostics = document.createElement("section"); + const head = document.createElement("div"); + const title = document.createElement("h3"); + const desc = document.createElement("p"); + const metrics = document.createElement("div"); + + diagnostics.className = "seo-diagnostics"; + head.className = "group-head"; + title.textContent = isStatic ? "Диагностика страницы" : "Диагностика блока"; + desc.className = "group-desc"; + desc.textContent = isStatic + ? "Базовые поля, которые попадают в head, Open Graph, sitemap и structured data." + : "Черновой слой для семантики блока. Позже его сможет заполнять внешний SEO-модуль."; + head.append(title, desc); + metrics.className = "seo-metric-grid"; + + if (isStatic) { + const titleStatus = seoLengthStatus(getByPath(targetModel, "seo.title"), 35, 70); + const descriptionStatus = seoLengthStatus(getByPath(targetModel, "seo.description"), 110, 170); + const canonical = String(getByPath(targetModel, "seo.canonicalUrl") || ""); + const ogImage = String(getByPath(targetModel, "seo.ogImage") || ""); + + metrics.append( + createSeoMetric("Title", titleStatus.text, titleStatus.status), + createSeoMetric("Description", descriptionStatus.text, descriptionStatus.status), + createSeoMetric("Canonical", canonical.startsWith("https://") ? "абсолютный" : "проверить", canonical.startsWith("https://") ? "good" : "warn"), + createSeoMetric("OG image", ogImage ? "задан" : "пусто", ogImage ? "good" : "bad"), + ); + } else { + const stats = blockTextStats(targetModel); + const primaryQuery = String(getByPath(targetModel, "seo.primaryQuery") || "").trim(); + const secondary = String(getByPath(targetModel, "seo.secondaryQueries") || "") + .split(/\n|,/) + .map((item) => item.trim()) + .filter(Boolean); + const titleStatus = seoLengthStatus(getByPath(targetModel, "seo.title"), 35, 80); + + metrics.append( + createSeoMetric("Текст блока", `${stats.words} слов`, stats.words >= 40 ? "good" : "warn"), + createSeoMetric("Основной запрос", primaryQuery ? "задан" : "пусто", primaryQuery ? "good" : "bad"), + createSeoMetric("Смежные запросы", `${secondary.length}`, secondary.length ? "good" : "warn"), + createSeoMetric("SEO-заголовок", titleStatus.text, titleStatus.status), + ); + } + + diagnostics.append(head, metrics); + return diagnostics; +} + +function updateSeoFieldMeter(meter, input, config) { + if (!meter) return; + const lengthStatus = seoLengthStatus(fieldInputValue(input), config.min, config.max); + meter.dataset.status = lengthStatus.status; + meter.textContent = lengthStatus.text; +} + +function renderSeoInput({ targetModel, seoField, grid }) { + const label = document.createElement("label"); + const labelRow = document.createElement("span"); + const labelText = document.createElement("span"); + const kind = document.createElement("span"); + const path = document.createElement("span"); + const isLong = seoField.kind === "textarea"; + const input = seoField.kind === "select" ? document.createElement("select") : isLong ? document.createElement("textarea") : document.createElement("input"); + const value = getByPath(targetModel, seoField.path) ?? ""; + const meter = seoField.min || seoField.max ? document.createElement("span") : null; + + label.className = `field-control seo-field${isLong ? " wide" : ""}`; + labelRow.className = "field-label-row"; + labelText.className = "field-label-text"; + labelText.textContent = seoField.label || seoField.path; + kind.className = "field-kind"; + kind.textContent = seoField.kind || "text"; + path.className = "field-path"; + path.textContent = seoField.path; + labelRow.append(labelText, kind); + + if (seoField.kind === "select") { + const values = new Set([...(seoField.options || []), value].filter(Boolean)); + for (const optionValue of values) { + const option = document.createElement("option"); + option.value = optionValue; + option.textContent = optionValue; + input.append(option); + } + } else { + if (!isLong) { + input.autocomplete = "off"; + input.type = seoField.kind === "url" ? "url" : "text"; + } + } + + input.dataset.seoPath = seoField.path; + input.value = value; + input.placeholder = seoField.placeholder || ""; + updateSeoFieldMeter(meter, input, seoField); + + input.addEventListener(seoField.kind === "select" ? "change" : "input", () => { + setByPath(targetModel, seoField.path, fieldInputValue(input)); + updateSeoFieldMeter(meter, input, seoField); + el.json.value = JSON.stringify(editorJsonPayload(activeBlock()), null, 2); + markDirty("SEO-поля обновлены локально. Нажмите «Сохранить модель» или «Обновить index.html»."); + }); + + label.append(labelRow, input); + if (meter) { + meter.className = "seo-field-meter"; + label.append(meter); + } + label.append(path); + grid.append(label); +} + +function renderSeoFields(block) { + const isStatic = isStaticSelection(); + const targetModel = isStatic ? state.page : block; + const fields = isStatic ? PAGE_SEO_FIELDS : BLOCK_SEO_FIELDS; + + if (isStatic) ensurePageSeo(); + else ensureBlockSeo(block); + + el.contentFields.innerHTML = ""; + el.contentFields.append(renderSeoDiagnostics({ targetModel, fields, isStatic })); + + for (const [groupName, groupFields] of groupedSeoFields(fields)) { + const group = document.createElement("section"); + const head = document.createElement("div"); + const titleWrap = document.createElement("div"); + const title = document.createElement("h3"); + const desc = document.createElement("p"); + const grid = document.createElement("div"); + + group.className = "content-group seo-group"; + head.className = "group-head"; + title.textContent = groupName; + desc.className = "group-desc"; + desc.textContent = isStatic ? "Поля уровня страницы и поискового сниппета." : "Поля уровня секции для будущей семантической карты."; + titleWrap.append(title, desc); + head.append(titleWrap); + grid.className = "group-grid"; + + for (const seoField of groupFields) { + renderSeoInput({ targetModel, seoField, grid }); + } + + group.append(head, grid); + el.contentFields.append(group); + } +} + const LINK_WINDOW_TARGETS = new Set(["_blank", "_self", "_parent", "_top"]); function isWindowTarget(value) { @@ -541,7 +887,7 @@ function createDefaultDockItems(dock = {}, assets = {}) { targetId: dock.appTarget || "app-data", iconSrc: assets.appIconSrc || STATIC_FALLBACK.content.assets.appIconSrc, iconAlt: assets.appIconAlt || STATIC_FALLBACK.content.assets.appIconAlt, - className: "dock-icon ssscript", + className: "dock-icon nodedc-app", iconClass: "logo", dividerBefore: false, }, @@ -551,7 +897,7 @@ function createDefaultDockItems(dock = {}, assets = {}) { href: "javascript:void(0)", linkTarget: "", targetId: "", - iconSrc: "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif", + iconSrc: "./assets/site/images/69a9ae818a76c773dc3cf7bc_trash.avif", iconAlt: dock.trashAlt || "Белая иконка корзины.", className: "dock-icon no-bg", iconClass: "dock-app-img trash", @@ -578,7 +924,7 @@ function normalizeDock(dock, assets = {}) { targetId: item.targetId ?? fallback.targetId ?? "", iconSrc: hasOwn("iconSrc") ? item.iconSrc : fallback.iconSrc, iconAlt: hasOwn("iconAlt") ? item.iconAlt : item.alt || fallback.iconAlt, - className: item.className || fallback.className || "dock-icon ssscript", + className: item.className || fallback.className || "dock-icon nodedc-app", iconClass: hasOwn("iconClass") ? item.iconClass : fallback.iconClass || "logo", dividerBefore: Boolean(item.dividerBefore), }; @@ -1241,6 +1587,10 @@ function addBlockFromTemplate(templateKey) { block.id = uniqueBlockId(block.id); block.enabled = true; block.scopeIds = true; + block.seo = { + ...BLOCK_SEO_DEFAULTS, + ...(block.seo || {}), + }; region.blocks.push(block); state.selected = { kind: "block", regionIndex: template.regionIndex, blockIndex: region.blocks.length - 1 }; closeTemplateModal(); @@ -1268,23 +1618,29 @@ function renderEditorError(error) { } function renderEditor() { + updateAdminModeSurface(); + const region = activeRegion(); const block = activeBlock(); const isStatic = isStaticSelection(); + const isSeo = state.mode === "seo"; if (!block) { el.empty.classList.remove("hidden"); el.form.classList.add("hidden"); el.selectedRegion.textContent = "NODE.DC / Выберите блок"; - el.selectedTitle.textContent = "Контентный слой"; + el.selectedTitle.textContent = isSeo ? "SEO-слой" : "Контентный слой"; return; } el.empty.classList.add("hidden"); el.form.classList.remove("hidden"); el.form.dataset.static = String(isStatic); - el.selectedRegion.textContent = `NODE.DC / ${region.label || region.id}`; - el.selectedTitle.textContent = block.adminLabel || block.id; + el.form.dataset.mode = state.mode; + el.selectedRegion.textContent = isSeo + ? `NODE.DC / SEO / ${isStatic ? "Страница" : region.label || region.id}` + : `NODE.DC / ${region.label || region.id}`; + el.selectedTitle.textContent = isSeo ? `SEO: ${isStatic ? "страница" : block.adminLabel || block.id}` : block.adminLabel || block.id; el.id.value = block.id || ""; el.label.value = block.adminLabel || ""; el.template.value = block.template || block.type || ""; @@ -1294,15 +1650,19 @@ function renderEditor() { el.anchor.disabled = isStatic; el.enabled.disabled = isStatic; el.enabled.closest(".toggle-row").hidden = isStatic; - setStructuralControlsDisabled(isStatic); + setStructuralControlsDisabled(isStatic || isSeo); try { - renderContentFields(block); + if (isSeo) { + renderSeoFields(block); + } else { + renderContentFields(block); + } } catch (error) { renderEditorError(error); } - el.json.value = JSON.stringify(block, null, 2); + el.json.value = JSON.stringify(editorJsonPayload(block), null, 2); } function renderAll() { @@ -3703,7 +4063,9 @@ function syncBlockFromJson() { try { const parsed = JSON.parse(el.json.value); - if (isStaticSelection()) { + if (state.mode === "seo" && isStaticSelection()) { + state.page.seo = parsed; + } else if (isStaticSelection()) { state.page.staticElements = parsed; } else { const region = activeRegion(); @@ -3732,6 +4094,7 @@ async function loadPage() { state.templates = await templatesResponse.json(); ensureStaticElements(); ensureSectionsRegion(); + ensureSeoModel(); state.selected = { kind: "static" }; renderAll(); setDirty(false); @@ -3845,6 +4208,9 @@ for (const input of [el.id, el.label, el.anchor, el.enabled]) { input.addEventListener("change", syncBlockFromFields); } +el.modeContent?.addEventListener("click", () => setAdminMode("content")); +el.modeSeo?.addEventListener("click", () => setAdminMode("seo")); + el.json.addEventListener("blur", () => { if (state.filePickerActive || state.mediaUploadActive) { recoverEditorSurface(); diff --git a/admin/index.html b/admin/index.html index 7e7ffd3..fc31835 100644 --- a/admin/index.html +++ b/admin/index.html @@ -18,17 +18,14 @@
@@ -53,14 +50,14 @@ @@ -70,7 +67,7 @@
-

Настройки сайта

+

Настройки сайта

Контентный слой

@@ -160,10 +157,10 @@
-
Контент
-

Редактируемые поля

+
Контент
+

Редактируемые поля

- Поля сгруппированы по смысловым подблокам верстки. + Поля сгруппированы по смысловым подблокам верстки.
diff --git a/asset-manifest.json b/asset-manifest.json index f49f7dd..e745e84 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,6 +1,6 @@ { - "generatedAt": "2026-06-25T17:31:52.625Z", - "sourceDir": "/Users/dcconstructions/site-rescue/ssscript.app", + "generatedAt": "2026-06-27T15:32:57.156Z", + "sourceDir": "NODE.DC PromoSite sanitized asset manifest", "targetDir": "/Users/dcconstructions/Downloads/mnt/NODEDC/NODEDC_SITE", "pages": [ "index.html", @@ -11,22 +11,22 @@ "assets": [ { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69b6acdde3123ef078e2b7f3_og-img.jpg", - "localPath": "assets/webflow/images/69b6acdde3123ef078e2b7f3_og-img.jpg" + "localPath": "assets/site/images/69b6acdde3123ef078e2b7f3_og-img.jpg" }, { - "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/css/ssscript.shared.8838f69df.min.css", - "localPath": "assets/webflow/css/ssscript.shared.8838f69df.min.css" + "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/css/nodedc.shared.8838f69df.min.css", + "localPath": "assets/site/css/nodedc.shared.8838f69df.min.css" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69b83bc24411350dcdb86781_favicon.png", - "localPath": "assets/webflow/images/69b83bc24411350dcdb86781_favicon.png" + "localPath": "assets/site/images/69b83bc24411350dcdb86781_favicon.png" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69b83bc6ad9e108637556ec5_webclip.png", - "localPath": "assets/webflow/images/69b83bc6ad9e108637556ec5_webclip.png" + "localPath": "assets/site/images/69b83bc6ad9e108637556ec5_webclip.png" }, { - "url": "https://ssscript-website.vercel.app/out.css", + "url": "/out.css", "localPath": "assets/custom/css/out.css" }, { @@ -34,211 +34,195 @@ "localPath": "assets/vendor/umami-script.js" }, { - "url": "https://ssscript-website.vercel.app/app.js", + "url": "/app.js", "localPath": "assets/custom/js/app.js" }, { - "url": "https://ssscript-website.vercel.app/app.css", + "url": "/app.css", "localPath": "assets/custom/css/app.css" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad964d951f9d17cc5a919e_logo-app.svg", - "localPath": "assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg" + "localPath": "assets/site/images/69ad964d951f9d17cc5a919e_logo-app.svg" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad96a28b06b7552a339137_logtype.svg", - "localPath": "assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg" + "localPath": "assets/site/images/69ad96a28b06b7552a339137_logtype.svg" }, { - "url": "https://ssscript.dev/ssscript-website/publish-flow.mp4", + "url": "https://nodedc.dev/nodedc-website/publish-flow.mp4", "localPath": "assets/media/publish-flow.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/various-modes.mp4", + "url": "https://nodedc.dev/nodedc-website/various-modes.mp4", "localPath": "assets/media/various-modes.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/project-flow.mp4", + "url": "https://nodedc.dev/nodedc-website/project-flow.mp4", "localPath": "assets/media/project-flow.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/ai-dock-mode.mp4", + "url": "https://nodedc.dev/nodedc-website/ai-dock-mode.mp4", "localPath": "assets/media/ai-dock-mode.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/account.mp4", + "url": "https://nodedc.dev/nodedc-website/account.mp4", "localPath": "assets/media/account.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/code-edits.mp4", + "url": "https://nodedc.dev/nodedc-website/code-edits.mp4", "localPath": "assets/media/code-edits.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/dev-server.mp4", + "url": "https://nodedc.dev/nodedc-website/dev-server.mp4", "localPath": "assets/media/dev-server.mp4" }, { - "url": "https://ssscript.dev/ssscript-website/webflow-mcp.mp4", - "localPath": "assets/media/webflow-mcp.mp4" + "url": "https://nodedc.dev/nodedc-website/mcp-gateway.mp4", + "localPath": "assets/media/mcp-gateway.mp4" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3dc9256192179afb4cfdc_Frame%201.avif", - "localPath": "assets/webflow/images/69d3dc9256192179afb4cfdc_Frame 1.avif" + "localPath": "assets/site/images/69d3dc9256192179afb4cfdc_Frame 1.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif", - "localPath": "assets/webflow/images/69d3dc9256192179afb4cfdc_Frame 1-p-500.avif" + "localPath": "assets/site/images/69d3dc9256192179afb4cfdc_Frame 1-p-500.avif" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69aab66f030013f2c7177d78_mov-file.avif", - "localPath": "assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif" + "localPath": "assets/site/images/69aab66f030013f2c7177d78_mov-file.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3fba72116e87a8d145059_Frame%203174.avif", - "localPath": "assets/webflow/images/69d3fba72116e87a8d145059_Frame 3174.avif" + "localPath": "assets/site/images/69d3fba72116e87a8d145059_Frame 3174.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3fba72116e87a8d145059_Frame%203174-p-500.avif", - "localPath": "assets/webflow/images/69d3fba72116e87a8d145059_Frame 3174-p-500.avif" + "localPath": "assets/site/images/69d3fba72116e87a8d145059_Frame 3174-p-500.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3fac0d22182f930e32ec6_Frame%203175.avif", - "localPath": "assets/webflow/images/69d3fac0d22182f930e32ec6_Frame 3175.avif" + "localPath": "assets/site/images/69d3fac0d22182f930e32ec6_Frame 3175.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3fac0d22182f930e32ec6_Frame%203175-p-500.avif", - "localPath": "assets/webflow/images/69d3fac0d22182f930e32ec6_Frame 3175-p-500.avif" + "localPath": "assets/site/images/69d3fac0d22182f930e32ec6_Frame 3175-p-500.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3dc83a417451438caec72_Frame%203173.avif", - "localPath": "assets/webflow/images/69d3dc83a417451438caec72_Frame 3173.avif" + "localPath": "assets/site/images/69d3dc83a417451438caec72_Frame 3173.avif" }, { "url": "https://cdn.prod.website-files.com/69b4294bd9af8bc5d029f550/69d3dc83a417451438caec72_Frame%203173-p-500.avif", - "localPath": "assets/webflow/images/69d3dc83a417451438caec72_Frame 3173-p-500.avif" + "localPath": "assets/site/images/69d3dc83a417451438caec72_Frame 3173-p-500.avif" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69a9fb87bc56142371745926_txt-file.avif", - "localPath": "assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif" + "localPath": "assets/site/images/69a9fb87bc56142371745926_txt-file.avif" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69a9fb87bc56142371745926_txt-file-p-500.avif", - "localPath": "assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif" + "localPath": "assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69a9ae818a76c773dc3cf7bc_trash.avif", - "localPath": "assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif" + "localPath": "assets/site/images/69a9ae818a76c773dc3cf7bc_trash.avif" }, { "url": "https://d3e54v103j8qbb.cloudfront.net/js/jquery-3.5.1.min.dc5e7f18c8.js?site=69a96c45de5009e6ba9d7123", "localPath": "assets/vendor/jquery-3.5.1.min.dc5e7f18c8.js" }, { - "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/js/ssscript.schunk.7321a5097fb66f41.js", - "localPath": "assets/webflow/js/ssscript.schunk.7321a5097fb66f41.js" + "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/js/nodedc.schunk.7321a5097fb66f41.js", + "localPath": "assets/site/js/nodedc.schunk.7321a5097fb66f41.js" }, { - "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/js/ssscript.a0aa6ca1.38bff8ac21973156.js", - "localPath": "assets/webflow/js/ssscript.a0aa6ca1.38bff8ac21973156.js" + "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/js/nodedc.a0aa6ca1.38bff8ac21973156.js", + "localPath": "assets/site/js/nodedc.a0aa6ca1.38bff8ac21973156.js" }, { - "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/js/ssscript.751e0867.148dc658e77a3916.js", - "localPath": "assets/webflow/js/ssscript.751e0867.148dc658e77a3916.js" + "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/js/nodedc.751e0867.148dc658e77a3916.js", + "localPath": "assets/site/js/nodedc.751e0867.148dc658e77a3916.js" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2", - "localPath": "assets/webflow/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2" + "localPath": "assets/site/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2", - "localPath": "assets/webflow/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2" + "localPath": "assets/site/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2", - "localPath": "assets/webflow/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2" + "localPath": "assets/site/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2", - "localPath": "assets/webflow/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2" + "localPath": "assets/site/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2", - "localPath": "assets/webflow/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2" + "localPath": "assets/site/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2", - "localPath": "assets/webflow/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2" + "localPath": "assets/site/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2", - "localPath": "assets/webflow/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2" + "localPath": "assets/site/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2", - "localPath": "assets/webflow/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2" + "localPath": "assets/site/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2" }, { - "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/69d2db06ed4081cf9bdacdc4_federic0.avif", - "localPath": "assets/webflow/images/69d2db06ed4081cf9bdacdc4_federic0.avif" - }, - { - "url": "https://ssscript-website.vercel.app/public/icon.glb", + "url": "/public/icon.glb", "localPath": "assets/custom/icon.glb" }, { - "url": "https://ssscript-website.vercel.app/public/logo.png", + "url": "/public/logo.png", "localPath": "assets/custom/logo.png" }, - { - "url": "https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon-d2.89e12c322e.svg", - "localPath": "assets/vendor/webflow-badge-icon-d2.89e12c322e.svg" - }, - { - "url": "https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-text-d2.c82cec3b78.svg", - "localPath": "assets/vendor/webflow-badge-text-d2.c82cec3b78.svg" - }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2", - "localPath": "assets/webflow/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2" + "localPath": "assets/site/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2", - "localPath": "assets/webflow/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2" + "localPath": "assets/site/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2", - "localPath": "assets/webflow/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2" + "localPath": "assets/site/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2", - "localPath": "assets/webflow/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2" + "localPath": "assets/site/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2", - "localPath": "assets/webflow/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2" + "localPath": "assets/site/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2", - "localPath": "assets/webflow/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2" + "localPath": "assets/site/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2", - "localPath": "assets/webflow/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2" + "localPath": "assets/site/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2" }, { "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2", - "localPath": "assets/webflow/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2" + "localPath": "assets/site/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2" }, { - "url": "https://cdn.prod.website-files.com/69a96c45de5009e6ba9d7123/images/69d2db06ed4081cf9bdacdc4_federic0.avif", - "localPath": "assets/webflow/images/69d2db06ed4081cf9bdacdc4_federic0.avif" - }, - { - "url": "https://ssscript-website.vercel.app/assets/custom/icon.glb", + "url": "/assets/custom/icon.glb", "localPath": "assets/custom/icon.glb" }, { - "url": "https://ssscript-website.vercel.app/assets/custom/logo.png", + "url": "/assets/custom/logo.png", "localPath": "assets/custom/logo.png" } ], diff --git a/assets/custom/css/app.css b/assets/custom/css/app.css index 7b6e6d3..9bd7322 100644 --- a/assets/custom/css/app.css +++ b/assets/custom/css/app.css @@ -4,5 +4,5 @@ .project-composition .project-composition-copy{position:relative;z-index:2}.project-composition .project-composition-copy-bottom{margin-top:2.5rem}.project-composition .project-composition-copy-bottom .main-h{margin-bottom:0}@media screen and (max-width:767px){.project-composition .project-composition-hgroup{flex-flow:row;gap:1.25rem}.project-composition .project-composition-hgroup.flip{flex-flow:row-reverse}.project-composition .project-composition-hgroup .main-h.h2{font-size:2.35rem}.project-composition .project-composition-hgroup .h-txt{max-width:22ch}.project-composition .project-composition-copy-bottom{margin-top:2rem}}@media screen and (max-width:479px){.project-composition .project-composition-copy{width:86%}.project-composition .project-composition-hgroup{gap:1rem}.project-composition .project-composition-hgroup .main-h.h2{font-size:2rem}.project-composition .project-composition-hgroup .h-txt{max-width:17ch;font-size:.86rem;line-height:1.28em}} .pricing-table-section .pricing-table-shell{padding-top:12svh;padding-bottom:12svh}@media screen and (max-width:767px){.pricing-table-section .pricing-table-shell{padding-top:8svh;padding-bottom:8svh}} [data-module=notification-w][data-notification-stack-ready]{height:auto;max-height:calc(100svh - 3.2rem);overflow:visible;scrollbar-width:none;overscroll-behavior:contain}[data-module=notification-w][data-notification-stack-ready]::-webkit-scrollbar{display:none}[data-module=notification-w][data-notification-stack-ready]:not(:hover):not([data-notification-expanded=true]){height:var(--notification-collapsed-height,6.6rem);max-height:var(--notification-collapsed-height,6.6rem)}[data-module=notification-w][data-notification-stack-ready]:is(:hover,[data-notification-expanded=true]){overflow-x:visible;overflow-y:auto;padding-bottom:.2rem}[data-module=notification-w][data-notification-stack-ready]>[data-module=notification]{position:relative;z-index:var(--notification-z,1);transform:translateY(var(--notification-stack-y,0));transition:transform .3s cubic-bezier(.22,1,.36,1)}[data-module=notification-w][data-notification-stack-ready]:is(:hover,[data-notification-expanded=true])>[data-module=notification]{transform:translateY(0)} -.dock-icon.ssscript{overflow:hidden;background-color:transparent;background-image:none}.dock-icon.ssscript>img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;border-radius:inherit} -[data-module=dock]{overflow:visible}[data-module=dock] .dock-icon{position:relative;overflow:visible}[data-module=dock] .dock-icon.ssscript{overflow:visible}[data-module=dock] .dock-icon::after{content:attr(data-dock-title);position:absolute;z-index:30;left:50%;bottom:calc(100% + .64rem);max-width:14rem;transform:translate(-50%,.28rem) scale(.96);transform-origin:50% 100%;opacity:0;pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid rgba(255,255,255,.12);border-radius:.72rem;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.018)),rgba(34,34,38,.86);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 20px 60px rgba(0,0,0,.42);-webkit-backdrop-filter:blur(22px) saturate(1.15);backdrop-filter:blur(22px) saturate(1.15);color:rgba(255,255,255,.92);padding:.42rem .68rem;font-size:.68rem;font-weight:760;line-height:1;letter-spacing:0;transition:opacity .16s ease,transform .16s ease}[data-module=dock] .dock-icon:is(:hover,:focus-visible){z-index:20}[data-module=dock] .dock-icon:is(:hover,:focus-visible)::after{opacity:1;transform:translate(-50%,0) scale(1)}[data-module=dock] .dock-icon[data-dock-title=""]::after{display:none} +.dock-icon.nodedc-app{overflow:hidden;background-color:transparent;background-image:none}.dock-icon.nodedc-app>img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;border-radius:inherit} +[data-module=dock]{overflow:visible}[data-module=dock] .dock-icon{position:relative;overflow:visible}[data-module=dock] .dock-icon.nodedc-app{overflow:visible}[data-module=dock] .dock-icon::after{content:attr(data-dock-title);position:absolute;z-index:30;left:50%;bottom:calc(100% + .64rem);max-width:14rem;transform:translate(-50%,.28rem) scale(.96);transform-origin:50% 100%;opacity:0;pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid rgba(255,255,255,.12);border-radius:.72rem;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.018)),rgba(34,34,38,.86);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 20px 60px rgba(0,0,0,.42);-webkit-backdrop-filter:blur(22px) saturate(1.15);backdrop-filter:blur(22px) saturate(1.15);color:rgba(255,255,255,.92);padding:.42rem .68rem;font-size:.68rem;font-weight:760;line-height:1;letter-spacing:0;transition:opacity .16s ease,transform .16s ease}[data-module=dock] .dock-icon:is(:hover,:focus-visible){z-index:20}[data-module=dock] .dock-icon:is(:hover,:focus-visible)::after{opacity:1;transform:translate(-50%,0) scale(1)}[data-module=dock] .dock-icon[data-dock-title=""]::after{display:none} diff --git a/assets/custom/css/out.css b/assets/custom/css/out.css index 107628c..1442eb2 100644 --- a/assets/custom/css/out.css +++ b/assets/custom/css/out.css @@ -4,5 +4,5 @@ .project-composition .project-composition-copy{position:relative;z-index:2}.project-composition .project-composition-copy-bottom{margin-top:2.5rem}.project-composition .project-composition-copy-bottom .main-h{margin-bottom:0}@media screen and (max-width:767px){.project-composition .project-composition-hgroup{flex-flow:row;gap:1.25rem}.project-composition .project-composition-hgroup.flip{flex-flow:row-reverse}.project-composition .project-composition-hgroup .main-h.h2{font-size:2.35rem}.project-composition .project-composition-hgroup .h-txt{max-width:22ch}.project-composition .project-composition-copy-bottom{margin-top:2rem}}@media screen and (max-width:479px){.project-composition .project-composition-copy{width:86%}.project-composition .project-composition-hgroup{gap:1rem}.project-composition .project-composition-hgroup .main-h.h2{font-size:2rem}.project-composition .project-composition-hgroup .h-txt{max-width:17ch;font-size:.86rem;line-height:1.28em}} .pricing-table-section .pricing-table-shell{padding-top:12svh;padding-bottom:12svh}@media screen and (max-width:767px){.pricing-table-section .pricing-table-shell{padding-top:8svh;padding-bottom:8svh}} [data-module=notification-w][data-notification-stack-ready]{height:auto;max-height:calc(100svh - 3.2rem);overflow:visible;scrollbar-width:none;overscroll-behavior:contain}[data-module=notification-w][data-notification-stack-ready]::-webkit-scrollbar{display:none}[data-module=notification-w][data-notification-stack-ready]:not(:hover):not([data-notification-expanded=true]){height:var(--notification-collapsed-height,6.6rem);max-height:var(--notification-collapsed-height,6.6rem)}[data-module=notification-w][data-notification-stack-ready]:is(:hover,[data-notification-expanded=true]){overflow-x:visible;overflow-y:auto;padding-bottom:.2rem}[data-module=notification-w][data-notification-stack-ready]>[data-module=notification]{position:relative;z-index:var(--notification-z,1);transform:translateY(var(--notification-stack-y,0));transition:transform .3s cubic-bezier(.22,1,.36,1)}[data-module=notification-w][data-notification-stack-ready]:is(:hover,[data-notification-expanded=true])>[data-module=notification]{transform:translateY(0)} -.dock-icon.ssscript{overflow:hidden;background-color:transparent;background-image:none}.dock-icon.ssscript>img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;border-radius:inherit} -[data-module=dock]{overflow:visible}[data-module=dock] .dock-icon{position:relative;overflow:visible}[data-module=dock] .dock-icon.ssscript{overflow:visible}[data-module=dock] .dock-icon::after{content:attr(data-dock-title);position:absolute;z-index:30;left:50%;bottom:calc(100% + .64rem);max-width:14rem;transform:translate(-50%,.28rem) scale(.96);transform-origin:50% 100%;opacity:0;pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid rgba(255,255,255,.12);border-radius:.72rem;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.018)),rgba(34,34,38,.86);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 20px 60px rgba(0,0,0,.42);-webkit-backdrop-filter:blur(22px) saturate(1.15);backdrop-filter:blur(22px) saturate(1.15);color:rgba(255,255,255,.92);padding:.42rem .68rem;font-size:.68rem;font-weight:760;line-height:1;letter-spacing:0;transition:opacity .16s ease,transform .16s ease}[data-module=dock] .dock-icon:is(:hover,:focus-visible){z-index:20}[data-module=dock] .dock-icon:is(:hover,:focus-visible)::after{opacity:1;transform:translate(-50%,0) scale(1)}[data-module=dock] .dock-icon[data-dock-title=""]::after{display:none} +.dock-icon.nodedc-app{overflow:hidden;background-color:transparent;background-image:none}.dock-icon.nodedc-app>img{display:block;width:100%;height:100%;max-width:none;object-fit:cover;border-radius:inherit} +[data-module=dock]{overflow:visible}[data-module=dock] .dock-icon{position:relative;overflow:visible}[data-module=dock] .dock-icon.nodedc-app{overflow:visible}[data-module=dock] .dock-icon::after{content:attr(data-dock-title);position:absolute;z-index:30;left:50%;bottom:calc(100% + .64rem);max-width:14rem;transform:translate(-50%,.28rem) scale(.96);transform-origin:50% 100%;opacity:0;pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid rgba(255,255,255,.12);border-radius:.72rem;background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.018)),rgba(34,34,38,.86);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 20px 60px rgba(0,0,0,.42);-webkit-backdrop-filter:blur(22px) saturate(1.15);backdrop-filter:blur(22px) saturate(1.15);color:rgba(255,255,255,.92);padding:.42rem .68rem;font-size:.68rem;font-weight:760;line-height:1;letter-spacing:0;transition:opacity .16s ease,transform .16s ease}[data-module=dock] .dock-icon:is(:hover,:focus-visible){z-index:20}[data-module=dock] .dock-icon:is(:hover,:focus-visible)::after{opacity:1;transform:translate(-50%,0) scale(1)}[data-module=dock] .dock-icon[data-dock-title=""]::after{display:none} diff --git a/assets/custom/js/app.js b/assets/custom/js/app.js index 57f89b0..6fe024f 100644 --- a/assets/custom/js/app.js +++ b/assets/custom/js/app.js @@ -464,7 +464,7 @@ void main() { color = pow(color, vec3(1.0 / 2.2)); outColor = vec4(color, 1.0); } -`},envMap:m.texture,maskMap:_.texture,uni:{value1:O?.()??0},onFrame:(G0)=>{let D0=performance.now()*0.001,p0=i>0?D0-i:0.016;i=D0;let k=Math.sin(D0*Y)*V,v=Math.sin(D0*C)*N,X0=Math.cos(D0*C)*N,z0=U.update(),R0=z0.x+z0.dragX,r1=z0.y+z0.dragY,V1=W();if(V0=Math.max(0,V0-p0),B>0&&V0<=0&&Math.abs(V1)>=B&&M0>=1)M0=0,A0=Math.sign(V1)||1;if(M0<1){M0=Math.min(1,M0+p0/M);let C0=M0;if(i0=(1-(1-C0)*(1-C0))*Math.PI*A0*Math.sign(j||1),P0=0,M0>=1)H0+=i0,i0=0,V0=I}j0-=V1*X,j0*=z,Q0+=j0,Q0+=(0-Q0)*R,c+=(Q0-c)*F,N0+=(V1*j-N0)*0.12,W0+=(V1*L-W0)*0.12;let Y$=H0+N0,u0=F0+W0;H.centerX=Z+z0.x*K,H.centerY=q+c+k+z0.y*K;let H$=D?.()??1;return G0.setUni({value1:O?.()??0}),G0.setTransform({scale:H$,rotationY:R0*0.55+u0+X0+P0,rotationX:r1*0.4+Y$+v+i0}),G0}})}).catch((b)=>{if(!y){if(console.error("[webgl] GLB load failed:",b),b instanceof Error&&b.stack)console.error(b.stack)}}),()=>{if(y=!0,S?.destroy(),S=null,T?.destroy(),T=null,h?.destroy(),h=null,A)U.destroy()}}var XK=1;function p8(Q){XK=typeof Q==="number"&&Number.isFinite(Q)?Q:1}function rJ(){return XK}function c7(Q,$,J,H,Z){return H+(Z-H)*(Q-$)/(J-$)}function M$(Q,$,J){return Math.min(Math.max(J,Q),$)}var jK=0,CW=0;var o8=[],p7=null,aJ=null;function EW(Q){return Math.max(0,Math.min(1,Q))}function OW(Q,$,J){let{top:H,bottom:Z}=$;if(H===Z)return J[0];let q=Math.min(H,Z),K=Math.max(H,Z);if(Q<=q)return J[0];if(Q>=K)return J[1];let G=c7(Q,H,Z,J[0],J[1]),U=Math.min(J[0],J[1]),W=Math.max(J[0],J[1]);return M$(U,W,G)}function tJ(Q){return Math.abs(Q.bottom-Q.top)}function AW(Q,$){if(tJ(Q)>=$)return Q;if(Q.top<=Q.bottom)return{top:Q.top,bottom:Q.top+$};return{top:Q.top,bottom:Q.top-$}}function o7(){let Q=S0.scroll,$=0,J=0,H=0,Z=o8.map((q)=>({zone:q,bounds:q.getBounds()})).filter((q)=>Boolean(q.bounds)).sort((q,K)=>Math.min(q.bounds.top,q.bounds.bottom)-Math.min(K.bounds.top,K.bounds.bottom));for(let{zone:q,bounds:K}of Z){let G=K,U=tJ(K)*q.spanScale;if(q.reverse&&H>U)G=AW(K,H),U=tJ(G);let W=Math.min(G.top,G.bottom),X=Math.max(G.top,G.bottom);if(Q0)return;p7?.(),aJ?.(),p7=null,aJ=null}function eJ(Q){return o8.push(Q),PW(),o7(),()=>{let $=o8.indexOf(Q);if($>=0)o8.splice($,1);kW(),o7()}}function s8(){return jK}function xW(Q){let $=parseFloat(Q??"1");return Number.isFinite($)&&$>0?$:1}function BK(Q,$){let J=$.flipReverse==="true",H=J?[1,0]:[0,1],Z=xW($.flipSpan),q=u7(Q,{bounds:H,top:"bottom",bottom:J?"top":"center"});return eJ({reverse:J,outputBounds:H,spanScale:Z,getBounds:()=>q?.bounds??null})}var QH={};r(QH,{default:()=>IK});class LK{events;constructor(){this.events={}}on(Q,$){if(!this.events[Q])this.events[Q]=[];this.events[Q].push($)}once(Q,$){let J=(H)=>{$(H),this.off(Q,J)};this.on(Q,J)}off(Q,$){if(!this.events[Q])return;this.events[Q]=this.events[Q].filter((J)=>J!==$)}emit(Q,$){if(!this.events[Q])return;this.events[Q].forEach((J)=>J($))}}class z${static emitter=new LK;static state={};static createProxy(Q){return new Proxy(Q,{set:function($,J,H,Z){return z$.emitter.emit(J.toString(),H),Reflect.set($,J,H,Z)}})}static proxy=new Proxy(z$.state,{set:function(Q,$,J,H){if(typeof J==="object"&&J!==null)J=z$.createProxy(J);return z$.emitter.emit($.toString(),J),Reflect.set(Q,$,J,H)}});static on(Q,$){this.emitter.on(Q,$)}static once(Q,$){this.emitter.once(Q,$)}static off(Q,$){this.emitter.off(Q,$)}}var wW={get(Q,$){if(typeof $==="string"&&$ in z$)return z$[$].bind(z$);return Q[$]},set(Q,$,J,H){return Reflect.set(z$.proxy,$,J,H)}},y$=new Proxy(z$.proxy,wW);function IK(Q,$){y$.on("SOMETHING",(J)=>{console.log("something",J)}),Mq(async()=>{await n.to(Q,{duration:0.2,backgroundColor:"green"})}),Iq(async()=>{await n.to(Q,{duration:1,backgroundColor:"blue"}),await n.to(Q,{duration:1,autoAlpha:0})},{element:Q}),jq(()=>{}),t9(()=>{})}var JH={};r(JH,{default:()=>MK});function MK(Q,$){let H=new Intl.DateTimeFormat("en-US",{weekday:"short",month:"short",day:"numeric"}).formatToParts(new Date),Z=H.find((U)=>U.type==="weekday")?.value??"",q=H.find((U)=>U.type==="month")?.value??"",K=H.find((U)=>U.type==="day")?.value??"",G=`${Z} ${q} ${K}`;Q.textContent=G}var HH={};r(HH,{default:()=>zK});function zK(Q,$){let J=Array.from(Q.children).filter((D)=>D instanceof HTMLElement);if(!J.length)return;let H=Q.style.height,Z=Q.style.maxHeight,q=Q.style.overflow,K=Math.max(Q.offsetHeight,1),G=J.map((D)=>({transform:D.style.transform,transformOrigin:D.style.transformOrigin,willChange:D.style.willChange,width:D.style.width,height:D.style.height,minWidth:D.style.minWidth,minHeight:D.style.minHeight})),U=J.map((D)=>{let O=D.getBoundingClientRect();return{width:Math.max(O.width,1),height:Math.max(O.height,1)}}),W=J.map(()=>({current:1,target:1})),X=J.length>=2?J.length-2:-1,j=0,L=0,B=0,M=0,I=!1,z=0;Q.style.height=`${K}px`,Q.style.maxHeight=`${K}px`,Q.style.overflow="visible";for(let D of J)D.style.transformOrigin="center bottom",D.style.willChange="width,height";let R=()=>{if(!z)z=requestAnimationFrame(V)},F=(D=!0)=>{for(let O=0;O0.003)P.target=_}if(D)R()},V=()=>{z=0;let D=!1;if(I){if(B+=(j-B)*0.5,M+=(L-M)*0.5,Math.abs(j-B)>0.1||Math.abs(L-M)>0.1)D=!0;F(!1)}for(let O=0;O0.001)D=!0;else P.current=P.target;let w=U[O],x=w.width*P.current,S=w.height*P.current;A.style.width=`${x}px`,A.style.height=`${S}px`,A.style.minWidth=`${x}px`,A.style.minHeight=`${S}px`,A.style.transform="translateZ(0)"}if(D)R()},Y=(D)=>{let O=!I;I=!0;let{clientX:A,clientY:P}=D;if(!O){let w=Math.abs(A-j),x=Math.abs(P-L);if(w<2&&x<2)return}if(j=A,L=P,O){B=j,M=L,F();return}R()},N=()=>{I=!1;for(let D of W)D.target=1;R()},C=()=>{if(!I)return;F()};return Q.addEventListener("pointerenter",Y),Q.addEventListener("pointermove",Y),Q.addEventListener("pointerleave",N),window.addEventListener("resize",C),()=>{if(Q.removeEventListener("pointerenter",Y),Q.removeEventListener("pointermove",Y),Q.removeEventListener("pointerleave",N),window.removeEventListener("resize",C),z)cancelAnimationFrame(z);Q.style.height=H,Q.style.maxHeight=Z,Q.style.overflow=q;for(let D=0;DYK});function YK(Q){let $=Q.contentEditable,J=Q.style.userSelect,H=Q.style.outline,Z=Q.style.boxShadow,q=Q.getAttribute("tabindex"),K=Q.getAttribute("role");if(Q.contentEditable="true",Q.style.userSelect="text",Q.style.outline="none",Q.style.boxShadow="none",q===null)Q.tabIndex=0;if(K===null)Q.setAttribute("role","textbox");let G=(U)=>{U.stopPropagation()};return Q.addEventListener("pointerdown",G),()=>{if(Q.removeEventListener("pointerdown",G),Q.contentEditable=$,Q.style.userSelect=J,Q.style.outline=H,Q.style.boxShadow=Z,q===null)Q.removeAttribute("tabindex");else Q.setAttribute("tabindex",q);if(K===null)Q.removeAttribute("role");else Q.setAttribute("role",K)}}var qH={};r(qH,{default:()=>FK});function NK(Q){if(Q==="0")return 0;if(!Q.endsWith("px"))return null;let $=Number(Q.slice(0,-2));return Number.isFinite($)?$:null}function DK(Q){let $=Q.trim();if(!$||$==="none")return null;let J=$.split(/[\s,]+/).filter(Boolean);if(!J.length)return null;let H=NK(J[0]),Z=NK(J[1]??"0");if(H===null||Z===null)return null;return[H,Z]}function SW(Q){let $=Q.trim();if(!$||$==="none")return null;if($.startsWith("matrix3d(")&&$.endsWith(")")){let J=$.slice(9,-1).split(",").map((H)=>Number(H.trim()));if(J.length===16&&J.every(Number.isFinite))return[J[12],J[13]]}if($.startsWith("matrix(")&&$.endsWith(")")){let J=$.slice(7,-1).split(",").map((H)=>Number(H.trim()));if(J.length===6&&J.every(Number.isFinite))return[J[4],J[5]]}return null}function bW(Q){let $=DK(Q.style.translate);if($)return $;let J=getComputedStyle(Q),H=DK(J.translate);if(H)return H;let Z=SW(J.transform);if(Z)return Z;return[0,0]}function FK(Q,$){let J=Array.from(Q.querySelectorAll("[data-spread]"));if(!J.length)return;let{innerWidth:H,innerHeight:Z}=window,q=new Map,K=new Map,G=1;J.forEach((W,X)=>{if(W.closest("[data-module='app']"))return;let j=X*0.05*Z,L=(Math.random()*2-1)*0.02*H,B=(Math.random()*2-1)*0.02*Z;q.set(W,W.style.translate),K.set(W,W.style.zIndex);let M=Number.parseInt(W.style.zIndex||"",10);if(Number.isFinite(M))G=Math.max(G,M+1);let[I,z]=bW(W);W.style.translate=`${I+L}px ${z+j+B}px`});let U=(W)=>{if(!(W.target instanceof HTMLElement))return;let X=W.target.closest("[data-spread]");if(!X)return;if(!Q.contains(X))return;if(X.closest("[data-module='app']"))return;X.style.zIndex=String(G),G+=1};return Q.addEventListener("pointerdown",U,!0),()=>{Q.removeEventListener("pointerdown",U,!0),q.forEach((W,X)=>{X.style.translate=W}),K.forEach((W,X)=>{X.style.zIndex=W})}}var KH={};r(KH,{default:()=>VK});function VK(Q,$){let J=Array.from(Q.children);if(J.length===0)return;return n.to(J,{scale:1,duration:0.4,stagger:0.08,ease:"expo.out"}),()=>{n.killTweensOf(J)}}var BH={};r(BH,{default:()=>SK});function GH(Q){if(!Q||typeof Q!=="string")return{isValid:!1,normalizedUrl:"",error:"No URL provided"};let $=Q.trim();if($.endsWith("/"))$=$.slice(0,-1);if($.startsWith("http://")||$.startsWith("https://"))try{let H=new URL($);if(!H.hostname||!H.protocol)return{isValid:!1,normalizedUrl:"",error:"Invalid URL format"};return{isValid:!0,normalizedUrl:H.protocol==="https:"?$:$.replace("http://","https://")}}catch(H){return{isValid:!1,normalizedUrl:"",error:"Invalid URL format"}}let J=`https://${$}`;try{if(!new URL(J).hostname)return{isValid:!1,normalizedUrl:"",error:"Invalid hostname"};return{isValid:!0,normalizedUrl:J}}catch(H){return{isValid:!1,normalizedUrl:"",error:"Invalid URL format"}}}function RK(Q){if(typeof process==="undefined")return null;let $=GH(process.env[Q]);if(!$.isValid)return console.warn(`⚠️ Invalid ${Q}: ${$.error}`),null;return $.normalizedUrl}var UH="/api/",TW=!0,yW="https://ssscript-website.vercel.app",CK=6545,EK=6546,n1=null;function hW(){if(n1)return n1;try{let $=window.__API_ORIGIN__;if($)return n1=new URL($).origin,n1;let J=window.location.hostname;if(!(J==="localhost"||J==="127.0.0.1"))return n1=yW,n1;let Z=document.currentScript,q=Z?.src?new URL(Z.src).origin:window.location.origin,K=new URL(q);if(K.hostname==="localhost"&&Number(K.port)===CK)q=`${K.protocol}//${K.hostname}:${EK}`;return n1=q,n1}catch{}try{return n1=new URL("https://ssscript-website-pj5rav8w5-federicoooo.vercel.app").origin,n1}catch{}let Q=window.location.origin;try{let $=new URL(Q);if($.hostname==="localhost"&&Number($.port)===CK)Q=`${$.protocol}//${$.hostname}:${EK}`}catch{}return n1=Q,n1}var s7=(Q="")=>{if(typeof window!=="undefined")return`${hW()}${UH}${Q}`;if(typeof process!=="undefined"&&!1)return`${TW?"https":"http"}://localhost:6546${UH}${Q}`;let J=RK("VERCEL_URL");if(!J)throw new Error("VERCEL_URL is not set or invalid. Please set a valid URL in your environment variables.");return`${J}${UH}${Q}`};var OK=["Email","email","EMAIL","emailAddress","email_address"],AK=["FNAME","firstName","first_name","First-Name"],PK=["Name","name"];function H8(Q){return Q.trim().toLowerCase().replace(/\s+/g,"-")}function WH(Q,$){let J=new Set($.map((H)=>H8(H)));for(let[H,Z]of Object.entries(Q)){if(typeof Z!=="string")continue;let q=Z.trim();if(!q)continue;if(J.has(H8(H)))return q}return""}function fW(Q){let $=WH(Q,OK);if(!$)return null;let J=WH(Q,AK),H=WH(Q,PK);if(!J&&H)J=H.split(/\s+/)[0]??"";return{email:$,firstName:J,fullName:H||void 0}}function h$(Q){let $=fW(Q);if(!$)return;try{localStorage.setItem("form-shared-contact",JSON.stringify($))}catch{}}function l7(){try{let Q=[];for(let $=0;$H8(Q))),vW=new Set(AK.map((Q)=>H8(Q))),uW=new Set(PK.map((Q)=>H8(Q)));function i7(Q){let $=null;try{$=localStorage.getItem("form-shared-contact")}catch{return}if(!$)return;let J;try{J=JSON.parse($)}catch{return}if(!J?.email)return;Q.querySelectorAll("[name]").forEach((Z)=>{if(!Z.name||Z.disabled)return;if(typeof Z.value!=="string")return;if(Z.value.trim()!=="")return;let q=H8(Z.name);if(_W.has(q)){Z.value=J.email;return}if(vW.has(q)&&J.firstName){Z.value=J.firstName;return}if(uW.has(q)){if(J.fullName)Z.value=J.fullName;else if(J.firstName)Z.value=J.firstName}})}var mW="form-beta",dW=5000,wK="form-draft",XH="form:draft-sync",jH="form:submitted-sync",gW=(Q,$,J,H)=>{let Z=H.draftStorageKey||H.storageKey||J.id||window.location.pathname;return`${wK}:${Q}:${Z}`},cW=(Q,$,J)=>{let H=J.submittedStorageKey||J.storageKey||$.id||window.location.pathname;return`${wK}:${Q}:${H}:submitted`},kK=(Q)=>{let $={},J=Array.from(Q.querySelectorAll("[name]")),H=new Map;return J.forEach((Z)=>{if(Z instanceof HTMLInputElement&&Z.type==="checkbox"&&!Z.disabled)H.set(Z.name,(H.get(Z.name)??0)+1)}),J.forEach((Z)=>{if(!Z.name||Z.disabled)return;if(Z instanceof HTMLInputElement&&(Z.type==="file"||Z.type==="password"))return;if(Z instanceof HTMLInputElement&&Z.type==="radio"){if(Z.checked)$[Z.name]=Z.value;return}if(Z instanceof HTMLInputElement&&Z.type==="checkbox"){if((H.get(Z.name)??0)>1){let K=Array.isArray($[Z.name])?$[Z.name]:[];if(Z.checked)K.push(Z.value);$[Z.name]=K}else $[Z.name]=Z.checked;return}if(Z instanceof HTMLSelectElement&&Z.multiple){$[Z.name]=Array.from(Z.selectedOptions).map((q)=>q.value);return}$[Z.name]=Z.value}),$},pW=(Q)=>{return Object.values(Q).some(($)=>{if(Array.isArray($))return $.length>0;if(typeof $==="boolean")return $;return $.trim().length>0})},xK=(Q,$)=>{Array.from(Q.querySelectorAll("[name]")).forEach((H)=>{let Z=$[H.name];if(typeof Z==="undefined")return;if(H instanceof HTMLInputElement&&H.type==="radio"){H.checked=String(Z)===H.value;return}if(H instanceof HTMLInputElement&&H.type==="checkbox"){if(Array.isArray(Z))H.checked=Z.includes(H.value);else if(typeof Z==="boolean")H.checked=Z;else H.checked=Z===H.value;return}if(H instanceof HTMLSelectElement&&H.multiple){let q=Array.isArray(Z)?Z:[String(Z)];Array.from(H.options).forEach((K)=>{K.selected=q.includes(K.value)});return}H.value=Array.isArray(Z)?Z[0]??"":String(Z)})};function SK(Q,$){let J=Q.querySelector("form");if(!J)return;let H=Q.querySelector("[data-form]"),Z=Q.querySelector("[data-success]"),q=Q.querySelector("[data-failure]"),K=Q.querySelector("[data-form-error]"),G=($.action??$.api??mW).replace(/^\/api\/?/,""),U=s7(G),W=gW(G,J,Q,$),X=cW(G,Q,$);J.action=U,J.method="post",J.removeAttribute("target");let j=()=>{if(!K)return;K.textContent="",K.hidden=!0},L=null,B=()=>{if(L!=null)clearTimeout(L),L=null},M=()=>{try{return localStorage.getItem(X)==="1"}catch{return!1}},I=()=>{if(B(),q)q.style.display="none";if(M())return;if(H)H.hidden=!1,H.style.display="";else J.hidden=!1;let D=Q.querySelector("[data-form-moderation-message]");if(D)D.hidden=!0,D.textContent="";j()},z=(D)=>{if(B(),j(),Z)Z.style.display="none";if(H)H.hidden=!0,H.style.display="none";else J.hidden=!0;if(q){q.style.display="flex";let O=q.querySelector("[data-failure-message]");if(O&&D)O.textContent=D}L=window.setTimeout(()=>{L=null,I()},dW)},R=(D)=>{if(D){if(B(),q)q.style.display="none"}if(H)H.hidden=D,H.style.display=D?"none":"";else J.hidden=D;if(Z)Z.style.display=D?"flex":"none";if(D)j()};try{let D=localStorage.getItem(X)==="1";R(D)}catch(D){console.warn("[form-beta] failed to restore submitted state",D)}let F=()=>{try{let D=kK(J);if(h$(D),pW(D))localStorage.setItem(W,JSON.stringify(D));else localStorage.removeItem(W);window.dispatchEvent(new CustomEvent(XH,{detail:{key:W,data:D,sourceForm:J}}))}catch(D){console.warn("[form-beta] failed to save draft",D)}},V=(D)=>{let O=D;if(!O.detail||O.detail.key!==W||O.detail.sourceForm===J)return;xK(J,O.detail.data)};try{let D=localStorage.getItem(W);if(D){let O=JSON.parse(D);xK(J,O),h$(O)}}catch(D){console.warn("[form-beta] failed to restore draft",D)}if(l7(),i7(J),q)q.style.display="none";let Y=async(D)=>{D.preventDefault(),D.stopPropagation(),D.stopImmediatePropagation(),j(),I();let O=D.currentTarget,A=O.querySelector("[type='submit']"),P=A?.textContent??"";if(A){if(A.disabled=!0,A.dataset.loading)A.textContent=A.dataset.loading}try{let w=new FormData(O),x=O.enctype==="multipart/form-data",S;if(x)S=w;else{let m=new URLSearchParams;w.forEach((_,E)=>{m.append(E,_ instanceof File?_.name:String(_))}),S=m.toString()}let T=x?{}:{"Content-Type":"application/x-www-form-urlencoded"};console.log("[form-beta] submitting to api",{actionUrl:U,isMultipart:x});let h=await fetch(U,{method:"POST",headers:T,body:x?w:S}),y=await h.json().catch(()=>({}));if(console.log("[form-beta] response received",{ok:h.ok,status:h.status,json:y}),!h.ok){let m=(y&&typeof y.error==="string"?y.error:null)??`Request failed: ${h.status}`,_=h.status===400;J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:m,flagged:_}}));return}let b=y?.debug?.persistDraftAfterSubmit===!0;if(h$(kK(O)),b)console.log("[form-beta] DEBUG: draft persisted after submit",{draftKey:W});else localStorage.removeItem(W),console.log("[form-beta] draft cleared after submit");if(localStorage.setItem(X,"1"),R(!0),window.dispatchEvent(new CustomEvent(jH,{detail:{key:X,isSubmitted:!0,sourceForm:J}})),$.successRedirect){window.location.href=$.successRedirect;return}J.dispatchEvent(new CustomEvent("form:success",{bubbles:!0,detail:y})),console.log("[form-beta] success event dispatched")}catch(w){console.error("[form-beta] submit failed",{actionUrl:U,err:w}),J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:w instanceof Error?w.message:"Submit failed",flagged:!1}}))}finally{if(A)A.disabled=!1,A.textContent=P}},N=(D)=>{let O=D,A=O.detail?.message??(O.detail?.flagged?"Your message was not accepted.":"Something went wrong. Please try again.");if(q){z(A);return}if(O.detail?.flagged){let P=Q.querySelector("[data-form-moderation-message]");if(P)P.textContent=A,P.hidden=!1;else{let w=document.createElement("div");w.setAttribute("data-form-moderation-message",""),w.className="form-moderation-message",w.textContent=A,Q.prepend(w)}J.hidden=!0;return}if(K)K.textContent=A,K.hidden=!1};Q.addEventListener("form:error",N),window.addEventListener(XH,V);let C=(D)=>{let O=D;if(!O.detail||O.detail.key!==X||O.detail.sourceForm===J)return;R(O.detail.isSubmitted)};return window.addEventListener(jH,C),J.addEventListener("input",F),J.addEventListener("change",F),J.addEventListener("submit",Y,{capture:!0}),()=>{B(),Q.removeEventListener("form:error",N),window.removeEventListener(XH,V),window.removeEventListener(jH,C),J.removeEventListener("input",F),J.removeEventListener("change",F),J.removeEventListener("submit",Y,{capture:!0})}}var MH={};r(MH,{default:()=>hK});var oW="form",sW=5000,yK="form-draft",LH="form:draft-sync",IH="form:submitted-sync",lW=(Q,$,J,H)=>{let Z=H.draftStorageKey||H.storageKey||J.id||window.location.pathname;return`${yK}:${Q}:${Z}`},iW=(Q,$,J)=>{let H=J.submittedStorageKey||J.storageKey||$.id||window.location.pathname;return`${yK}:${Q}:${H}:submitted`},bK=(Q)=>{let $={},J=Array.from(Q.querySelectorAll("[name]")),H=new Map;return J.forEach((Z)=>{if(Z instanceof HTMLInputElement&&Z.type==="checkbox"&&!Z.disabled)H.set(Z.name,(H.get(Z.name)??0)+1)}),J.forEach((Z)=>{if(!Z.name||Z.disabled)return;if(Z instanceof HTMLInputElement&&(Z.type==="file"||Z.type==="password"))return;if(Z instanceof HTMLInputElement&&Z.type==="radio"){if(Z.checked)$[Z.name]=Z.value;return}if(Z instanceof HTMLInputElement&&Z.type==="checkbox"){if((H.get(Z.name)??0)>1){let K=Array.isArray($[Z.name])?$[Z.name]:[];if(Z.checked)K.push(Z.value);$[Z.name]=K}else $[Z.name]=Z.checked;return}if(Z instanceof HTMLSelectElement&&Z.multiple){$[Z.name]=Array.from(Z.selectedOptions).map((q)=>q.value);return}$[Z.name]=Z.value}),$},nW=(Q)=>{return Object.values(Q).some(($)=>{if(Array.isArray($))return $.length>0;if(typeof $==="boolean")return $;return $.trim().length>0})},TK=(Q,$)=>{Array.from(Q.querySelectorAll("[name]")).forEach((H)=>{let Z=$[H.name];if(typeof Z==="undefined")return;if(H instanceof HTMLInputElement&&H.type==="radio"){H.checked=String(Z)===H.value;return}if(H instanceof HTMLInputElement&&H.type==="checkbox"){if(Array.isArray(Z))H.checked=Z.includes(H.value);else if(typeof Z==="boolean")H.checked=Z;else H.checked=Z===H.value;return}if(H instanceof HTMLSelectElement&&H.multiple){let q=Array.isArray(Z)?Z:[String(Z)];Array.from(H.options).forEach((K)=>{K.selected=q.includes(K.value)});return}H.value=Array.isArray(Z)?Z[0]??"":String(Z)})};function hK(Q,$){let J=Q.querySelector("form");if(!J)return;let H=Q.querySelector("[data-form]"),Z=Q.querySelector("[data-success]"),q=Q.querySelector("[data-failure]"),K=($.action??$.api??oW).replace(/^\/api\/?/,""),G=s7(K),U=lW(K,J,Q,$),W=iW(K,Q,$);J.action=G,J.method="post";let X=null,j=()=>{if(X!=null)clearTimeout(X),X=null},L=()=>{try{return localStorage.getItem(W)==="1"}catch{return!1}},B=()=>{if(j(),q)q.style.display="none";if(L())return;if(H)H.hidden=!1,H.style.display="";else J.hidden=!1;let N=Q.querySelector("[data-form-moderation-message]");if(N)N.hidden=!0,N.textContent=""},M=(N)=>{if(j(),Z)Z.style.display="none";if(H)H.hidden=!0,H.style.display="none";else J.hidden=!0;if(q){q.style.display="flex";let C=q.querySelector("[data-failure-message]");if(C&&N)C.textContent=N}X=window.setTimeout(()=>{X=null,B()},sW)},I=(N)=>{if(N){if(j(),q)q.style.display="none"}if(H)H.hidden=N,H.style.display=N?"none":"";else J.hidden=N;if(Z)Z.style.display=N?"flex":"none"};try{let N=localStorage.getItem(W)==="1";I(N)}catch(N){console.warn("[form] failed to restore submitted state",N)}let z=()=>{try{let N=bK(J);if(h$(N),nW(N))localStorage.setItem(U,JSON.stringify(N));else localStorage.removeItem(U);window.dispatchEvent(new CustomEvent(LH,{detail:{key:U,data:N,sourceForm:J}}))}catch(N){console.warn("[form] failed to save draft",N)}},R=(N)=>{let C=N;if(!C.detail||C.detail.key!==U||C.detail.sourceForm===J)return;TK(J,C.detail.data)};try{let N=localStorage.getItem(U);if(N){let C=JSON.parse(N);TK(J,C),h$(C)}}catch(N){console.warn("[form] failed to restore draft",N)}if(l7(),i7(J),q)q.style.display="none";let F=async(N)=>{N.preventDefault(),N.stopPropagation(),N.stopImmediatePropagation(),B();let C=N.currentTarget,D=C.querySelector("[type='submit']"),O=D?.textContent??"";if(D){if(D.disabled=!0,D.dataset.loading)D.textContent=D.dataset.loading}try{let A=new FormData(C),P=C.enctype==="multipart/form-data",w;if(P)w=A;else{let y=new URLSearchParams;A.forEach((b,m)=>{y.append(m,b instanceof File?b.name:String(b))}),w=y.toString()}let x=P?{}:{"Content-Type":"application/x-www-form-urlencoded"};console.log("[form] submitting to api",{actionUrl:G,isMultipart:P});let S=await fetch(G,{method:"POST",headers:x,body:P?A:w}),T=await S.json().catch(()=>({}));if(console.log("[form] response received",{ok:S.ok,status:S.status,json:T}),!S.ok){let y=(T&&typeof T.error==="string"?T.error:null)??`Request failed: ${S.status}`,b=S.status===400;J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:y,flagged:b}}));return}let h=T?.debug?.persistDraftAfterSubmit===!0;if(h$(bK(C)),h)console.log("[form] DEBUG: draft persisted after submit",{draftKey:U});else localStorage.removeItem(U),console.log("[form] draft cleared after submit");if(localStorage.setItem(W,"1"),I(!0),window.dispatchEvent(new CustomEvent(IH,{detail:{key:W,isSubmitted:!0,sourceForm:J}})),$.successRedirect){window.location.href=$.successRedirect;return}J.dispatchEvent(new CustomEvent("form:success",{bubbles:!0,detail:T})),console.log("[form] success event dispatched")}catch(A){console.error("[form] submit failed",{actionUrl:G,err:A}),J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:A instanceof Error?A.message:"Submit failed",flagged:!1}}))}finally{if(D)D.disabled=!1,D.textContent=O}},V=(N)=>{let C=N,D=C.detail?.message??(C.detail?.flagged?"Your message was not accepted.":"Something went wrong. Please try again.");if(q){M(D);return}if(!C.detail?.flagged)return;let O=Q.querySelector("[data-form-moderation-message]");if(O)O.textContent=D,O.hidden=!1;else{let A=document.createElement("div");A.setAttribute("data-form-moderation-message",""),A.className="form-moderation-message",A.textContent=D,Q.prepend(A)}J.hidden=!0};Q.addEventListener("form:error",V),window.addEventListener(LH,R);let Y=(N)=>{let C=N;if(!C.detail||C.detail.key!==W||C.detail.sourceForm===J)return;I(C.detail.isSubmitted)};return window.addEventListener(IH,Y),J.addEventListener("input",z),J.addEventListener("change",z),J.addEventListener("submit",F,{capture:!0}),()=>{j(),Q.removeEventListener("form:error",V),window.removeEventListener(LH,R),window.removeEventListener(IH,Y),J.removeEventListener("input",z),J.removeEventListener("change",z),J.removeEventListener("submit",F,{capture:!0})}}var zH={};r(zH,{default:()=>fK});var rW="[data-remaining-spots]",l8=/^\d+$/;function aW(Q){let $=Number.isInteger(Q)?Q:Math.max(0,Math.floor(Q));return`${$} ${$===1?"Spot":"Spots"} Left`}function tW(Q){if(typeof Q==="number"&&Number.isFinite(Q))return Q;if(typeof Q==="string"){let Z=Q.trim();if(l8.test(Z))return parseInt(Z,10);return null}if(!Q||typeof Q!=="object")return null;let $=Q,J=$.remainingSpots??$.remaining??$.spots??$.count??$.available;if(typeof J==="number"&&Number.isFinite(J))return J;if(typeof J==="string"){let Z=J.trim();if(l8.test(Z))return parseInt(Z,10)}let H=$.message??$.text??$.label??$.remainingLabel??$.remainingText;if(typeof H==="string"){let Z=H.trim();if(l8.test(Z))return parseInt(Z,10)}return null}function eW(Q){if(typeof Q==="string"){let H=Q.trim();if(H&&!l8.test(H))return H;return null}if(!Q||typeof Q!=="object")return null;let $=Q,J=$.message??$.text??$.label??$.remainingLabel??$.remainingText;if(typeof J==="string"&&J.trim()&&!l8.test(J.trim()))return J.trim();return null}function $4(Q,$){if($ instanceof Error&&$.name==="AbortError")return;let J=$ instanceof Error?$.name:typeof $,H=$ instanceof Error?$.message:String($),Z=["[founders-spots] Fetch failed",` url: ${Q}`,` page: ${typeof window!=="undefined"?window.location.href:"(ssr)"}`,` error: ${J}: ${H}`];if(H==="Failed to fetch"||J==="TypeError")Z.push(" likely: CORS (API must send Access-Control-Allow-Origin for this origin), mixed content (https page cannot call http API), DNS/adblock, or offline.");console.warn(Z.join(` +`},envMap:m.texture,maskMap:_.texture,uni:{value1:O?.()??0},onFrame:(G0)=>{let D0=performance.now()*0.001,p0=i>0?D0-i:0.016;i=D0;let k=Math.sin(D0*Y)*V,v=Math.sin(D0*C)*N,X0=Math.cos(D0*C)*N,z0=U.update(),R0=z0.x+z0.dragX,r1=z0.y+z0.dragY,V1=W();if(V0=Math.max(0,V0-p0),B>0&&V0<=0&&Math.abs(V1)>=B&&M0>=1)M0=0,A0=Math.sign(V1)||1;if(M0<1){M0=Math.min(1,M0+p0/M);let C0=M0;if(i0=(1-(1-C0)*(1-C0))*Math.PI*A0*Math.sign(j||1),P0=0,M0>=1)H0+=i0,i0=0,V0=I}j0-=V1*X,j0*=z,Q0+=j0,Q0+=(0-Q0)*R,c+=(Q0-c)*F,N0+=(V1*j-N0)*0.12,W0+=(V1*L-W0)*0.12;let Y$=H0+N0,u0=F0+W0;H.centerX=Z+z0.x*K,H.centerY=q+c+k+z0.y*K;let H$=D?.()??1;return G0.setUni({value1:O?.()??0}),G0.setTransform({scale:H$,rotationY:R0*0.55+u0+X0+P0,rotationX:r1*0.4+Y$+v+i0}),G0}})}).catch((b)=>{if(!y){if(console.error("[webgl] GLB load failed:",b),b instanceof Error&&b.stack)console.error(b.stack)}}),()=>{if(y=!0,S?.destroy(),S=null,T?.destroy(),T=null,h?.destroy(),h=null,A)U.destroy()}}var XK=1;function p8(Q){XK=typeof Q==="number"&&Number.isFinite(Q)?Q:1}function rJ(){return XK}function c7(Q,$,J,H,Z){return H+(Z-H)*(Q-$)/(J-$)}function M$(Q,$,J){return Math.min(Math.max(J,Q),$)}var jK=0,CW=0;var o8=[],p7=null,aJ=null;function EW(Q){return Math.max(0,Math.min(1,Q))}function OW(Q,$,J){let{top:H,bottom:Z}=$;if(H===Z)return J[0];let q=Math.min(H,Z),K=Math.max(H,Z);if(Q<=q)return J[0];if(Q>=K)return J[1];let G=c7(Q,H,Z,J[0],J[1]),U=Math.min(J[0],J[1]),W=Math.max(J[0],J[1]);return M$(U,W,G)}function tJ(Q){return Math.abs(Q.bottom-Q.top)}function AW(Q,$){if(tJ(Q)>=$)return Q;if(Q.top<=Q.bottom)return{top:Q.top,bottom:Q.top+$};return{top:Q.top,bottom:Q.top-$}}function o7(){let Q=S0.scroll,$=0,J=0,H=0,Z=o8.map((q)=>({zone:q,bounds:q.getBounds()})).filter((q)=>Boolean(q.bounds)).sort((q,K)=>Math.min(q.bounds.top,q.bounds.bottom)-Math.min(K.bounds.top,K.bounds.bottom));for(let{zone:q,bounds:K}of Z){let G=K,U=tJ(K)*q.spanScale;if(q.reverse&&H>U)G=AW(K,H),U=tJ(G);let W=Math.min(G.top,G.bottom),X=Math.max(G.top,G.bottom);if(Q0)return;p7?.(),aJ?.(),p7=null,aJ=null}function eJ(Q){return o8.push(Q),PW(),o7(),()=>{let $=o8.indexOf(Q);if($>=0)o8.splice($,1);kW(),o7()}}function s8(){return jK}function xW(Q){let $=parseFloat(Q??"1");return Number.isFinite($)&&$>0?$:1}function BK(Q,$){let J=$.flipReverse==="true",H=J?[1,0]:[0,1],Z=xW($.flipSpan),q=u7(Q,{bounds:H,top:"bottom",bottom:J?"top":"center"});return eJ({reverse:J,outputBounds:H,spanScale:Z,getBounds:()=>q?.bounds??null})}var QH={};r(QH,{default:()=>IK});class LK{events;constructor(){this.events={}}on(Q,$){if(!this.events[Q])this.events[Q]=[];this.events[Q].push($)}once(Q,$){let J=(H)=>{$(H),this.off(Q,J)};this.on(Q,J)}off(Q,$){if(!this.events[Q])return;this.events[Q]=this.events[Q].filter((J)=>J!==$)}emit(Q,$){if(!this.events[Q])return;this.events[Q].forEach((J)=>J($))}}class z${static emitter=new LK;static state={};static createProxy(Q){return new Proxy(Q,{set:function($,J,H,Z){return z$.emitter.emit(J.toString(),H),Reflect.set($,J,H,Z)}})}static proxy=new Proxy(z$.state,{set:function(Q,$,J,H){if(typeof J==="object"&&J!==null)J=z$.createProxy(J);return z$.emitter.emit($.toString(),J),Reflect.set(Q,$,J,H)}});static on(Q,$){this.emitter.on(Q,$)}static once(Q,$){this.emitter.once(Q,$)}static off(Q,$){this.emitter.off(Q,$)}}var wW={get(Q,$){if(typeof $==="string"&&$ in z$)return z$[$].bind(z$);return Q[$]},set(Q,$,J,H){return Reflect.set(z$.proxy,$,J,H)}},y$=new Proxy(z$.proxy,wW);function IK(Q,$){y$.on("SOMETHING",(J)=>{console.log("something",J)}),Mq(async()=>{await n.to(Q,{duration:0.2,backgroundColor:"green"})}),Iq(async()=>{await n.to(Q,{duration:1,backgroundColor:"blue"}),await n.to(Q,{duration:1,autoAlpha:0})},{element:Q}),jq(()=>{}),t9(()=>{})}var JH={};r(JH,{default:()=>MK});function MK(Q,$){let H=new Intl.DateTimeFormat("en-US",{weekday:"short",month:"short",day:"numeric"}).formatToParts(new Date),Z=H.find((U)=>U.type==="weekday")?.value??"",q=H.find((U)=>U.type==="month")?.value??"",K=H.find((U)=>U.type==="day")?.value??"",G=`${Z} ${q} ${K}`;Q.textContent=G}var HH={};r(HH,{default:()=>zK});function zK(Q,$){let J=Array.from(Q.children).filter((D)=>D instanceof HTMLElement);if(!J.length)return;let H=Q.style.height,Z=Q.style.maxHeight,q=Q.style.overflow,K=Math.max(Q.offsetHeight,1),G=J.map((D)=>({transform:D.style.transform,transformOrigin:D.style.transformOrigin,willChange:D.style.willChange,width:D.style.width,height:D.style.height,minWidth:D.style.minWidth,minHeight:D.style.minHeight})),U=J.map((D)=>{let O=D.getBoundingClientRect();return{width:Math.max(O.width,1),height:Math.max(O.height,1)}}),W=J.map(()=>({current:1,target:1})),X=J.length>=2?J.length-2:-1,j=0,L=0,B=0,M=0,I=!1,z=0;Q.style.height=`${K}px`,Q.style.maxHeight=`${K}px`,Q.style.overflow="visible";for(let D of J)D.style.transformOrigin="center bottom",D.style.willChange="width,height";let R=()=>{if(!z)z=requestAnimationFrame(V)},F=(D=!0)=>{for(let O=0;O0.003)P.target=_}if(D)R()},V=()=>{z=0;let D=!1;if(I){if(B+=(j-B)*0.5,M+=(L-M)*0.5,Math.abs(j-B)>0.1||Math.abs(L-M)>0.1)D=!0;F(!1)}for(let O=0;O0.001)D=!0;else P.current=P.target;let w=U[O],x=w.width*P.current,S=w.height*P.current;A.style.width=`${x}px`,A.style.height=`${S}px`,A.style.minWidth=`${x}px`,A.style.minHeight=`${S}px`,A.style.transform="translateZ(0)"}if(D)R()},Y=(D)=>{let O=!I;I=!0;let{clientX:A,clientY:P}=D;if(!O){let w=Math.abs(A-j),x=Math.abs(P-L);if(w<2&&x<2)return}if(j=A,L=P,O){B=j,M=L,F();return}R()},N=()=>{I=!1;for(let D of W)D.target=1;R()},C=()=>{if(!I)return;F()};return Q.addEventListener("pointerenter",Y),Q.addEventListener("pointermove",Y),Q.addEventListener("pointerleave",N),window.addEventListener("resize",C),()=>{if(Q.removeEventListener("pointerenter",Y),Q.removeEventListener("pointermove",Y),Q.removeEventListener("pointerleave",N),window.removeEventListener("resize",C),z)cancelAnimationFrame(z);Q.style.height=H,Q.style.maxHeight=Z,Q.style.overflow=q;for(let D=0;DYK});function YK(Q){let $=Q.contentEditable,J=Q.style.userSelect,H=Q.style.outline,Z=Q.style.boxShadow,q=Q.getAttribute("tabindex"),K=Q.getAttribute("role");if(Q.contentEditable="true",Q.style.userSelect="text",Q.style.outline="none",Q.style.boxShadow="none",q===null)Q.tabIndex=0;if(K===null)Q.setAttribute("role","textbox");let G=(U)=>{U.stopPropagation()};return Q.addEventListener("pointerdown",G),()=>{if(Q.removeEventListener("pointerdown",G),Q.contentEditable=$,Q.style.userSelect=J,Q.style.outline=H,Q.style.boxShadow=Z,q===null)Q.removeAttribute("tabindex");else Q.setAttribute("tabindex",q);if(K===null)Q.removeAttribute("role");else Q.setAttribute("role",K)}}var qH={};r(qH,{default:()=>FK});function NK(Q){if(Q==="0")return 0;if(!Q.endsWith("px"))return null;let $=Number(Q.slice(0,-2));return Number.isFinite($)?$:null}function DK(Q){let $=Q.trim();if(!$||$==="none")return null;let J=$.split(/[\s,]+/).filter(Boolean);if(!J.length)return null;let H=NK(J[0]),Z=NK(J[1]??"0");if(H===null||Z===null)return null;return[H,Z]}function SW(Q){let $=Q.trim();if(!$||$==="none")return null;if($.startsWith("matrix3d(")&&$.endsWith(")")){let J=$.slice(9,-1).split(",").map((H)=>Number(H.trim()));if(J.length===16&&J.every(Number.isFinite))return[J[12],J[13]]}if($.startsWith("matrix(")&&$.endsWith(")")){let J=$.slice(7,-1).split(",").map((H)=>Number(H.trim()));if(J.length===6&&J.every(Number.isFinite))return[J[4],J[5]]}return null}function bW(Q){let $=DK(Q.style.translate);if($)return $;let J=getComputedStyle(Q),H=DK(J.translate);if(H)return H;let Z=SW(J.transform);if(Z)return Z;return[0,0]}function FK(Q,$){let J=Array.from(Q.querySelectorAll("[data-spread]"));if(!J.length)return;let{innerWidth:H,innerHeight:Z}=window,q=new Map,K=new Map,G=1;J.forEach((W,X)=>{if(W.closest("[data-module='app']"))return;let j=X*0.05*Z,L=(Math.random()*2-1)*0.02*H,B=(Math.random()*2-1)*0.02*Z;q.set(W,W.style.translate),K.set(W,W.style.zIndex);let M=Number.parseInt(W.style.zIndex||"",10);if(Number.isFinite(M))G=Math.max(G,M+1);let[I,z]=bW(W);W.style.translate=`${I+L}px ${z+j+B}px`});let U=(W)=>{if(!(W.target instanceof HTMLElement))return;let X=W.target.closest("[data-spread]");if(!X)return;if(!Q.contains(X))return;if(X.closest("[data-module='app']"))return;X.style.zIndex=String(G),G+=1};return Q.addEventListener("pointerdown",U,!0),()=>{Q.removeEventListener("pointerdown",U,!0),q.forEach((W,X)=>{X.style.translate=W}),K.forEach((W,X)=>{X.style.zIndex=W})}}var KH={};r(KH,{default:()=>VK});function VK(Q,$){let J=Array.from(Q.children);if(J.length===0)return;return n.to(J,{scale:1,duration:0.4,stagger:0.08,ease:"expo.out"}),()=>{n.killTweensOf(J)}}var BH={};r(BH,{default:()=>SK});function GH(Q){if(!Q||typeof Q!=="string")return{isValid:!1,normalizedUrl:"",error:"No URL provided"};let $=Q.trim();if($.endsWith("/"))$=$.slice(0,-1);if($.startsWith("http://")||$.startsWith("https://"))try{let H=new URL($);if(!H.hostname||!H.protocol)return{isValid:!1,normalizedUrl:"",error:"Invalid URL format"};return{isValid:!0,normalizedUrl:H.protocol==="https:"?$:$.replace("http://","https://")}}catch(H){return{isValid:!1,normalizedUrl:"",error:"Invalid URL format"}}let J=`https://${$}`;try{if(!new URL(J).hostname)return{isValid:!1,normalizedUrl:"",error:"Invalid hostname"};return{isValid:!0,normalizedUrl:J}}catch(H){return{isValid:!1,normalizedUrl:"",error:"Invalid URL format"}}}function RK(Q){if(typeof process==="undefined")return null;let $=GH(process.env[Q]);if(!$.isValid)return console.warn(`⚠️ Invalid ${Q}: ${$.error}`),null;return $.normalizedUrl}var UH="/api/",TW=!0,yW=typeof window!=="undefined"?window.location.origin:"",CK=6545,EK=6546,n1=null;function hW(){if(n1)return n1;try{let $=window.__API_ORIGIN__;if($)return n1=new URL($).origin,n1;let J=window.location.hostname;if(!(J==="localhost"||J==="127.0.0.1"))return n1=yW,n1;let Z=document.currentScript,q=Z?.src?new URL(Z.src).origin:window.location.origin,K=new URL(q);if(K.hostname==="localhost"&&Number(K.port)===CK)q=`${K.protocol}//${K.hostname}:${EK}`;return n1=q,n1}catch{}try{return n1=window.location.origin,n1}catch{}let Q=window.location.origin;try{let $=new URL(Q);if($.hostname==="localhost"&&Number($.port)===CK)Q=`${$.protocol}//${$.hostname}:${EK}`}catch{}return n1=Q,n1}var s7=(Q="")=>{if(typeof window!=="undefined")return`${hW()}${UH}${Q}`;if(typeof process!=="undefined"&&!1)return`${TW?"https":"http"}://localhost:6546${UH}${Q}`;let J=RK("VERCEL_URL");if(!J)throw new Error("VERCEL_URL is not set or invalid. Please set a valid URL in your environment variables.");return`${J}${UH}${Q}`};var OK=["Email","email","EMAIL","emailAddress","email_address"],AK=["FNAME","firstName","first_name","First-Name"],PK=["Name","name"];function H8(Q){return Q.trim().toLowerCase().replace(/\s+/g,"-")}function WH(Q,$){let J=new Set($.map((H)=>H8(H)));for(let[H,Z]of Object.entries(Q)){if(typeof Z!=="string")continue;let q=Z.trim();if(!q)continue;if(J.has(H8(H)))return q}return""}function fW(Q){let $=WH(Q,OK);if(!$)return null;let J=WH(Q,AK),H=WH(Q,PK);if(!J&&H)J=H.split(/\s+/)[0]??"";return{email:$,firstName:J,fullName:H||void 0}}function h$(Q){let $=fW(Q);if(!$)return;try{localStorage.setItem("form-shared-contact",JSON.stringify($))}catch{}}function l7(){try{let Q=[];for(let $=0;$H8(Q))),vW=new Set(AK.map((Q)=>H8(Q))),uW=new Set(PK.map((Q)=>H8(Q)));function i7(Q){let $=null;try{$=localStorage.getItem("form-shared-contact")}catch{return}if(!$)return;let J;try{J=JSON.parse($)}catch{return}if(!J?.email)return;Q.querySelectorAll("[name]").forEach((Z)=>{if(!Z.name||Z.disabled)return;if(typeof Z.value!=="string")return;if(Z.value.trim()!=="")return;let q=H8(Z.name);if(_W.has(q)){Z.value=J.email;return}if(vW.has(q)&&J.firstName){Z.value=J.firstName;return}if(uW.has(q)){if(J.fullName)Z.value=J.fullName;else if(J.firstName)Z.value=J.firstName}})}var mW="form-beta",dW=5000,wK="form-draft",XH="form:draft-sync",jH="form:submitted-sync",gW=(Q,$,J,H)=>{let Z=H.draftStorageKey||H.storageKey||J.id||window.location.pathname;return`${wK}:${Q}:${Z}`},cW=(Q,$,J)=>{let H=J.submittedStorageKey||J.storageKey||$.id||window.location.pathname;return`${wK}:${Q}:${H}:submitted`},kK=(Q)=>{let $={},J=Array.from(Q.querySelectorAll("[name]")),H=new Map;return J.forEach((Z)=>{if(Z instanceof HTMLInputElement&&Z.type==="checkbox"&&!Z.disabled)H.set(Z.name,(H.get(Z.name)??0)+1)}),J.forEach((Z)=>{if(!Z.name||Z.disabled)return;if(Z instanceof HTMLInputElement&&(Z.type==="file"||Z.type==="password"))return;if(Z instanceof HTMLInputElement&&Z.type==="radio"){if(Z.checked)$[Z.name]=Z.value;return}if(Z instanceof HTMLInputElement&&Z.type==="checkbox"){if((H.get(Z.name)??0)>1){let K=Array.isArray($[Z.name])?$[Z.name]:[];if(Z.checked)K.push(Z.value);$[Z.name]=K}else $[Z.name]=Z.checked;return}if(Z instanceof HTMLSelectElement&&Z.multiple){$[Z.name]=Array.from(Z.selectedOptions).map((q)=>q.value);return}$[Z.name]=Z.value}),$},pW=(Q)=>{return Object.values(Q).some(($)=>{if(Array.isArray($))return $.length>0;if(typeof $==="boolean")return $;return $.trim().length>0})},xK=(Q,$)=>{Array.from(Q.querySelectorAll("[name]")).forEach((H)=>{let Z=$[H.name];if(typeof Z==="undefined")return;if(H instanceof HTMLInputElement&&H.type==="radio"){H.checked=String(Z)===H.value;return}if(H instanceof HTMLInputElement&&H.type==="checkbox"){if(Array.isArray(Z))H.checked=Z.includes(H.value);else if(typeof Z==="boolean")H.checked=Z;else H.checked=Z===H.value;return}if(H instanceof HTMLSelectElement&&H.multiple){let q=Array.isArray(Z)?Z:[String(Z)];Array.from(H.options).forEach((K)=>{K.selected=q.includes(K.value)});return}H.value=Array.isArray(Z)?Z[0]??"":String(Z)})};function SK(Q,$){let J=Q.querySelector("form");if(!J)return;let H=Q.querySelector("[data-form]"),Z=Q.querySelector("[data-success]"),q=Q.querySelector("[data-failure]"),K=Q.querySelector("[data-form-error]"),G=($.action??$.api??mW).replace(/^\/api\/?/,""),U=s7(G),W=gW(G,J,Q,$),X=cW(G,Q,$);J.action=U,J.method="post",J.removeAttribute("target");let j=()=>{if(!K)return;K.textContent="",K.hidden=!0},L=null,B=()=>{if(L!=null)clearTimeout(L),L=null},M=()=>{try{return localStorage.getItem(X)==="1"}catch{return!1}},I=()=>{if(B(),q)q.style.display="none";if(M())return;if(H)H.hidden=!1,H.style.display="";else J.hidden=!1;let D=Q.querySelector("[data-form-moderation-message]");if(D)D.hidden=!0,D.textContent="";j()},z=(D)=>{if(B(),j(),Z)Z.style.display="none";if(H)H.hidden=!0,H.style.display="none";else J.hidden=!0;if(q){q.style.display="flex";let O=q.querySelector("[data-failure-message]");if(O&&D)O.textContent=D}L=window.setTimeout(()=>{L=null,I()},dW)},R=(D)=>{if(D){if(B(),q)q.style.display="none"}if(H)H.hidden=D,H.style.display=D?"none":"";else J.hidden=D;if(Z)Z.style.display=D?"flex":"none";if(D)j()};try{let D=localStorage.getItem(X)==="1";R(D)}catch(D){console.warn("[form-beta] failed to restore submitted state",D)}let F=()=>{try{let D=kK(J);if(h$(D),pW(D))localStorage.setItem(W,JSON.stringify(D));else localStorage.removeItem(W);window.dispatchEvent(new CustomEvent(XH,{detail:{key:W,data:D,sourceForm:J}}))}catch(D){console.warn("[form-beta] failed to save draft",D)}},V=(D)=>{let O=D;if(!O.detail||O.detail.key!==W||O.detail.sourceForm===J)return;xK(J,O.detail.data)};try{let D=localStorage.getItem(W);if(D){let O=JSON.parse(D);xK(J,O),h$(O)}}catch(D){console.warn("[form-beta] failed to restore draft",D)}if(l7(),i7(J),q)q.style.display="none";let Y=async(D)=>{D.preventDefault(),D.stopPropagation(),D.stopImmediatePropagation(),j(),I();let O=D.currentTarget,A=O.querySelector("[type='submit']"),P=A?.textContent??"";if(A){if(A.disabled=!0,A.dataset.loading)A.textContent=A.dataset.loading}try{let w=new FormData(O),x=O.enctype==="multipart/form-data",S;if(x)S=w;else{let m=new URLSearchParams;w.forEach((_,E)=>{m.append(E,_ instanceof File?_.name:String(_))}),S=m.toString()}let T=x?{}:{"Content-Type":"application/x-www-form-urlencoded"};console.log("[form-beta] submitting to api",{actionUrl:U,isMultipart:x});let h=await fetch(U,{method:"POST",headers:T,body:x?w:S}),y=await h.json().catch(()=>({}));if(console.log("[form-beta] response received",{ok:h.ok,status:h.status,json:y}),!h.ok){let m=(y&&typeof y.error==="string"?y.error:null)??`Request failed: ${h.status}`,_=h.status===400;J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:m,flagged:_}}));return}let b=y?.debug?.persistDraftAfterSubmit===!0;if(h$(kK(O)),b)console.log("[form-beta] DEBUG: draft persisted after submit",{draftKey:W});else localStorage.removeItem(W),console.log("[form-beta] draft cleared after submit");if(localStorage.setItem(X,"1"),R(!0),window.dispatchEvent(new CustomEvent(jH,{detail:{key:X,isSubmitted:!0,sourceForm:J}})),$.successRedirect){window.location.href=$.successRedirect;return}J.dispatchEvent(new CustomEvent("form:success",{bubbles:!0,detail:y})),console.log("[form-beta] success event dispatched")}catch(w){console.error("[form-beta] submit failed",{actionUrl:U,err:w}),J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:w instanceof Error?w.message:"Submit failed",flagged:!1}}))}finally{if(A)A.disabled=!1,A.textContent=P}},N=(D)=>{let O=D,A=O.detail?.message??(O.detail?.flagged?"Your message was not accepted.":"Something went wrong. Please try again.");if(q){z(A);return}if(O.detail?.flagged){let P=Q.querySelector("[data-form-moderation-message]");if(P)P.textContent=A,P.hidden=!1;else{let w=document.createElement("div");w.setAttribute("data-form-moderation-message",""),w.className="form-moderation-message",w.textContent=A,Q.prepend(w)}J.hidden=!0;return}if(K)K.textContent=A,K.hidden=!1};Q.addEventListener("form:error",N),window.addEventListener(XH,V);let C=(D)=>{let O=D;if(!O.detail||O.detail.key!==X||O.detail.sourceForm===J)return;R(O.detail.isSubmitted)};return window.addEventListener(jH,C),J.addEventListener("input",F),J.addEventListener("change",F),J.addEventListener("submit",Y,{capture:!0}),()=>{B(),Q.removeEventListener("form:error",N),window.removeEventListener(XH,V),window.removeEventListener(jH,C),J.removeEventListener("input",F),J.removeEventListener("change",F),J.removeEventListener("submit",Y,{capture:!0})}}var MH={};r(MH,{default:()=>hK});var oW="form",sW=5000,yK="form-draft",LH="form:draft-sync",IH="form:submitted-sync",lW=(Q,$,J,H)=>{let Z=H.draftStorageKey||H.storageKey||J.id||window.location.pathname;return`${yK}:${Q}:${Z}`},iW=(Q,$,J)=>{let H=J.submittedStorageKey||J.storageKey||$.id||window.location.pathname;return`${yK}:${Q}:${H}:submitted`},bK=(Q)=>{let $={},J=Array.from(Q.querySelectorAll("[name]")),H=new Map;return J.forEach((Z)=>{if(Z instanceof HTMLInputElement&&Z.type==="checkbox"&&!Z.disabled)H.set(Z.name,(H.get(Z.name)??0)+1)}),J.forEach((Z)=>{if(!Z.name||Z.disabled)return;if(Z instanceof HTMLInputElement&&(Z.type==="file"||Z.type==="password"))return;if(Z instanceof HTMLInputElement&&Z.type==="radio"){if(Z.checked)$[Z.name]=Z.value;return}if(Z instanceof HTMLInputElement&&Z.type==="checkbox"){if((H.get(Z.name)??0)>1){let K=Array.isArray($[Z.name])?$[Z.name]:[];if(Z.checked)K.push(Z.value);$[Z.name]=K}else $[Z.name]=Z.checked;return}if(Z instanceof HTMLSelectElement&&Z.multiple){$[Z.name]=Array.from(Z.selectedOptions).map((q)=>q.value);return}$[Z.name]=Z.value}),$},nW=(Q)=>{return Object.values(Q).some(($)=>{if(Array.isArray($))return $.length>0;if(typeof $==="boolean")return $;return $.trim().length>0})},TK=(Q,$)=>{Array.from(Q.querySelectorAll("[name]")).forEach((H)=>{let Z=$[H.name];if(typeof Z==="undefined")return;if(H instanceof HTMLInputElement&&H.type==="radio"){H.checked=String(Z)===H.value;return}if(H instanceof HTMLInputElement&&H.type==="checkbox"){if(Array.isArray(Z))H.checked=Z.includes(H.value);else if(typeof Z==="boolean")H.checked=Z;else H.checked=Z===H.value;return}if(H instanceof HTMLSelectElement&&H.multiple){let q=Array.isArray(Z)?Z:[String(Z)];Array.from(H.options).forEach((K)=>{K.selected=q.includes(K.value)});return}H.value=Array.isArray(Z)?Z[0]??"":String(Z)})};function hK(Q,$){let J=Q.querySelector("form");if(!J)return;let H=Q.querySelector("[data-form]"),Z=Q.querySelector("[data-success]"),q=Q.querySelector("[data-failure]"),K=($.action??$.api??oW).replace(/^\/api\/?/,""),G=s7(K),U=lW(K,J,Q,$),W=iW(K,Q,$);J.action=G,J.method="post";let X=null,j=()=>{if(X!=null)clearTimeout(X),X=null},L=()=>{try{return localStorage.getItem(W)==="1"}catch{return!1}},B=()=>{if(j(),q)q.style.display="none";if(L())return;if(H)H.hidden=!1,H.style.display="";else J.hidden=!1;let N=Q.querySelector("[data-form-moderation-message]");if(N)N.hidden=!0,N.textContent=""},M=(N)=>{if(j(),Z)Z.style.display="none";if(H)H.hidden=!0,H.style.display="none";else J.hidden=!0;if(q){q.style.display="flex";let C=q.querySelector("[data-failure-message]");if(C&&N)C.textContent=N}X=window.setTimeout(()=>{X=null,B()},sW)},I=(N)=>{if(N){if(j(),q)q.style.display="none"}if(H)H.hidden=N,H.style.display=N?"none":"";else J.hidden=N;if(Z)Z.style.display=N?"flex":"none"};try{let N=localStorage.getItem(W)==="1";I(N)}catch(N){console.warn("[form] failed to restore submitted state",N)}let z=()=>{try{let N=bK(J);if(h$(N),nW(N))localStorage.setItem(U,JSON.stringify(N));else localStorage.removeItem(U);window.dispatchEvent(new CustomEvent(LH,{detail:{key:U,data:N,sourceForm:J}}))}catch(N){console.warn("[form] failed to save draft",N)}},R=(N)=>{let C=N;if(!C.detail||C.detail.key!==U||C.detail.sourceForm===J)return;TK(J,C.detail.data)};try{let N=localStorage.getItem(U);if(N){let C=JSON.parse(N);TK(J,C),h$(C)}}catch(N){console.warn("[form] failed to restore draft",N)}if(l7(),i7(J),q)q.style.display="none";let F=async(N)=>{N.preventDefault(),N.stopPropagation(),N.stopImmediatePropagation(),B();let C=N.currentTarget,D=C.querySelector("[type='submit']"),O=D?.textContent??"";if(D){if(D.disabled=!0,D.dataset.loading)D.textContent=D.dataset.loading}try{let A=new FormData(C),P=C.enctype==="multipart/form-data",w;if(P)w=A;else{let y=new URLSearchParams;A.forEach((b,m)=>{y.append(m,b instanceof File?b.name:String(b))}),w=y.toString()}let x=P?{}:{"Content-Type":"application/x-www-form-urlencoded"};console.log("[form] submitting to api",{actionUrl:G,isMultipart:P});let S=await fetch(G,{method:"POST",headers:x,body:P?A:w}),T=await S.json().catch(()=>({}));if(console.log("[form] response received",{ok:S.ok,status:S.status,json:T}),!S.ok){let y=(T&&typeof T.error==="string"?T.error:null)??`Request failed: ${S.status}`,b=S.status===400;J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:y,flagged:b}}));return}let h=T?.debug?.persistDraftAfterSubmit===!0;if(h$(bK(C)),h)console.log("[form] DEBUG: draft persisted after submit",{draftKey:U});else localStorage.removeItem(U),console.log("[form] draft cleared after submit");if(localStorage.setItem(W,"1"),I(!0),window.dispatchEvent(new CustomEvent(IH,{detail:{key:W,isSubmitted:!0,sourceForm:J}})),$.successRedirect){window.location.href=$.successRedirect;return}J.dispatchEvent(new CustomEvent("form:success",{bubbles:!0,detail:T})),console.log("[form] success event dispatched")}catch(A){console.error("[form] submit failed",{actionUrl:G,err:A}),J.dispatchEvent(new CustomEvent("form:error",{bubbles:!0,detail:{message:A instanceof Error?A.message:"Submit failed",flagged:!1}}))}finally{if(D)D.disabled=!1,D.textContent=O}},V=(N)=>{let C=N,D=C.detail?.message??(C.detail?.flagged?"Your message was not accepted.":"Something went wrong. Please try again.");if(q){M(D);return}if(!C.detail?.flagged)return;let O=Q.querySelector("[data-form-moderation-message]");if(O)O.textContent=D,O.hidden=!1;else{let A=document.createElement("div");A.setAttribute("data-form-moderation-message",""),A.className="form-moderation-message",A.textContent=D,Q.prepend(A)}J.hidden=!0};Q.addEventListener("form:error",V),window.addEventListener(LH,R);let Y=(N)=>{let C=N;if(!C.detail||C.detail.key!==W||C.detail.sourceForm===J)return;I(C.detail.isSubmitted)};return window.addEventListener(IH,Y),J.addEventListener("input",z),J.addEventListener("change",z),J.addEventListener("submit",F,{capture:!0}),()=>{j(),Q.removeEventListener("form:error",V),window.removeEventListener(LH,R),window.removeEventListener(IH,Y),J.removeEventListener("input",z),J.removeEventListener("change",z),J.removeEventListener("submit",F,{capture:!0})}}var zH={};r(zH,{default:()=>fK});var rW="[data-remaining-spots]",l8=/^\d+$/;function aW(Q){let $=Number.isInteger(Q)?Q:Math.max(0,Math.floor(Q));return`${$} ${$===1?"Spot":"Spots"} Left`}function tW(Q){if(typeof Q==="number"&&Number.isFinite(Q))return Q;if(typeof Q==="string"){let Z=Q.trim();if(l8.test(Z))return parseInt(Z,10);return null}if(!Q||typeof Q!=="object")return null;let $=Q,J=$.remainingSpots??$.remaining??$.spots??$.count??$.available;if(typeof J==="number"&&Number.isFinite(J))return J;if(typeof J==="string"){let Z=J.trim();if(l8.test(Z))return parseInt(Z,10)}let H=$.message??$.text??$.label??$.remainingLabel??$.remainingText;if(typeof H==="string"){let Z=H.trim();if(l8.test(Z))return parseInt(Z,10)}return null}function eW(Q){if(typeof Q==="string"){let H=Q.trim();if(H&&!l8.test(H))return H;return null}if(!Q||typeof Q!=="object")return null;let $=Q,J=$.message??$.text??$.label??$.remainingLabel??$.remainingText;if(typeof J==="string"&&J.trim()&&!l8.test(J.trim()))return J.trim();return null}function $4(Q,$){if($ instanceof Error&&$.name==="AbortError")return;let J=$ instanceof Error?$.name:typeof $,H=$ instanceof Error?$.message:String($),Z=["[founders-spots] Fetch failed",` url: ${Q}`,` page: ${typeof window!=="undefined"?window.location.href:"(ssr)"}`,` error: ${J}: ${H}`];if(H==="Failed to fetch"||J==="TypeError")Z.push(" likely: CORS (API must send Access-Control-Allow-Origin for this origin), mixed content (https page cannot call http API), DNS/adblock, or offline.");console.warn(Z.join(` `),$)}function fK(Q,$){let{url:J}=$,H=GH(J);if(!H.isValid){console.warn("[founders-spots] Invalid data-url:",J,H.error);return}let Z=H.normalizedUrl,q=Q.querySelector(rW)??Q,K=new AbortController;return(async()=>{try{let G=await fetch(Z,{signal:K.signal,headers:{Accept:"application/json"}});if(!G.ok){let j="";try{let L=await G.clone().text();j=L.length>280?`${L.slice(0,280)}…`:L}catch{}console.warn(["[founders-spots] Non-OK response",` url: ${Z}`,` status: ${G.status} ${G.statusText}`,j?` body: ${j}`:""].filter(Boolean).join(` `));return}let U;try{U=await G.json()}catch(j){console.warn(["[founders-spots] Response was not valid JSON",` url: ${Z}`,` content-type: ${G.headers.get("content-type")??"(none)"}`,j instanceof Error?` parse: ${j.name}: ${j.message}`:` parse: ${String(j)}`].join(` `));return}let W=tW(U);if(W!==null){q.textContent=aW(W);return}let X=eW(U);if(X!==null)q.textContent=X}catch(G){$4(Z,G)}})(),()=>K.abort()}var NH={};r(NH,{default:()=>n7});var YH={};r(YH,{default:()=>n7});function n7(Q,$){let J=ZK(Q,{uni:{value1:1},shaders:{fragment:` diff --git a/assets/site/css/nodedc.shared.8838f69df.min.css b/assets/site/css/nodedc.shared.8838f69df.min.css new file mode 100644 index 0000000..5426aad --- /dev/null +++ b/assets/site/css/nodedc.shared.8838f69df.min.css @@ -0,0 +1 @@ +html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-family:sans-serif}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{vertical-align:baseline;display:inline-block}audio:not([controls]){height:0;display:none}[hidden],template{display:none}a{background-color:#0000}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@font-face{font-family:nodedc-icons;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBiUAAAC8AAAAYGNtYXDpP+a4AAABHAAAAFxnYXNwAAAAEAAAAXgAAAAIZ2x5ZmhS2XEAAAGAAAADHGhlYWQTFw3HAAAEnAAAADZoaGVhCXYFgQAABNQAAAAkaG10eCe4A1oAAAT4AAAAMGxvY2EDtALGAAAFKAAAABptYXhwABAAPgAABUQAAAAgbmFtZSoCsMsAAAVkAAABznBvc3QAAwAAAAAHNAAAACAAAwP4AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAQAAAAAwACAACAAQAAQAg5gPpA//9//8AAAAAACDmAOkA//3//wAB/+MaBBcIAAMAAQAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEBIAAAAyADgAAFAAAJAQcJARcDIP5AQAGA/oBAAcABwED+gP6AQAABAOAAAALgA4AABQAAEwEXCQEH4AHAQP6AAYBAAcABwED+gP6AQAAAAwDAAOADQALAAA8AHwAvAAABISIGHQEUFjMhMjY9ATQmByEiBh0BFBYzITI2PQE0JgchIgYdARQWMyEyNj0BNCYDIP3ADRMTDQJADRMTDf3ADRMTDQJADRMTDf3ADRMTDQJADRMTAsATDSANExMNIA0TwBMNIA0TEw0gDRPAEw0gDRMTDSANEwAAAAABAJ0AtAOBApUABQAACQIHCQEDJP7r/upcAXEBcgKU/usBFVz+fAGEAAAAAAL//f+9BAMDwwAEAAkAABcBJwEXAwE3AQdpA5ps/GZsbAOabPxmbEMDmmz8ZmwDmvxmbAOabAAAAgAA/8AEAAPAAB0AOwAABSInLgEnJjU0Nz4BNzYzMTIXHgEXFhUUBw4BBwYjNTI3PgE3NjU0Jy4BJyYjMSIHDgEHBhUUFx4BFxYzAgBqXV6LKCgoKIteXWpqXV6LKCgoKIteXWpVSktvICEhIG9LSlVVSktvICEhIG9LSlVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoZiEgb0tKVVVKS28gISEgb0tKVVVKS28gIQABAAABwAIAA8AAEgAAEzQ3PgE3NjMxFSIHDgEHBhUxIwAoKIteXWpVSktvICFmAcBqXV6LKChmISBvS0pVAAAAAgAA/8AFtgPAADIAOgAAARYXHgEXFhUUBw4BBwYHIxUhIicuAScmNTQ3PgE3NjMxOAExNDc+ATc2MzIXHgEXFhcVATMJATMVMzUEjD83NlAXFxYXTjU1PQL8kz01Nk8XFxcXTzY1PSIjd1BQWlJJSXInJw3+mdv+2/7c25MCUQYcHFg5OUA/ODlXHBwIAhcXTzY1PTw1Nk8XF1tQUHcjIhwcYUNDTgL+3QFt/pOTkwABAAAAAQAAmM7nP18PPPUACwQAAAAAANciZKUAAAAA1yJkpf/9/70FtgPDAAAACAACAAAAAAAAAAEAAAPA/8AAAAW3//3//QW2AAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAASAEAADgBAAAwAQAAJ0EAP/9BAAAAAQAAAAFtwAAAAAAAAAKABQAHgAyAEYAjACiAL4BFgE2AY4AAAABAAAADAA8AAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADQAAAAEAAAAAAAIABwCWAAEAAAAAAAMADQBIAAEAAAAAAAQADQCrAAEAAAAAAAUACwAnAAEAAAAAAAYADQBvAAEAAAAAAAoAGgDSAAMAAQQJAAEAGgANAAMAAQQJAAIADgCdAAMAAQQJAAMAGgBVAAMAAQQJAAQAGgC4AAMAAQQJAAUAFgAyAAMAAQQJAAYAGgB8AAMAAQQJAAoANADsbm9kZWRjMC1pY29ucwBuAG8AZABlAGQAYwAwAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwbm9kZWRjMC1pY29ucwBuAG8AZABlAGQAYwAwAC0AaQBjAG8AbgBzbm9kZWRjMC1pY29ucwBuAG8AZABlAGQAYwAwAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQBybm9kZWRjMC1pY29ucwBuAG8AZABlAGQAYwAwAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==)format("truetype");font-weight:400;font-style:normal}[class^=w-icon-],[class*=\ w-icon-]{speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;font-family:nodedc-icons!important}.w-icon-slider-right:before{content:""}.w-icon-slider-left:before{content:""}.w-icon-nav-menu:before{content:""}.w-icon-arrow-down:before,.w-icon-dropdown-toggle:before{content:""}.w-icon-file-upload-remove:before{content:""}.w-icon-file-upload-icon:before{content:""}*{box-sizing:border-box}html{height:100%}body{color:#333;background-color:#fff;min-height:100%;margin:0;font-family:Arial,sans-serif;font-size:14px;line-height:20px}img{vertical-align:middle;max-width:100%;display:inline-block}html.w-mod-touch *{background-attachment:scroll!important}.w-block{display:block}.w-inline-block{max-width:100%;display:inline-block}.w-clearfix:before,.w-clearfix:after{content:" ";grid-area:1/1/2/2;display:table}.w-clearfix:after{clear:both}.w-hidden{display:none}.w-button{color:#fff;line-height:inherit;cursor:pointer;background-color:#3898ec;border:0;border-radius:0;padding:9px 15px;text-decoration:none;display:inline-block}input.w-button{-webkit-appearance:button}html[data-w-dynpage] [data-w-cloak]{color:#0000!important}.w-code-block{margin:unset}pre.w-code-block code{all:inherit}pre.w-code-block code>span{display:block!important}.w-optimization{display:contents}.ndc-badge,.ndc-badge>img{box-sizing:unset;width:unset;height:unset;max-height:unset;max-width:unset;min-height:unset;min-width:unset;margin:unset;padding:unset;float:unset;clear:unset;border:unset;border-radius:unset;background:unset;background-image:unset;background-position:unset;background-size:unset;background-repeat:unset;background-origin:unset;background-clip:unset;background-attachment:unset;background-color:unset;box-shadow:unset;transform:unset;direction:unset;font-family:unset;font-weight:unset;color:unset;font-size:unset;line-height:unset;font-style:unset;font-variant:unset;text-align:unset;letter-spacing:unset;-webkit-text-decoration:unset;text-decoration:unset;text-indent:unset;text-transform:unset;list-style-type:unset;text-shadow:unset;vertical-align:unset;cursor:unset;white-space:unset;word-break:unset;word-spacing:unset;word-wrap:unset;transition:unset}.ndc-badge{white-space:nowrap;cursor:pointer;box-shadow:0 0 0 1px #0000001a,0 1px 3px #0000001a;visibility:visible!important;opacity:1!important;z-index:2147483647!important;color:#aaadb0!important;width:auto!important;height:auto!important;overflow:unset!important;background-color:#fff!important;border-radius:3px!important;margin:0!important;padding:6px!important;font-size:12px!important;line-height:14px!important;text-decoration:none!important;display:inline-block!important;position:fixed!important;inset:auto 12px 12px auto!important;transform:none!important}.ndc-badge>img{position:unset;visibility:unset!important;opacity:1!important;vertical-align:middle!important;display:inline-block!important}h1,h2,h3,h4,h5,h6{margin-bottom:10px;font-weight:700}h1{margin-top:20px;font-size:38px;line-height:44px}h2{margin-top:20px;font-size:32px;line-height:36px}h3{margin-top:20px;font-size:24px;line-height:30px}h4{margin-top:10px;font-size:18px;line-height:24px}h5{margin-top:10px;font-size:14px;line-height:20px}h6{margin-top:10px;font-size:12px;line-height:18px}p{margin-top:0;margin-bottom:10px}blockquote{border-left:5px solid #e2e2e2;margin:0 0 10px;padding:10px 20px;font-size:18px;line-height:22px}figure{margin:0 0 10px}figcaption{text-align:center;margin-top:5px}ul,ol{margin-top:0;margin-bottom:10px;padding-left:40px}.w-list-unstyled{padding-left:0;list-style:none}.w-embed:before,.w-embed:after{content:" ";grid-area:1/1/2/2;display:table}.w-embed:after{clear:both}.w-video{width:100%;padding:0;position:relative}.w-video iframe,.w-video object,.w-video embed{border:none;width:100%;height:100%;position:absolute;top:0;left:0}fieldset{border:0;margin:0;padding:0}button,[type=button],[type=reset]{cursor:pointer;-webkit-appearance:button;border:0}.w-form{margin:0 0 15px}.w-form-done{text-align:center;background-color:#ddd;padding:20px;display:none}.w-form-fail{background-color:#ffdede;margin-top:10px;padding:10px;display:none}label{margin-bottom:5px;font-weight:700;display:block}.w-input,.w-select{color:#333;vertical-align:middle;background-color:#fff;border:1px solid #ccc;width:100%;height:38px;margin-bottom:10px;padding:8px 12px;font-size:14px;line-height:1.42857;display:block}.w-input::placeholder,.w-select::placeholder{color:#999}.w-input:focus,.w-select:focus{border-color:#3898ec;outline:0}.w-input[disabled],.w-select[disabled],.w-input[readonly],.w-select[readonly],fieldset[disabled] .w-input,fieldset[disabled] .w-select{cursor:not-allowed}.w-input[disabled]:not(.w-input-disabled),.w-select[disabled]:not(.w-input-disabled),.w-input[readonly],.w-select[readonly],fieldset[disabled]:not(.w-input-disabled) .w-input,fieldset[disabled]:not(.w-input-disabled) .w-select{background-color:#eee}textarea.w-input,textarea.w-select{height:auto}.w-select{background-color:#f3f3f3}.w-select[multiple]{height:auto}.w-form-label{cursor:pointer;margin-bottom:0;font-weight:400;display:inline-block}.w-radio{margin-bottom:5px;padding-left:20px;display:block}.w-radio:before,.w-radio:after{content:" ";grid-area:1/1/2/2;display:table}.w-radio:after{clear:both}.w-radio-input{float:left;margin:3px 0 0 -20px;line-height:normal}.w-file-upload{margin-bottom:10px;display:block}.w-file-upload-input{opacity:0;z-index:-100;width:.1px;height:.1px;position:absolute;overflow:hidden}.w-file-upload-default,.w-file-upload-uploading,.w-file-upload-success{color:#333;display:inline-block}.w-file-upload-error{margin-top:10px;display:block}.w-file-upload-default.w-hidden,.w-file-upload-uploading.w-hidden,.w-file-upload-error.w-hidden,.w-file-upload-success.w-hidden{display:none}.w-file-upload-uploading-btn{cursor:pointer;background-color:#fafafa;border:1px solid #ccc;margin:0;padding:8px 12px;font-size:14px;font-weight:400;display:flex}.w-file-upload-file{background-color:#fafafa;border:1px solid #ccc;flex-grow:1;justify-content:space-between;margin:0;padding:8px 9px 8px 11px;display:flex}.w-file-upload-file-name{font-size:14px;font-weight:400;display:block}.w-file-remove-link{cursor:pointer;width:auto;height:auto;margin-top:3px;margin-left:10px;padding:3px;display:block}.w-icon-file-upload-remove{margin:auto;font-size:10px}.w-file-upload-error-msg{color:#ea384c;padding:2px 0;display:inline-block}.w-file-upload-info{padding:0 12px;line-height:38px;display:inline-block}.w-file-upload-label{cursor:pointer;background-color:#fafafa;border:1px solid #ccc;margin:0;padding:8px 12px;font-size:14px;font-weight:400;display:inline-block}.w-icon-file-upload-icon,.w-icon-file-upload-uploading{width:20px;margin-right:8px;display:inline-block}.w-icon-file-upload-uploading{height:20px}.w-container{max-width:940px;margin-left:auto;margin-right:auto}.w-container:before,.w-container:after{content:" ";grid-area:1/1/2/2;display:table}.w-container:after{clear:both}.w-container .w-row{margin-left:-10px;margin-right:-10px}.w-row:before,.w-row:after{content:" ";grid-area:1/1/2/2;display:table}.w-row:after{clear:both}.w-row .w-row{margin-left:0;margin-right:0}.w-col{float:left;width:100%;min-height:1px;padding-left:10px;padding-right:10px;position:relative}.w-col .w-col{padding-left:0;padding-right:0}.w-col-1{width:8.33333%}.w-col-2{width:16.6667%}.w-col-3{width:25%}.w-col-4{width:33.3333%}.w-col-5{width:41.6667%}.w-col-6{width:50%}.w-col-7{width:58.3333%}.w-col-8{width:66.6667%}.w-col-9{width:75%}.w-col-10{width:83.3333%}.w-col-11{width:91.6667%}.w-col-12{width:100%}.w-hidden-main{display:none!important}@media screen and (max-width:991px){.w-container{max-width:728px}.w-hidden-main{display:inherit!important}.w-hidden-medium{display:none!important}.w-col-medium-1{width:8.33333%}.w-col-medium-2{width:16.6667%}.w-col-medium-3{width:25%}.w-col-medium-4{width:33.3333%}.w-col-medium-5{width:41.6667%}.w-col-medium-6{width:50%}.w-col-medium-7{width:58.3333%}.w-col-medium-8{width:66.6667%}.w-col-medium-9{width:75%}.w-col-medium-10{width:83.3333%}.w-col-medium-11{width:91.6667%}.w-col-medium-12{width:100%}.w-col-stack{width:100%;left:auto;right:auto}}@media screen and (max-width:767px){.w-hidden-main,.w-hidden-medium{display:inherit!important}.w-hidden-small{display:none!important}.w-row,.w-container .w-row{margin-left:0;margin-right:0}.w-col{width:100%;left:auto;right:auto}.w-col-small-1{width:8.33333%}.w-col-small-2{width:16.6667%}.w-col-small-3{width:25%}.w-col-small-4{width:33.3333%}.w-col-small-5{width:41.6667%}.w-col-small-6{width:50%}.w-col-small-7{width:58.3333%}.w-col-small-8{width:66.6667%}.w-col-small-9{width:75%}.w-col-small-10{width:83.3333%}.w-col-small-11{width:91.6667%}.w-col-small-12{width:100%}}@media screen and (max-width:479px){.w-container{max-width:none}.w-hidden-main,.w-hidden-medium,.w-hidden-small{display:inherit!important}.w-hidden-tiny{display:none!important}.w-col{width:100%}.w-col-tiny-1{width:8.33333%}.w-col-tiny-2{width:16.6667%}.w-col-tiny-3{width:25%}.w-col-tiny-4{width:33.3333%}.w-col-tiny-5{width:41.6667%}.w-col-tiny-6{width:50%}.w-col-tiny-7{width:58.3333%}.w-col-tiny-8{width:66.6667%}.w-col-tiny-9{width:75%}.w-col-tiny-10{width:83.3333%}.w-col-tiny-11{width:91.6667%}.w-col-tiny-12{width:100%}}.w-widget{position:relative}.w-widget-map{width:100%;height:400px}.w-widget-map label{width:auto;display:inline}.w-widget-map img{max-width:inherit}.w-widget-map .gm-style-iw{text-align:center}.w-widget-map .gm-style-iw>button{display:none!important}.w-widget-twitter{overflow:hidden}.w-widget-twitter-count-shim{vertical-align:top;text-align:center;background:#fff;border:1px solid #758696;border-radius:3px;width:28px;height:20px;display:inline-block;position:relative}.w-widget-twitter-count-shim *{pointer-events:none;-webkit-user-select:none;user-select:none}.w-widget-twitter-count-shim .w-widget-twitter-count-inner{text-align:center;color:#999;font-family:serif;font-size:15px;line-height:12px;position:relative}.w-widget-twitter-count-shim .w-widget-twitter-count-clear{display:block;position:relative}.w-widget-twitter-count-shim.w--large{width:36px;height:28px}.w-widget-twitter-count-shim.w--large .w-widget-twitter-count-inner{font-size:18px;line-height:18px}.w-widget-twitter-count-shim:not(.w--vertical){margin-left:5px;margin-right:8px}.w-widget-twitter-count-shim:not(.w--vertical).w--large{margin-left:6px}.w-widget-twitter-count-shim:not(.w--vertical):before,.w-widget-twitter-count-shim:not(.w--vertical):after{content:" ";pointer-events:none;border:solid #0000;width:0;height:0;position:absolute;top:50%;left:0}.w-widget-twitter-count-shim:not(.w--vertical):before{border-width:4px;border-color:#75869600 #5d6c7b #75869600 #75869600;margin-top:-4px;margin-left:-9px}.w-widget-twitter-count-shim:not(.w--vertical).w--large:before{border-width:5px;margin-top:-5px;margin-left:-10px}.w-widget-twitter-count-shim:not(.w--vertical):after{border-width:4px;border-color:#fff0 #fff #fff0 #fff0;margin-top:-4px;margin-left:-8px}.w-widget-twitter-count-shim:not(.w--vertical).w--large:after{border-width:5px;margin-top:-5px;margin-left:-9px}.w-widget-twitter-count-shim.w--vertical{width:61px;height:33px;margin-bottom:8px}.w-widget-twitter-count-shim.w--vertical:before,.w-widget-twitter-count-shim.w--vertical:after{content:" ";pointer-events:none;border:solid #0000;width:0;height:0;position:absolute;top:100%;left:50%}.w-widget-twitter-count-shim.w--vertical:before{border-width:5px;border-color:#5d6c7b #75869600 #75869600;margin-left:-5px}.w-widget-twitter-count-shim.w--vertical:after{border-width:4px;border-color:#fff #fff0 #fff0;margin-left:-4px}.w-widget-twitter-count-shim.w--vertical .w-widget-twitter-count-inner{font-size:18px;line-height:22px}.w-widget-twitter-count-shim.w--vertical.w--large{width:76px}.w-background-video{color:#fff;height:500px;position:relative;overflow:hidden}.w-background-video>video{object-fit:cover;z-index:-100;background-position:50%;background-size:cover;width:100%;height:100%;margin:auto;position:absolute;inset:-100%}.w-background-video>video::-webkit-media-controls-start-playback-button{-webkit-appearance:none;display:none!important}.w-background-video--control{background-color:#0000;padding:0;position:absolute;bottom:1em;right:1em}.w-background-video--control>[hidden]{display:none!important}.w-slider{text-align:center;clear:both;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;background:#ddd;height:300px;position:relative}.w-slider-mask{z-index:1;white-space:nowrap;height:100%;display:block;position:relative;left:0;right:0;overflow:hidden}.w-slide{vertical-align:top;white-space:normal;text-align:left;width:100%;height:100%;display:inline-block;position:relative}.w-slider-nav{z-index:2;text-align:center;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;height:40px;margin:auto;padding-top:10px;position:absolute;inset:auto 0 0}.w-slider-nav.w-round>div{border-radius:100%}.w-slider-nav.w-num>div{width:auto;height:auto;font-size:inherit;line-height:inherit;padding:.2em .5em}.w-slider-nav.w-shadow>div{box-shadow:0 0 3px #3336}.w-slider-nav-invert{color:#fff}.w-slider-nav-invert>div{background-color:#2226}.w-slider-nav-invert>div.w-active{background-color:#222}.w-slider-dot{cursor:pointer;background-color:#fff6;width:1em;height:1em;margin:0 3px .5em;transition:background-color .1s,color .1s;display:inline-block;position:relative}.w-slider-dot.w-active{background-color:#fff}.w-slider-dot:focus{outline:none;box-shadow:0 0 0 2px #fff}.w-slider-dot:focus.w-active{box-shadow:none}.w-slider-arrow-left,.w-slider-arrow-right{cursor:pointer;color:#fff;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;-webkit-user-select:none;user-select:none;width:80px;margin:auto;font-size:40px;position:absolute;inset:0;overflow:hidden}.w-slider-arrow-left [class^=w-icon-],.w-slider-arrow-right [class^=w-icon-],.w-slider-arrow-left [class*=\ w-icon-],.w-slider-arrow-right [class*=\ w-icon-]{position:absolute}.w-slider-arrow-left:focus,.w-slider-arrow-right:focus{outline:0}.w-slider-arrow-left{z-index:3;right:auto}.w-slider-arrow-right{z-index:4;left:auto}.w-icon-slider-left,.w-icon-slider-right{width:1em;height:1em;margin:auto;inset:0}.w-slider-aria-label{clip:rect(0 0 0 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.w-slider-force-show{display:block!important}.w-dropdown{text-align:left;z-index:900;margin-left:auto;margin-right:auto;display:inline-block;position:relative}.w-dropdown-btn,.w-dropdown-toggle,.w-dropdown-link{vertical-align:top;color:#222;text-align:left;white-space:nowrap;margin-left:auto;margin-right:auto;padding:20px;text-decoration:none;position:relative}.w-dropdown-toggle{-webkit-user-select:none;user-select:none;cursor:pointer;padding-right:40px;display:inline-block}.w-dropdown-toggle:focus{outline:0}.w-icon-dropdown-toggle{width:1em;height:1em;margin:auto 20px auto auto;position:absolute;top:0;bottom:0;right:0}.w-dropdown-list{background:#ddd;min-width:100%;display:none;position:absolute}.w-dropdown-list.w--open{display:block}.w-dropdown-link{color:#222;padding:10px 20px;display:block}.w-dropdown-link.w--current{color:#0082f3}.w-dropdown-link:focus{outline:0}.w-lightbox-backdrop{cursor:auto;letter-spacing:normal;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;color:#fff;text-align:center;z-index:2000;opacity:0;-webkit-user-select:none;-moz-user-select:none;-webkit-tap-highlight-color:transparent;background:#000000e6;outline:0;font-family:Helvetica Neue,Helvetica,Ubuntu,Segoe UI,Verdana,sans-serif;font-size:17px;font-style:normal;font-weight:300;line-height:1.2;list-style:disc;position:fixed;inset:0;-webkit-transform:translate(0)}.w-lightbox-backdrop,.w-lightbox-container{-webkit-overflow-scrolling:touch;height:100%;overflow:auto}.w-lightbox-content{height:100vh;position:relative;overflow:hidden}.w-lightbox-view{opacity:0;width:100vw;height:100vh;position:absolute}.w-lightbox-view:before{content:"";height:100vh}.w-lightbox-group,.w-lightbox-group .w-lightbox-view,.w-lightbox-group .w-lightbox-view:before{height:86vh}.w-lightbox-frame,.w-lightbox-view:before{vertical-align:middle;display:inline-block}.w-lightbox-figure{margin:0;position:relative}.w-lightbox-group .w-lightbox-figure{cursor:pointer}.w-lightbox-img{width:auto;max-width:none;height:auto}.w-lightbox-image{float:none;max-width:100vw;max-height:100vh;display:block}.w-lightbox-group .w-lightbox-image{max-height:86vh}.w-lightbox-caption{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:#0006;padding:.5em 1em;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.w-lightbox-embed{width:100%;height:100%;position:absolute;inset:0}.w-lightbox-control{cursor:pointer;background-position:50%;background-repeat:no-repeat;background-size:24px;width:4em;transition:all .3s;position:absolute;top:0}.w-lightbox-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==);display:none;bottom:0;left:0}.w-lightbox-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+);display:none;bottom:0;right:0}.w-lightbox-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=);background-size:18px;height:2.6em;right:0}.w-lightbox-strip{white-space:nowrap;padding:0 1vh;line-height:0;position:absolute;bottom:0;left:0;right:0;overflow:auto hidden}.w-lightbox-item{box-sizing:content-box;cursor:pointer;width:10vh;padding:2vh 1vh;display:inline-block;-webkit-transform:translate(0,0)}.w-lightbox-active{opacity:.3}.w-lightbox-thumbnail{background:#222;height:10vh;position:relative;overflow:hidden}.w-lightbox-thumbnail-image{position:absolute;top:0;left:0}.w-lightbox-thumbnail .w-lightbox-tall{width:100%;top:50%;transform:translateY(-50%)}.w-lightbox-thumbnail .w-lightbox-wide{height:100%;left:50%;transform:translate(-50%)}.w-lightbox-spinner{box-sizing:border-box;border:5px solid #0006;border-radius:50%;width:40px;height:40px;margin-top:-20px;margin-left:-20px;animation:.8s linear infinite spin;position:absolute;top:50%;left:50%}.w-lightbox-spinner:after{content:"";border:3px solid #0000;border-bottom-color:#fff;border-radius:50%;position:absolute;inset:-4px}.w-lightbox-hide{display:none}.w-lightbox-noscroll{overflow:hidden}@media (min-width:768px){.w-lightbox-content{height:96vh;margin-top:2vh}.w-lightbox-view,.w-lightbox-view:before{height:96vh}.w-lightbox-group,.w-lightbox-group .w-lightbox-view,.w-lightbox-group .w-lightbox-view:before{height:84vh}.w-lightbox-image{max-width:96vw;max-height:96vh}.w-lightbox-group .w-lightbox-image{max-width:82.3vw;max-height:84vh}.w-lightbox-left,.w-lightbox-right{opacity:.5;display:block}.w-lightbox-close{opacity:.8}.w-lightbox-control:hover{opacity:1}}.w-lightbox-inactive,.w-lightbox-inactive:hover{opacity:0}.w-richtext:before,.w-richtext:after{content:" ";grid-area:1/1/2/2;display:table}.w-richtext:after{clear:both}.w-richtext[contenteditable=true]:before,.w-richtext[contenteditable=true]:after{white-space:initial}.w-richtext ol,.w-richtext ul{overflow:hidden}.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-video div:after,.w-richtext .w-richtext-figure-selected[data-rt-type=video] div:after,.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-image div,.w-richtext .w-richtext-figure-selected[data-rt-type=image] div{outline:2px solid #2895f7}.w-richtext figure.w-richtext-figure-type-video>div:after,.w-richtext figure[data-rt-type=video]>div:after{content:"";display:none;position:absolute;inset:0}.w-richtext figure{max-width:60%;position:relative}.w-richtext figure>div:before{cursor:default!important}.w-richtext figure img{width:100%}.w-richtext figure figcaption.w-richtext-figcaption-placeholder{opacity:.6}.w-richtext figure div{color:#0000;font-size:0}.w-richtext figure.w-richtext-figure-type-image,.w-richtext figure[data-rt-type=image]{display:table}.w-richtext figure.w-richtext-figure-type-image>div,.w-richtext figure[data-rt-type=image]>div{display:inline-block}.w-richtext figure.w-richtext-figure-type-image>figcaption,.w-richtext figure[data-rt-type=image]>figcaption{caption-side:bottom;display:table-caption}.w-richtext figure.w-richtext-figure-type-video,.w-richtext figure[data-rt-type=video]{width:60%;height:0}.w-richtext figure.w-richtext-figure-type-video iframe,.w-richtext figure[data-rt-type=video] iframe{width:100%;height:100%;position:absolute;top:0;left:0}.w-richtext figure.w-richtext-figure-type-video>div,.w-richtext figure[data-rt-type=video]>div{width:100%}.w-richtext figure.w-richtext-align-center{clear:both;margin-left:auto;margin-right:auto}.w-richtext figure.w-richtext-align-center.w-richtext-figure-type-image>div,.w-richtext figure.w-richtext-align-center[data-rt-type=image]>div{max-width:100%}.w-richtext figure.w-richtext-align-normal{clear:both}.w-richtext figure.w-richtext-align-fullwidth{text-align:center;clear:both;width:100%;max-width:100%;margin-left:auto;margin-right:auto;display:block}.w-richtext figure.w-richtext-align-fullwidth>div{padding-bottom:inherit;display:inline-block}.w-richtext figure.w-richtext-align-fullwidth>figcaption{display:block}.w-richtext figure.w-richtext-align-floatleft{float:left;clear:none;margin-right:15px}.w-richtext figure.w-richtext-align-floatright{float:right;clear:none;margin-left:15px}.w-nav{z-index:1000;background:#ddd;position:relative}.w-nav:before,.w-nav:after{content:" ";grid-area:1/1/2/2;display:table}.w-nav:after{clear:both}.w-nav-brand{float:left;color:#333;text-decoration:none;position:relative}.w-nav-link{vertical-align:top;color:#222;text-align:left;margin-left:auto;margin-right:auto;padding:20px;text-decoration:none;display:inline-block;position:relative}.w-nav-link.w--current{color:#0082f3}.w-nav-menu{float:right;position:relative}[data-nav-menu-open]{text-align:center;background:#c8c8c8;min-width:200px;position:absolute;top:100%;left:0;right:0;overflow:visible;display:block!important}.w--nav-link-open{display:block;position:relative}.w-nav-overlay{width:100%;display:none;position:absolute;top:100%;left:0;right:0;overflow:hidden}.w-nav-overlay [data-nav-menu-open]{top:0}.w-nav[data-animation=over-left] .w-nav-overlay{width:auto}.w-nav[data-animation=over-left] .w-nav-overlay,.w-nav[data-animation=over-left] [data-nav-menu-open]{z-index:1;top:0;right:auto}.w-nav[data-animation=over-right] .w-nav-overlay{width:auto}.w-nav[data-animation=over-right] .w-nav-overlay,.w-nav[data-animation=over-right] [data-nav-menu-open]{z-index:1;top:0;left:auto}.w-nav-button{float:right;cursor:pointer;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;-webkit-user-select:none;user-select:none;padding:18px;font-size:24px;display:none;position:relative}.w-nav-button:focus{outline:0}.w-nav-button.w--open{color:#fff;background-color:#c8c8c8}.w-nav[data-collapse=all] .w-nav-menu{display:none}.w-nav[data-collapse=all] .w-nav-button,.w--nav-dropdown-open,.w--nav-dropdown-toggle-open{display:block}.w--nav-dropdown-list-open{position:static}@media screen and (max-width:991px){.w-nav[data-collapse=medium] .w-nav-menu{display:none}.w-nav[data-collapse=medium] .w-nav-button{display:block}}@media screen and (max-width:767px){.w-nav[data-collapse=small] .w-nav-menu{display:none}.w-nav[data-collapse=small] .w-nav-button{display:block}.w-nav-brand{padding-left:10px}}@media screen and (max-width:479px){.w-nav[data-collapse=tiny] .w-nav-menu{display:none}.w-nav[data-collapse=tiny] .w-nav-button{display:block}}.w-tabs{position:relative}.w-tabs:before,.w-tabs:after{content:" ";grid-area:1/1/2/2;display:table}.w-tabs:after{clear:both}.w-tab-menu{position:relative}.w-tab-link{vertical-align:top;text-align:left;cursor:pointer;color:#222;background-color:#ddd;padding:9px 30px;text-decoration:none;display:inline-block;position:relative}.w-tab-link.w--current{background-color:#c8c8c8}.w-tab-link:focus{outline:0}.w-tab-content{display:block;position:relative;overflow:hidden}.w-tab-pane{display:none;position:relative}.w--tab-active{display:block}@media screen and (max-width:479px){.w-tab-link{display:block}}.w-ix-emptyfix:after{content:""}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.w-dyn-empty{background-color:#ddd;padding:10px}.w-dyn-hide,.w-dyn-bind-empty,.w-condition-invisible{display:none!important}.ndc-layout-layout{display:grid}.w-layout-grid{grid-row-gap:16px;grid-column-gap:16px;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;display:grid}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2)format("woff2");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2)format("woff2");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2)format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--color-black--100:#000;--color-white:#fefefe;--site-max-w:1920px;--size-py:.6rem;--color-blue:#146ef5;--color-white--40:#717171;--size-bar-h:2.4em;--radius-system:1rem;--sys-alpha-bg:#1f1f1f87;--color-white--70:#b9b9b9;--color-gray:#7e7e7e;--default-w:80%;--color-black--90:#000000e6}body{background-color:var(--color-black--100);color:var(--color-white);letter-spacing:0;font-family:Instrumentsans,Arial,sans-serif;font-size:.9rem;font-weight:400;line-height:1.2em}h1{letter-spacing:-.04em;margin-top:0;margin-bottom:.6rem;font-size:2.6rem;font-weight:500;line-height:1em}h2{margin-top:0;margin-bottom:0;font-size:1.6rem;font-weight:500;line-height:1.1em}h3{margin-top:0;margin-bottom:10px;font-size:24px;font-weight:500;line-height:30px}h4{margin-top:10px;margin-bottom:10px;font-size:18px;font-weight:700;line-height:24px}h5{margin-top:10px;margin-bottom:10px;font-size:14px;font-weight:700;line-height:20px}h6{margin-top:10px;margin-bottom:10px;font-size:12px;font-weight:700;line-height:18px}p{margin-bottom:10px}a{color:var(--color-white);text-decoration:underline}blockquote{border-left:5px solid #e2e2e2;margin-bottom:10px;padding:10px 20px;font-size:18px;line-height:22px}.w{overflow:clip}.page-w{min-height:100svh;position:relative}.s{max-width:var(--site-max-w);flex-flow:column;min-height:30svh;margin-left:auto;margin-right:auto;padding-top:6rem;padding-bottom:6rem;display:flex;position:relative}.s.h-screen{height:100svh;padding-top:0;padding-bottom:0}.s.h-screen.py{padding-top:10%;padding-bottom:10%}.s.h-screen.py.mobile-space{height:auto}.s.footer{padding-bottom:6.1rem}.s.h-half{min-height:50svh}.s.ho-size{height:600svh;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;overflow:clip}.s.waitlist{justify-content:center;align-items:flex-start;height:100svh}.hud-w{z-index:100;padding-bottom:var(--size-py);pointer-events:none;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0%}.dock{grid-column-gap:1em;grid-row-gap:1em;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);outline-offset:0px;pointer-events:auto;background-image:linear-gradient(#2f2f2f96,#212121 75%);border-radius:1.2em;outline:1px solid #fff3;justify-content:center;align-items:flex-end;padding:.8em .9em .8em 1.3em;font-size:12px;display:flex;position:relative}.dock-icon{aspect-ratio:1;background-color:var(--color-white);background-image:linear-gradient(#cfcfcf,#444);border-radius:.7em;justify-content:center;align-items:center;width:3em;display:flex}.dock-icon.nodedc-app{background-image:linear-gradient(#000,#363636)}.dock-icon.no-bg{background-color:#f0f0f000;background-image:none}.dot{background-color:var(--color-white);border-radius:100%;flex:none;width:3px;height:3px;position:absolute;top:90%}.dot.highlight{background-color:#5bdf6f;width:.6em;height:.6em;position:absolute;inset:.1em auto 0% -.9em}.dot.highlight.purple{background-color:#cc7bf5}.dot.highlight.red{background-color:#ff6b62}.dot.relative{width:6px;height:6px}.dot.relative.email{background-color:var(--color-blue);width:7px;height:7px;position:static;top:0%}.logo{width:75%}.logo.xxs{width:1.3em}.logo.app{width:20%}.logo.app.footer{flex:none;width:5rem}.logo.app.xs{width:10%}.line{background-color:#0000004d;border-radius:1em;flex:none;width:1px;height:3em}.line.full{height:100%}.line.full.x-icon{background-color:#7a7a7a;width:2px;height:75%;position:absolute;transform:rotate(45deg)}.line.full.x-icon.rot{transform:rotate(-45deg)}.line.ho{background-color:var(--color-white--40);width:100%;height:1px;margin-bottom:1rem}.line.ho.darker{opacity:.3}.dock-app-img{opacity:1;width:100%}.dock-app-img.trash{transform:scale(1.1)}.folder-w{z-index:5;grid-column-gap:1rem;grid-row-gap:1rem;pointer-events:none;flex-flow:column wrap-reverse;grid-template-rows:auto auto auto auto auto auto auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;justify-content:flex-start;align-items:flex-start;height:100%;padding:3rem 1rem 4rem;display:flex;position:fixed;inset:0%}.folder-w.video-w{flex-flow:row;padding-left:2rem}.folder-w.txts{padding-left:2rem;padding-right:2rem;position:fixed;inset:0%}.folder-w.txts-windows{justify-content:center;align-items:center}.folder-w.abs{z-index:0;grid-column-gap:4rem;grid-row-gap:4rem;flex-flow:row;justify-content:center;align-items:center;position:absolute}.folder{grid-column-gap:.4em;grid-row-gap:.4em;aspect-ratio:1;pointer-events:auto;flex-flow:column;flex:none;justify-content:flex-start;align-items:center;width:2em;display:flex}.folder-title{text-align:center;text-transform:lowercase;text-shadow:0 1px 3px #0003;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1.2em;font-weight:700;line-height:100%}.folder-title.lower{justify-content:flex-start;align-items:flex-end;display:flex}.mac-bar{height:var(--size-bar-h);padding-right:var(--size-py);padding-left:var(--size-py);background-color:var(--color-black--100);pointer-events:auto;mix-blend-mode:color-burn;justify-content:space-between;font-size:12px;font-weight:500;display:flex;position:fixed;inset:0% 0% auto}.bar-icon-w{grid-column-gap:.5em;grid-row-gap:.5em;justify-content:center;align-items:center;height:100%;display:flex}.svg{aspect-ratio:1;height:100%}.svg.app-card{aspect-ratio:auto;height:auto}.svg.app-card._w-6{width:40%}.bar-side{grid-column-gap:1.6em;grid-row-gap:1.6em;justify-content:center;align-items:center;height:100%;display:flex}.sys-svg-w{justify-content:center;align-items:center;height:100%;padding-top:.4em;display:flex}.bar-txt{justify-content:center;align-items:center;height:100%;text-decoration:none;display:flex}.bar-txt.medium{font-weight:700}.bar-txt-w{grid-column-gap:1em;grid-row-gap:1em;justify-content:center;align-items:center;height:100%;display:flex}.webgl{background-color:#0f0f0f;background-image:linear-gradient(#1f1f1f,#0a0a0a);width:100%;height:100%;position:fixed;inset:0%}.app-w{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0%}.app-w.static{justify-content:flex-start;align-items:flex-start;padding-top:10%;padding-left:10%}.app-w.mail{position:relative}.app-w.align-right{justify-content:flex-end;align-items:center;padding-right:5%}.app-w.align-right.further{margin-right:-20%;padding-right:0%}.app-w.far-left{justify-content:flex-start;align-items:flex-end;margin-left:-10%}.image{width:90%}.app-item{border-radius:var(--radius-system);filter:drop-shadow(0 2px 5px #000000b3);pointer-events:auto;background-color:#1e1e1e;border:1px solid #fff3;flex-flow:column;width:20rem;height:40svh;display:flex;position:relative;overflow:clip}.app-item.abs{position:absolute;inset:12% auto auto 8%}.app-item.abs.about{inset:15% auto auto 10%}.app-item.video{aspect-ratio:3/2;border-radius:var(--radius-system);background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);width:70vw;height:auto}.app-item.data{z-index:1;border-radius:var(--radius-system);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#1f1f1f87;flex-flow:column;width:23rem;min-width:23rem;max-width:23rem;height:auto;padding-bottom:.8rem;display:flex}.app-item.mail{background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:auto;min-width:20rem;height:auto;overflow:visible}.app-item.txt{visibility:hidden;position:absolute}.app-item.price{background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:auto;min-width:20rem;height:auto;overflow:visible}.app-item.img{z-index:1;background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);width:25rem;height:auto;position:absolute}.app-head{background-color:#343434;border-bottom:1px solid #000;justify-content:center;height:1.9em;display:flex;position:relative}.app-head.preview{background-color:#34343400;border-bottom-style:none;flex:none;justify-content:flex-start;align-items:center;padding-left:3.9em}.app-head-trigs{z-index:2;grid-column-gap:.5em;grid-row-gap:.5em;justify-content:center;align-items:center;height:100%;margin-left:.6em;display:flex;position:absolute;inset:0% auto auto 0%}.circle{aspect-ratio:1;color:#abacb9;background-color:#f7f7f7;border-radius:100%;height:50%;padding-bottom:0;padding-left:0;padding-right:0;display:flex}.circle.red{background-color:#fe5f57;padding-bottom:0;padding-right:0}.circle.yellow{background-color:#febc2c}.circle.green{background-color:#28c840}.circle.opaque{border-radius:60%;justify-content:center;align-items:center}.circle.opaque.lighter{pointer-events:auto;background-color:#222}.txt-text-block{padding-bottom:.4em;padding-left:.4em;padding-right:.4em;font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:12px;line-height:150%}.txt-text-block.h1{margin-top:.3em;font-size:2em;line-height:100%}.txt-text-block.h2{margin-top:10px;margin-bottom:0;font-size:1.3em;line-height:120%}.txt-text-block.editable{height:100%}.app-name-w{grid-column-gap:.3em;grid-row-gap:.3em;justify-content:center;align-items:center;height:100%;display:flex}.app-name-txt{color:#b0b0b0;text-transform:lowercase;font-size:13px;font-weight:600}.app-name-txt.preview{color:#d8d8d8}.app-icon{height:60%}.bar-txt-el{height:100%;position:relative}.text-scrollable{height:92%;overflow:scroll}.text-editable{height:90%}.folder-title-w{grid-column-gap:.3em;grid-row-gap:.3em;justify-content:flex-start;align-items:center;font-size:.5em;display:flex;position:relative}.p-w{padding:.4em}.video{background-color:#000;border-radius:1em;width:100%;height:100%;padding-bottom:0;padding-right:0}.video-size{aspect-ratio:3/2;justify-content:center;align-items:center;padding:.3em;display:flex;overflow:clip}.x-icon{justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:relative}.flex-v{grid-column-gap:1em;grid-row-gap:1em;flex-flow:column;justify-content:center;align-items:center;height:100%;display:flex}.flex-v._w-full{grid-column-gap:1em;grid-row-gap:1em;width:100%;height:auto;margin-top:2rem;margin-bottom:1rem}.data-he{text-align:center;width:80%;margin-top:0;margin-bottom:0;font-size:2.3em;font-weight:500;line-height:100%}.data-he.h2{width:70%;color:var(--color-white--70);font-size:1.1em;font-weight:400;line-height:1.2em}.data-he.h2.xs{font-size:.9em}.data-he.sm{font-size:1.8em;line-height:1.3em}.form-field{color:var(--color-white);background-color:#ffffff0d;border:1px solid #fff3;border-radius:.6rem;margin-bottom:0;padding-top:12px}.form-field::placeholder{color:#fefefe2e;font-size:12px;font-weight:600}.form-field.taller{height:6rem}.form-w{width:95%;margin-bottom:0}.form{grid-column-gap:.6em;grid-row-gap:.6em;flex-flow:column;margin-top:.6rem;padding-top:.6rem;padding-bottom:.6rem;display:flex}.form-item{display:flex;position:relative}.form-btn{color:var(--color-black--100);background-color:#efefef00;justify-content:center;align-items:center;padding:3px 3px 3px 6px;font-size:12px;font-weight:500;display:flex;position:absolute;inset:0% 0% 0% auto}.form-btn.static{justify-content:flex-start;align-items:center;height:2.4rem;padding-left:0;text-decoration:none;position:static}.form-btn.static.disable{opacity:.3;pointer-events:none}.form-btn.static.mt-10{margin-top:1rem}.btn-bg{background-color:var(--color-blue);height:100%;color:var(--color-white);letter-spacing:-.02em;border-radius:.7em;justify-content:center;align-items:center;padding-left:1.2em;padding-right:1.2em;display:flex}.btn-bg.gray{background-color:#353535}.notice-txt{opacity:.4;text-align:center;font-size:.7rem;line-height:130%}.notice-txt.sm{font-size:.7em}.form-element{grid-column-gap:.4em;grid-row-gap:.4em;flex-flow:column;justify-content:flex-start;align-items:center;width:100%;display:flex}.s-cont{justify-content:flex-start;align-items:flex-start;width:80%;height:80%;margin:auto;display:flex}.s-cont.shorter{grid-column-gap:16px;grid-row-gap:16px;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;justify-content:space-between;align-items:center;height:70%;display:flex}.main-h{flex-flow:column;max-width:12ch;margin-bottom:.6rem;line-height:1em;display:flex}.main-h.sm{font-size:1.6rem;line-height:1.1em}.main-h.h2{font-size:2.1rem;line-height:.9em}.main-h.h1{letter-spacing:-.04em;margin-bottom:.9rem;font-size:2.6rem;line-height:.9em}.main-h.h1.xl{font-size:4rem}.main-h.tp{position:relative}.darker-70{color:var(--color-white--70)}.darker-70.mr-xs{padding-right:.2rem}.darker-70.mr-xs.lighter{font-weight:500}.darker-70.blue{color:var(--color-blue)}.darker-70.blue.bold{font-weight:600}.h-txt{max-width:25ch;color:var(--color-gray);margin-bottom:1.2rem}.h-txt.mt-5{margin-top:3rem}.h-txt.blue{color:var(--color-blue)}.h-txt.blue.bold{font-weight:600}.h-full{height:100%}.h-full.between{flex-flow:column;justify-content:space-between;display:flex}.h-full.between.lower{height:90%;margin-top:15%}.h-full.between.lower.center{justify-content:center}.c{grid-column-gap:2rem;grid-row-gap:2rem;justify-content:flex-start;align-items:center;width:80%;margin-left:auto;margin-right:auto;display:flex}.c.full{width:100%;min-height:5vh}.c._w-60{width:60%}.c.center{text-align:center;justify-content:center;align-items:flex-start;display:flex}.c.center.ve{flex-flow:column;justify-content:flex-start;align-items:center}.c.footer-col{grid-column-gap:0rem;grid-row-gap:0rem;justify-content:space-between;align-items:flex-start}.c.flex-r{justify-content:flex-end;align-items:center}.c.py{width:var(--default-w);padding-top:3rem;padding-bottom:3rem}.c.ve{flex-flow:column;justify-content:flex-start;align-items:flex-start}.darker-40{color:var(--color-white--40)}.darker-40.sm{font-size:.7rem}.darker-40.mt{margin-top:.3rem;display:inline-block}.ho{flex-flow:row;justify-content:space-between;align-items:flex-start;width:100%;display:flex}.ho.flip{flex-flow:row-reverse}.video-screen{aspect-ratio:3/2;border-radius:var(--radius-system);background-color:var(--color-black--100);object-fit:cover;justify-content:center;align-items:center;width:100%;display:flex;overflow:clip;transform:scale(1.1)}.slide-w{flex:none;width:35rem;padding-right:.5rem}.slider{flex-flow:row;margin-bottom:0;padding-top:3rem;padding-bottom:3rem;padding-left:calc(50vw - 17.5rem);display:flex}.slide-he{margin-top:1rem;margin-bottom:.3rem;font-size:1.2em;line-height:1em}.slide-p{max-width:30ch;color:var(--color-white--70);font-size:.9em;line-height:1.2em}.slide-he-w{margin-left:1rem;font-size:.7rem}.ce{flex-flow:column;justify-content:flex-start;align-items:center;display:flex}.mail-size{grid-column-gap:1rem;grid-row-gap:1rem;flex-flow:column;width:25rem;height:100%;padding:1.9rem;display:flex;position:absolute}.mail-head{grid-column-gap:.2rem;grid-row-gap:.2rem;flex-flow:column;display:flex}.mail-p{width:100%;font-weight:600}.mail-p.normal{font-size:.8rem;font-weight:400}.mail-p.smaller{flex:0 auto}.darker{color:var(--color-white--40);font-weight:400}.darker.sm{font-size:.6rem}.mail-head-w{grid-column-gap:1rem;grid-row-gap:1rem;justify-content:flex-start;align-items:flex-start;height:4.7rem;display:flex}.mail-img-w{aspect-ratio:1;background-color:var(--color-white--40);opacity:1;background-image:url(../images/69b6acdde3123ef078e2b7f3_og-img.jpg);background-position:0 0;background-size:cover;border-radius:100%;width:3rem}.mail-body{flex-flow:column;display:flex}.logo-lockup-w{grid-column-gap:.2em;grid-row-gap:.2em;flex-flow:column;align-items:center;display:flex}.logo-size{width:10rem}.logo-size.sm{width:6.6rem}.mail-app{display:flex}.mail-list{flex-flow:column;width:22rem;max-height:30rem;margin:2rem 1rem .8rem;padding-top:10%;padding-left:.3rem;padding-right:.3rem;display:flex;overflow:clip}.mail-slide{flex:none;padding-top:.2rem;padding-bottom:.2rem}.mail-item{border-radius:var(--radius-system);outline-offset:0px;background-color:#1f1f1fc9;outline:1px solid #fefefe33;justify-content:flex-start;align-items:center;height:5rem;padding:1rem;transition:background-color .4s;display:flex}.mail-rel-wrap{position:relative}.waitlist-coll{pointer-events:none;height:100svh;position:absolute;inset:0%}.text-ho{flex-flow:column;justify-content:flex-start;align-items:center;font-size:.5em;display:flex}.app-item-dot{justify-content:center;align-items:center;width:1px;height:1px;display:flex}.pricing-sm{font-size:.7rem}.pricing-sm.features{font-size:.8rem;line-height:1.3em}.pricing-sm.features.darker-40.mt{margin-top:.6rem}.pricing-sm.features.bolder{font-weight:700}.pricing-lg{font-weight:600}.pricing-lg.mb{margin-bottom:1rem;font-size:.9rem;line-height:100%}.pricing-it{font-size:2.2rem;font-weight:700;line-height:1.3em}.footer-list-he{font-size:.6rem}.div-block-2{grid-column-gap:1rem;grid-row-gap:1rem;align-items:center;display:flex}.ft-link{padding-top:.3rem;padding-bottom:.3rem;text-decoration:none}.clip{padding-top:0;padding-bottom:0;overflow:clip}.div-block-3{grid-column-gap:1rem;grid-row-gap:1rem;flex-flow:column;display:flex}.footer-cols{grid-column-gap:5rem;grid-row-gap:5rem;grid-template-rows:auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;display:grid}.footer-notice{max-width:30ch;color:var(--color-white--70);text-align:left;font-size:.7rem;line-height:1.9em}.footer-notice.mt{margin-top:.4rem;line-height:1.3em}.pricing{grid-column-gap:2rem;grid-row-gap:1rem;text-align:left;grid-template-rows:auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;padding:2rem;display:grid}.div-block-6{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:1rem;margin-bottom:1rem;display:flex}.div-block-6.key{grid-column-gap:.1rem;grid-row-gap:.1rem;margin-bottom:2rem;line-height:.8em}.pricing-wrap{margin-top:4rem}.to-left{transform:translate(-2vw)}.to-right{transform:translate(2vw)}.mail-view{opacity:0;width:25rem;height:100%;position:absolute}.mail-view:first-child{opacity:1}.collection-list-wrapper{height:100%}.collection-list{width:25rem;height:30rem}.div-block-7{grid-column-gap:.1rem;grid-row-gap:.1rem;flex-flow:column;justify-content:flex-start;align-items:flex-start;display:flex}.mail-text{font-size:.8rem;line-height:1.5em}.div-block-8{height:1.2em}.clip-12{height:1.3em;overflow:hidden}.div-block-9{flex-flow:column;height:100%;display:flex}.striked-price{font-size:1.2rem;font-weight:400;text-decoration:line-through}.price-notice{grid-column-gap:.3rem;grid-row-gap:.3rem;flex-flow:row;margin-top:.4rem;display:flex}.utility-page-wrap{justify-content:center;align-items:center;width:100vw;max-width:100%;height:100vh;max-height:100%;display:flex}.utility-page-content{text-align:center;flex-direction:column;width:260px;display:flex}.webgl-target-w{justify-content:center;align-items:center;width:1px;height:1px;display:flex;position:absolute}.webgl-target-w.ab{justify-content:center;align-items:flex-end}.webgl-target-w.b{justify-content:center;align-items:flex-start}.webgl-target-w.bl{inset:auto auto 0% 0%}.webgl-target{height:50svh}.webgl-target.point{width:1px;height:1px}.webgl-target.short{height:20svh}.p-line{opacity:.07;background-color:#fff;grid-column:1/span 5;height:1px}.p-line.is--m{display:none}.pricing-table{grid-column-gap:2rem;grid-row-gap:.8rem;text-align:left;grid-template-rows:auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;padding:2rem;display:grid}.package-beta{grid-column:2/span 1}.package-founder{grid-column:3/span 1}.package-basic{grid-column:4/span 1}.package-advanced{grid-column:5/span 1}.p-text{min-width:8rem}.p-text.is--m{display:none}.div-block-10{width:9rem}.p-separator{grid-column:1/span 5;height:1.7rem}.p-final-note{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:1rem;margin-bottom:1rem;display:flex}.p-final-note.key{grid-column-gap:.1rem;grid-row-gap:.1rem;margin-bottom:2rem;line-height:.8em}.form-success{grid-column-gap:.8rem;grid-row-gap:.8rem;border-radius:var(--radius-system);text-align:center;background-color:#38383899;border:1px solid #fff3;flex-flow:column;justify-content:center;align-items:center;width:100%;min-height:10rem;padding-top:2rem;padding-bottom:2rem;display:flex}.hg-par{margin-bottom:.4rem;font-size:.7rem}.hg-par.features{font-size:.8rem;line-height:1.3em}.hg-par.features.darker-40.mt{margin-top:.6rem}.hg-par.features.bolder{font-weight:700}.hg-par.darker-70{margin-bottom:.6rem}.mail-rt h1,.mail-rt h2{display:none}.mail-rt h3{color:var(--color-white--70);font-size:1rem;line-height:1em}.mail-rt h4{color:var(--color-white--40);font-size:.9rem;font-weight:600;line-height:1em}.mail-rt h5{color:var(--color-white--70);font-size:.6rem;font-weight:600;line-height:1em}.mail-rt p{color:var(--color-gray);margin-bottom:1rem;font-size:.8rem;line-height:1.5em}.mail-rt h6{color:var(--color-white--40);font-size:.6rem;font-weight:600;line-height:1em}.bubble{background-color:var(--color-blue);color:var(--color-white);letter-spacing:.05em;border-radius:2em;padding:.4rem .5rem;font-size:.55rem;font-weight:400}.div-block-11{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:5rem;display:flex}.unread-email{width:1rem;height:58%}.logo-link{justify-content:center;align-items:center;display:flex}.logo-link.outline{padding:0}.txt-w{flex-flow:column;margin-top:1.2rem;display:flex}.form-fail{grid-column-gap:.8rem;grid-row-gap:.8rem;border-radius:var(--radius-system);background-color:#2c000099;border:1px solid #f3000033;flex-flow:column;justify-content:center;align-items:center;width:100%;padding-top:1rem;padding-bottom:1rem;display:flex}.article-body{max-width:60ch;color:var(--color-white--70);margin-top:2rem;line-height:1.5em}.article-body h2{margin-bottom:.6rem}.article-h1{font-size:2em}.article-h2{color:var(--color-white--40);font-size:1.4em}.article-h3{color:var(--color-white--40);margin-top:1em;margin-bottom:.5em;font-size:1.2em}.article-h4{color:var(--color-white--40);margin-top:.5em;margin-bottom:.5em;font-size:1em}.article-h5{color:var(--color-white--40);margin-top:.5em;margin-bottom:.5em}.article-h6{color:var(--color-white--40);margin-top:1em;margin-bottom:1em;font-size:.8em}.article-w{grid-column-gap:.6rem;grid-row-gap:.6rem;flex-flow:column;max-width:60ch;margin:30svh auto;display:flex}.article-abstract{color:var(--color-white--40);margin-right:5rem;font-size:.8rem;line-height:1.4em}.article-date{color:var(--color-white--70);font-size:.7rem}.article-head{width:100%;max-width:60ch;margin-left:auto;margin-right:auto;display:flex}.bold-text,.italic-text{color:var(--color-white--40)}.founders-pricing{grid-column-gap:0rem;grid-row-gap:0rem;flex-flow:column;justify-content:flex-start;align-items:flex-start;width:80%;display:flex}.pricing-block-out{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:1rem;margin-bottom:1rem;display:flex}.pricing-block-out.key{grid-column-gap:.5rem;grid-row-gap:1rem;flex-flow:row;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;justify-content:center;align-items:flex-start;width:100%;margin-bottom:2rem;line-height:.8em;display:grid}.button-center{justify-content:center;align-items:center;width:100%;margin-top:1rem;display:flex}.mac-bar-2{pointer-events:auto;mix-blend-mode:color-burn;background-color:#000;justify-content:space-between;height:2.4em;padding-left:.6rem;padding-right:.6rem;font-size:12px;font-weight:500;display:flex;position:fixed;inset:0% 0% auto}.video-el{width:100%;height:100%;padding-bottom:0;padding-right:0}.video-cut{border-radius:var(--size-py);overflow:clip}._ndc-button-1{transform-origin:50.5781px 9px;color:#000000d8;text-align:center;cursor:default;background-color:silver;border-color:#000000d8 silver;border-left-style:outset;border-left-width:2px;border-right-style:outset;border-right-width:2px;align-items:flex-start;width:101.172px;height:18px;min-height:15px;padding:2px 6px 3px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:11px;display:inline-block}._ndc-div-2,._ndc-div-3,._ndc-div-4{transform-origin:592px 9px;height:18px}._ndc-div-5{transform-origin:592px 27px;height:54px}._ndc-div-6{transform-origin:592px 36.5px;height:73px}._ndc-button-1-2{transform-origin:30.5313px 19.9063px;color:#000000d8;text-align:center;cursor:default;background-color:silver;border-color:#000000d8 silver;border-left-style:outset;border-left-width:2px;border-right-style:outset;border-right-width:2px;align-items:flex-start;width:61.0781px;min-width:auto;height:39.8125px;min-height:15px;padding:2px 6px 3px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:11px}._ndc-h2-2{transform-origin:0 0;width:0;min-width:auto;min-height:auto;margin-top:19.9063px;margin-bottom:19.9063px;font-size:24px;font-weight:700}._ndc-button-3{transform-origin:20.125px 19.9063px;color:#000000d8;text-align:center;cursor:default;background-color:silver;border-color:#000000d8 silver;border-left-style:outset;border-left-width:2px;border-right-style:outset;border-right-width:2px;align-items:flex-start;width:40.2656px;min-width:auto;height:39.8125px;min-height:15px;padding:2px 6px 3px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:11px}._ndc-div-4-2{transform-origin:592px 19.9063px;justify-content:space-between;min-width:auto;height:39.8125px;min-height:auto;display:flex}._ndc-div-5-2{transform-origin:84.5625px 9px;width:169.141px;min-width:auto;height:18px;min-height:auto;font-weight:700}._ndc-div-6-2{transform-origin:84px 9px;width:169.141px;min-width:auto;height:18px;min-height:auto;font-weight:700}._ndc-div-7,._ndc-div-8,._ndc-div-9,._ndc-div-10,._ndc-div-11{transform-origin:84.5625px 9px;width:169.141px;min-width:auto;height:18px;min-height:auto;font-weight:700}._ndc-div-12{transform-origin:592px 9px;grid-template-rows:18px;grid-template-columns:169.141px 169.141px 169.141px 169.141px 169.141px 169.141px 169.141px;min-width:auto;height:18px;min-height:auto;display:grid}._ndc-div-13{transform-origin:592px 28.9063px;flex-direction:column;align-items:center;height:57.8125px;display:flex}._ndc-div-1{transform-origin:3px 50px;background-color:#000;width:6px;height:50px;position:absolute;inset:110px 154px 160px 160px;transform:matrix(1,0,0,1,-3,0)}._ndc-div-2-2{transform-origin:2px 70px;background-color:#000;width:4px;height:70px;position:absolute;inset:90px 156px 160px 160px;transform:matrix(1,0,0,1,-2,0)}._ndc-div-3-2{transform-origin:1px 90px;background-color:red;width:2px;height:90px;position:absolute;inset:70px 158px 160px 160px;transform:matrix(1,0,0,1,-1,0)}._ndc-div-4-3{transform-origin:168px 168px;border-style:solid;border-width:8px;border-radius:50%;width:320px;height:320px;position:relative;inset:0}.ho-w{justify-content:flex-start;align-items:flex-start;height:80svh;display:flex;position:sticky;top:10svh;overflow-x:scroll}.ho-content{flex:none;min-width:100%;height:100%;padding-left:30%;padding-right:30%;display:flex}.ho-c{flex-flow:column;justify-content:center;align-items:flex-start;min-width:80vw;display:flex;position:relative}.ho-c.a-r{justify-content:center;align-items:flex-end}.ho-c.a-c{justify-content:center;align-items:center;min-width:22rem}._w-bg{border-radius:var(--radius-system);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background-image:linear-gradient(#0f0f0f99,#000c);border:1px solid #ffffff1a;padding:2.8rem 1.8rem 1.8rem}._ndc-span-1{transform-origin:0 0;color:#333;border-color:#333;width:auto;height:auto;font-family:Arial,sans-serif;font-size:32px;display:inline}._ndc-span-2{transform-origin:0 0;width:auto;height:auto;display:inline}._ndc-span-3{transform-origin:0 0;color:#333;border-color:#333;width:auto;height:auto;font-family:Arial,sans-serif;font-size:32px;display:inline}._ndc-span-4{transform-origin:0 0;width:auto;height:auto;display:inline}._ndc-span-5{transform-origin:0 0;color:#333;border-color:#333;width:auto;height:auto;font-family:Arial,sans-serif;font-size:32px;display:inline}._ndc-div-6-3{transform-origin:592px 18.5px;color:#333;border-color:#333;height:37px;font-family:Arial,sans-serif;font-size:32px}.wiggle-letter{transform-origin:0 0;width:auto;height:auto;display:inline}.marquee-content,.marquee{transform-origin:592px 9px;height:18px}.animation-spin{animation:2s linear infinite spin}.animated-text{opacity:0;transform-origin:65.5625px 9px;width:131.141px;height:18px;display:inline-block;transform:matrix(1,0,0,1,0,20)}.animated-text-2{opacity:0;transform-origin:75.7969px 9px;width:151.594px;height:18px;display:inline-block;transform:matrix(1,0,0,1,0,20)}.text-animation-wrapper{transform-origin:592px 9px;height:18px;overflow:hidden}.folders{z-index:5;grid-column-gap:1rem;grid-row-gap:1rem;pointer-events:none;flex-flow:column wrap-reverse;grid-template-rows:auto auto auto auto auto auto auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;justify-content:flex-start;align-items:flex-start;height:100%;padding:3rem 1rem 4rem;display:flex;position:fixed;inset:0%}.folders.video-w{flex-flow:row;padding-left:2rem}.folders.txts{z-index:0;flex-flow:column wrap;place-content:flex-end flex-start;align-self:flex-end;align-items:flex-end;padding-left:2rem;padding-right:2rem;position:static}.folders.txts-windows{justify-content:center;align-items:center}.light-c{min-height:110svh;position:relative}.inner-block{border-radius:var(--size-py);height:50svh;margin:.4rem;padding:1rem;position:relative;overflow:clip}.abs{position:absolute;inset:0%}.abs.flex{display:flex}.abs.tr{justify-content:flex-end;align-items:flex-start;height:33%;padding-top:.6rem;padding-right:.6rem;display:flex}.abs.tr.no-evt{pointer-events:none}.img{object-fit:cover}.collection-list-2{justify-content:center;align-items:center;height:100%;display:flex}.collection-list-wrapper-2{width:100%;height:auto}.collection-item{justify-content:center;align-items:center;display:flex}.notification{border-radius:var(--radius-system);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#0f0f0fd9;border:1px solid #ffffff1a;flex-flow:column;width:20rem;min-height:6.2rem;padding:.9rem 1.2rem;font-size:.9rem;display:flex}.red-txt{color:#ff453a;text-transform:uppercase;margin-bottom:0;font-size:.5rem}.red-txt.gray{color:var(--color-gray)}.steps-w{grid-column-gap:.8rem;grid-row-gap:.8rem;color:var(--color-white--40);flex:1;justify-content:flex-start;align-items:flex-end;font-size:.8rem;line-height:1em;display:flex}.xs{font-size:.8em;line-height:.5em}.notification-w{z-index:100;grid-column-gap:.3rem;grid-row-gap:.3rem;flex-flow:column;justify-content:flex-start;align-items:flex-end;display:flex;position:fixed;inset:2.6rem 1.2rem auto auto}.div-block-13{color:var(--color-white--40);flex:1;justify-content:flex-start;align-items:flex-end;font-size:.8rem;line-height:1.1em;display:flex}.paragraph{margin-bottom:.4em}.collection-item-2{order:9999}.collection-list-wrapper-3{height:100svh}.hgroup-2{text-align:left}.gap-v{grid-column-gap:10rem;grid-row-gap:10rem;flex-flow:column;margin-top:6rem;margin-bottom:6rem;display:flex}.c-viz{content-visibility:auto}@media screen and (max-width:991px){.mail-list{width:19rem}.pricing-table{grid-column-gap:.9rem;grid-row-gap:.7rem;padding:1.5rem}.div-block-10{width:0}}@media screen and (max-width:767px){.s{min-height:auto}.s.h-screen{height:auto;padding-top:10svh}.s.h-screen.py.mobile-flip{flex-flow:column-reverse}.s.h-screen.py.mobile-space{grid-column-gap:2rem;grid-row-gap:2rem}.s.footer{grid-column-gap:4rem;grid-row-gap:4rem}.s.h-half{min-height:auto}.hud-w{display:none}.app-w{position:static}.app-w.align-right{justify-content:center;align-items:center;padding-right:0%}.app-item.video{width:95%}.form-btn.static{margin-top:0}.s-cont.shorter{flex-flow:column;justify-content:flex-start;height:auto;margin-bottom:10%;position:relative;top:-10%}.h-txt{margin-bottom:.2rem}.h-full.between{grid-column-gap:16px;grid-row-gap:16px;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;width:100%;height:auto;display:grid}.h-full.between.lower{height:100%;margin-top:0%}.c._w-60{width:80%}.c.footer-col{grid-column-gap:4rem;grid-row-gap:4rem;flex-flow:column}.ho{flex-flow:column}.slide-w{width:90vw}.slider{padding-left:2rem}.mail-app{flex-flow:column}.mail-list{width:23rem;max-height:15rem}.pricing-sm.darker-70.is--right{text-align:right}.p-line.is--m{display:block}.package-founder{margin-top:2.5rem}.package-basic,.package-advanced{margin-top:2.5rem;display:block}.p-text{min-width:10rem}.p-text.is--m{display:block}.p-separator{display:none}.txt-w{flex-flow:column;margin-top:3rem;display:flex}.article-w{margin-left:1rem;margin-right:1rem}.article-head{width:auto;margin-left:1rem;margin-right:1rem}.notification,.notification-w{display:none}}@media screen and (max-width:479px){.s.h-screen.py.mobile-flip{grid-column-gap:2rem;grid-row-gap:2rem}.folder-w{display:none}.app-w{top:-10%}.app-item.data{width:90%;min-width:auto;max-width:90%}.app-item.mail,.app-item.price{width:95%;min-width:auto}.h-full.between.lower{margin-top:0%}.mail-size{grid-column-gap:.7rem;grid-row-gap:.7rem;padding-top:1.2rem;padding-bottom:1.2rem}.mail-p{font-size:.8rem}.mail-head-w{justify-content:flex-start;align-items:flex-start;height:3.7rem}.mail-item{height:4rem}.collection-list{height:27.5rem}.unread-email{height:88%}.mail-wrapper{flex-flow:column;justify-content:flex-start;align-items:center;display:flex}.article-abstract{margin-right:0}.folders{display:none}}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8f2-c46ac7c8{grid-area:19/2/20/6}@media screen and (max-width:767px){#ndc-node-ddd50e0c-bdcb-417b-7dc2-7db828a06f46-43601640,#ndc-node-f82ddc17-0624-f069-9963-dda808a65750-43601640{grid-area:2/2/2/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7d4-c46ac7c8{grid-area:1/1/2/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7dd-c46ac7c8{grid-area:18/1/19/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7ec-c46ac7c8{grid-area:35/1/36/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7f7-c46ac7c8{grid-area:52/1/53/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac802-c46ac7c8{grid-area:2/1/3/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac805-c46ac7c8{grid-area:19/1/20/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac808-c46ac7c8{grid-area:36/1/37/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac80b-c46ac7c8{grid-area:67/1/68/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac80e-c46ac7c8{grid-area:65/1/66/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac811-c46ac7c8{grid-area:63/1/64/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac814-c46ac7c8{grid-area:61/1/62/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac817-c46ac7c8{grid-area:59/1/60/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac81a-c46ac7c8{grid-area:57/1/58/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac81d-c46ac7c8{grid-area:55/1/56/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac820-c46ac7c8{grid-area:53/1/54/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac823-c46ac7c8{grid-area:21/1/22/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac826-c46ac7c8{grid-area:38/1/39/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac829-c46ac7c8{grid-area:23/1/24/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac82c-c46ac7c8{grid-area:50/1/51/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac82f-c46ac7c8{grid-area:48/1/49/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac832-c46ac7c8{grid-area:46/1/47/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac835-c46ac7c8{grid-area:44/1/45/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac838-c46ac7c8{grid-area:42/1/43/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac83b-c46ac7c8{grid-area:40/1/41/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac83e-c46ac7c8{grid-area:25/1/26/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac841-c46ac7c8{grid-area:27/1/28/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac844-c46ac7c8{grid-area:29/1/30/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac847-c46ac7c8{grid-area:31/1/32/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac84a-c46ac7c8{grid-area:33/1/34/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac84d-c46ac7c8{grid-area:2/3/3/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac850-c46ac7c8{grid-area:19/3/20/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac853-c46ac7c8{grid-area:36/3/37/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac856-c46ac7c8{grid-area:53/3/54/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac859-c46ac7c8{grid-area:3/1/4/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85a-c46ac7c8{grid-area:20/1/21/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85b-c46ac7c8{grid-area:22/1/23/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85c-c46ac7c8{grid-area:26/1/27/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85d-c46ac7c8{grid-area:24/1/25/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85e-c46ac7c8{grid-area:28/1/29/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85f-c46ac7c8{grid-area:30/1/31/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac860-c46ac7c8{grid-area:32/1/33/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac861-c46ac7c8{grid-area:37/1/38/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac862-c46ac7c8{grid-area:64/1/65/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac863-c46ac7c8{grid-area:66/1/67/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac864-c46ac7c8{grid-area:62/1/63/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac865-c46ac7c8{grid-area:60/1/61/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac866-c46ac7c8{grid-area:58/1/59/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac867-c46ac7c8{grid-area:56/1/57/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac868-c46ac7c8{grid-area:54/1/55/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac869-c46ac7c8{grid-area:39/1/40/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86a-c46ac7c8{grid-area:49/1/50/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86b-c46ac7c8{grid-area:47/1/48/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86c-c46ac7c8{grid-area:45/1/46/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86d-c46ac7c8{grid-area:43/1/44/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86e-c46ac7c8{grid-area:41/1/42/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86f-c46ac7c8{grid-area:4/1/5/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac872-c46ac7c8{grid-area:4/3/5/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac875-c46ac7c8{grid-area:21/3/22/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac878-c46ac7c8{grid-area:38/3/39/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac87b-c46ac7c8{grid-area:55/3/56/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac87e-c46ac7c8{grid-area:5/1/6/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac87f-c46ac7c8{grid-area:6/1/7/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac882-c46ac7c8{grid-area:6/3/7/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac885-c46ac7c8{grid-area:23/3/24/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac888-c46ac7c8{grid-area:40/3/41/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac88b-c46ac7c8{grid-area:57/3/58/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac88e-c46ac7c8{grid-area:7/1/8/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac88f-c46ac7c8{grid-area:8/1/9/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac892-c46ac7c8{grid-area:8/3/9/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac895-c46ac7c8{grid-area:25/3/26/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac898-c46ac7c8{grid-area:42/3/43/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac89b-c46ac7c8{grid-area:59/3/60/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac89e-c46ac7c8{grid-area:9/1/10/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac89f-c46ac7c8{grid-area:10/1/11/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8a2-c46ac7c8{grid-area:10/3/11/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8a5-c46ac7c8{grid-area:27/3/28/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8a8-c46ac7c8{grid-area:44/3/45/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ab-c46ac7c8{grid-area:61/3/62/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ae-c46ac7c8{grid-area:11/1/12/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8af-c46ac7c8{grid-area:12/1/13/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8b2-c46ac7c8{grid-area:12/3/13/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8b5-c46ac7c8{grid-area:29/3/30/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8b8-c46ac7c8{grid-area:46/2/47/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8bb-c46ac7c8{grid-area:63/3/64/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8be-c46ac7c8{grid-area:13/1/14/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8bf-c46ac7c8{grid-area:14/1/15/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8c2-c46ac7c8{grid-area:14/3/15/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8c5-c46ac7c8{grid-area:31/3/32/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8c8-c46ac7c8{grid-area:48/3/49/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8cb-c46ac7c8{grid-area:65/3/66/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ce-c46ac7c8{grid-area:15/1/16/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8cf-c46ac7c8{grid-area:16/1/17/3}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8d2-c46ac7c8{grid-area:16/3/17/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8d5-c46ac7c8{grid-area:33/3/34/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8d8-c46ac7c8{grid-area:50/3/51/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8db-c46ac7c8{grid-area:67/3/68/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8e0-c46ac7c8{grid-area:17/1/18/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8e5-c46ac7c8{grid-area:34/1/35/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ea-c46ac7c8{grid-area:51/1/52/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ee-c46ac7c8{grid-area:68/1/69/6}#ndc-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8f2-c46ac7c8{grid-row:70/71;grid-column-start:1}}@media screen and (max-width:479px){#ndc-node-_42aec6af-ef19-ac2b-f604-ecf49ea735c6-43601640{grid-area:span 1/span 2/span 1/span 2}} \ No newline at end of file diff --git a/assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif b/assets/site/images/69a9ae818a76c773dc3cf7bc_trash.avif similarity index 100% rename from assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif rename to assets/site/images/69a9ae818a76c773dc3cf7bc_trash.avif diff --git a/assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif b/assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif similarity index 100% rename from assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif rename to assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif diff --git a/assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif b/assets/site/images/69a9fb87bc56142371745926_txt-file.avif similarity index 100% rename from assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif rename to assets/site/images/69a9fb87bc56142371745926_txt-file.avif diff --git a/assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif b/assets/site/images/69aab66f030013f2c7177d78_mov-file.avif similarity index 100% rename from assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif rename to assets/site/images/69aab66f030013f2c7177d78_mov-file.avif diff --git a/assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg b/assets/site/images/69ad964d951f9d17cc5a919e_logo-app.svg similarity index 100% rename from assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg rename to assets/site/images/69ad964d951f9d17cc5a919e_logo-app.svg diff --git a/assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg b/assets/site/images/69ad96a28b06b7552a339137_logtype.svg similarity index 100% rename from assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg rename to assets/site/images/69ad96a28b06b7552a339137_logtype.svg diff --git a/assets/webflow/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2 b/assets/site/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2 similarity index 100% rename from assets/webflow/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2 rename to assets/site/images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2 diff --git a/assets/webflow/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2 b/assets/site/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2 similarity index 100% rename from assets/webflow/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2 rename to assets/site/images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2 diff --git a/assets/webflow/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2 b/assets/site/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2 similarity index 100% rename from assets/webflow/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2 rename to assets/site/images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2 diff --git a/assets/webflow/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2 b/assets/site/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2 similarity index 100% rename from assets/webflow/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2 rename to assets/site/images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2 diff --git a/assets/webflow/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2 b/assets/site/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2 similarity index 100% rename from assets/webflow/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2 rename to assets/site/images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2 diff --git a/assets/webflow/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2 b/assets/site/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2 similarity index 100% rename from assets/webflow/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2 rename to assets/site/images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2 diff --git a/assets/webflow/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2 b/assets/site/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2 similarity index 100% rename from assets/webflow/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2 rename to assets/site/images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2 diff --git a/assets/webflow/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2 b/assets/site/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2 similarity index 100% rename from assets/webflow/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2 rename to assets/site/images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2 diff --git a/assets/webflow/images/69b6acdde3123ef078e2b7f3_og-img.jpg b/assets/site/images/69b6acdde3123ef078e2b7f3_og-img.jpg similarity index 100% rename from assets/webflow/images/69b6acdde3123ef078e2b7f3_og-img.jpg rename to assets/site/images/69b6acdde3123ef078e2b7f3_og-img.jpg diff --git a/assets/webflow/images/69b83bc24411350dcdb86781_favicon.png b/assets/site/images/69b83bc24411350dcdb86781_favicon.png similarity index 100% rename from assets/webflow/images/69b83bc24411350dcdb86781_favicon.png rename to assets/site/images/69b83bc24411350dcdb86781_favicon.png diff --git a/assets/webflow/images/69b83bc6ad9e108637556ec5_webclip.png b/assets/site/images/69b83bc6ad9e108637556ec5_webclip.png similarity index 100% rename from assets/webflow/images/69b83bc6ad9e108637556ec5_webclip.png rename to assets/site/images/69b83bc6ad9e108637556ec5_webclip.png diff --git a/assets/webflow/images/69d3dc83a417451438caec72_Frame 3173-p-500.avif b/assets/site/images/69d3dc83a417451438caec72_Frame 3173-p-500.avif similarity index 100% rename from assets/webflow/images/69d3dc83a417451438caec72_Frame 3173-p-500.avif rename to assets/site/images/69d3dc83a417451438caec72_Frame 3173-p-500.avif diff --git a/assets/webflow/images/69d3dc83a417451438caec72_Frame 3173.avif b/assets/site/images/69d3dc83a417451438caec72_Frame 3173.avif similarity index 100% rename from assets/webflow/images/69d3dc83a417451438caec72_Frame 3173.avif rename to assets/site/images/69d3dc83a417451438caec72_Frame 3173.avif diff --git a/assets/webflow/images/69d3dc9256192179afb4cfdc_Frame 1-p-500.avif b/assets/site/images/69d3dc9256192179afb4cfdc_Frame 1-p-500.avif similarity index 100% rename from assets/webflow/images/69d3dc9256192179afb4cfdc_Frame 1-p-500.avif rename to assets/site/images/69d3dc9256192179afb4cfdc_Frame 1-p-500.avif diff --git a/assets/webflow/images/69d3dc9256192179afb4cfdc_Frame 1.avif b/assets/site/images/69d3dc9256192179afb4cfdc_Frame 1.avif similarity index 100% rename from assets/webflow/images/69d3dc9256192179afb4cfdc_Frame 1.avif rename to assets/site/images/69d3dc9256192179afb4cfdc_Frame 1.avif diff --git a/assets/webflow/images/69d3fac0d22182f930e32ec6_Frame 3175-p-500.avif b/assets/site/images/69d3fac0d22182f930e32ec6_Frame 3175-p-500.avif similarity index 100% rename from assets/webflow/images/69d3fac0d22182f930e32ec6_Frame 3175-p-500.avif rename to assets/site/images/69d3fac0d22182f930e32ec6_Frame 3175-p-500.avif diff --git a/assets/webflow/images/69d3fac0d22182f930e32ec6_Frame 3175.avif b/assets/site/images/69d3fac0d22182f930e32ec6_Frame 3175.avif similarity index 100% rename from assets/webflow/images/69d3fac0d22182f930e32ec6_Frame 3175.avif rename to assets/site/images/69d3fac0d22182f930e32ec6_Frame 3175.avif diff --git a/assets/webflow/images/69d3fba72116e87a8d145059_Frame 3174-p-500.avif b/assets/site/images/69d3fba72116e87a8d145059_Frame 3174-p-500.avif similarity index 100% rename from assets/webflow/images/69d3fba72116e87a8d145059_Frame 3174-p-500.avif rename to assets/site/images/69d3fba72116e87a8d145059_Frame 3174-p-500.avif diff --git a/assets/webflow/images/69d3fba72116e87a8d145059_Frame 3174.avif b/assets/site/images/69d3fba72116e87a8d145059_Frame 3174.avif similarity index 100% rename from assets/webflow/images/69d3fba72116e87a8d145059_Frame 3174.avif rename to assets/site/images/69d3fba72116e87a8d145059_Frame 3174.avif diff --git a/assets/webflow/js/ssscript.751e0867.148dc658e77a3916.js b/assets/site/js/nodedc.751e0867.148dc658e77a3916.js similarity index 100% rename from assets/webflow/js/ssscript.751e0867.148dc658e77a3916.js rename to assets/site/js/nodedc.751e0867.148dc658e77a3916.js diff --git a/assets/site/js/nodedc.a0aa6ca1.38bff8ac21973156.js b/assets/site/js/nodedc.a0aa6ca1.38bff8ac21973156.js new file mode 100644 index 0000000..b5fb9ee --- /dev/null +++ b/assets/site/js/nodedc.a0aa6ca1.38bff8ac21973156.js @@ -0,0 +1 @@ +(()=>{var e={524:function(e,t){"use strict";function n(e,t,n,a,i,r,o,l,f,s,d,c,u){return function(p){e(p);var m=p.form,v={name:m.attr("data-name")||m.attr("name")||"Untitled Form",pageId:m.attr("data-ndc-page-id")||"",elementId:m.attr("data-ndc-element-id")||"",domain:c("html").attr("data-ndc-domain")||null,collectionId:c("html").attr("data-ndc-collection")||null,itemSlug:c("html").attr("data-ndc-item-slug")||null,source:t.href,test:n.env(),fields:{},fileUploads:{},dolphin:/pass[\s-_]?(word|code)|secret|login|credentials/i.test(m.html()),trackingCookies:a()};let g=m.attr("data-ndc-flow");g&&(v.wfFlow=g);let w=m.attr("data-ndc-locale-id");w&&(v.localeId=w),i(p);var h=r(m,v.fields);return h?o(h):(v.fileUploads=l(m),f(p),s)?void c.ajax({url:u,type:"POST",data:v,dataType:"json",crossDomain:!0}).done(function(e){e&&200===e.code&&(p.success=!0),d(p)}).fail(function(){d(p)}):void d(p)}}Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}})},527:function(e,t,n){"use strict";var a=n(949);let i=(e,t,n,a)=>{let i=document.createElement("div");t.appendChild(i),turnstile.render(i,{sitekey:e,callback:function(e){n(e)},"error-callback":function(){a()}})};a.define("forms",e.exports=function(e,t){let r,o="TURNSTILE_LOADED";var l,f,s,d,c,u={},p=e(document),m=window.location,v=window.XDomainRequest&&!window.atob,g=".w-form",w=/e(-)?mail/i,h=/^\S+@\S+$/,b=window.alert,y=a.env();let k=p.find("[data-turnstile-sitekey]").data("turnstile-sitekey");var x=/list-manage[1-9]?.com/i,O=t.debounce(function(){console.warn("Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.")},100);function C(t,r){var l=e(r),s=e.data(r,g);s||(s=e.data(r,g,{form:l})),U(s);var u=l.closest("div.w-form");s.done=u.find("> .w-form-done"),s.fail=u.find("> .w-form-fail"),s.fileUploads=u.find(".w-file-upload"),s.fileUploads.each(function(t){!function(t,n){if(n.fileUploads&&n.fileUploads[t]){var a,i=e(n.fileUploads[t]),r=i.find("> .w-file-upload-default"),o=i.find("> .w-file-upload-uploading"),l=i.find("> .w-file-upload-success"),f=i.find("> .w-file-upload-error"),s=r.find(".w-file-upload-input"),d=r.find(".w-file-upload-label"),u=d.children(),p=f.find(".w-file-upload-error-msg"),m=l.find(".w-file-upload-file"),v=l.find(".w-file-remove-link"),g=m.find(".w-file-upload-file-name"),w=p.attr("data-w-size-error"),h=p.attr("data-w-type-error"),b=p.attr("data-w-generic-error");if(y||d.on("click keydown",function(e){("keydown"!==e.type||13===e.which||32===e.which)&&(e.preventDefault(),s.click())}),d.find(".w-icon-file-upload-icon").attr("aria-hidden","true"),v.find(".w-icon-file-upload-remove").attr("aria-hidden","true"),y)s.on("click",function(e){e.preventDefault()}),d.on("click",function(e){e.preventDefault()}),u.on("click",function(e){e.preventDefault()});else{v.on("click keydown",function(e){if("keydown"===e.type){if(13!==e.which&&32!==e.which)return;e.preventDefault()}s.removeAttr("data-value"),s.val(""),g.html(""),r.toggle(!0),l.toggle(!1),d.focus()}),s.on("change",function(i){var l,s,d;(a=i.target&&i.target.files&&i.target.files[0])&&(r.toggle(!1),f.toggle(!1),o.toggle(!0),o.focus(),g.text(a.name),D()||E(n),n.fileUploads[t].uploading=!0,l=a,s=O,d=new URLSearchParams({name:l.name,size:l.size}),e.ajax({type:"GET",url:`${c}?${d}`,crossDomain:!0}).done(function(e){s(null,e)}).fail(function(e){s(e)}))});var k=d.outerHeight();s.height(k),s.width(1)}}function x(e){var a=e.responseJSON&&e.responseJSON.msg,i=b;"string"==typeof a&&0===a.indexOf("InvalidFileTypeError")?i=h:"string"==typeof a&&0===a.indexOf("MaxFileSizeError")&&(i=w),p.text(i),s.removeAttr("data-value"),s.val(""),o.toggle(!1),r.toggle(!0),f.toggle(!0),f.focus(),n.fileUploads[t].uploading=!1,D()||U(n)}function O(t,n){if(t)return x(t);var i=n.fileName,r=n.postData,o=n.fileId,l=n.s3Url;s.attr("data-value",o),function(t,n,a,i,r){var o=new FormData;for(var l in n)o.append(l,n[l]);o.append("file",a,i),e.ajax({type:"POST",url:t,data:o,processData:!1,contentType:!1}).done(function(){r(null)}).fail(function(e){r(e)})}(l,r,a,i,C)}function C(e){if(e)return x(e);o.toggle(!1),l.css("display","inline-block"),l.focus(),n.fileUploads[t].uploading=!1,D()||U(n)}function D(){return(n.fileUploads&&n.fileUploads.toArray()||[]).some(function(e){return e.uploading})}}(t,s)}),k&&!l.is("[data-ndc-no-turnstile]")&&(function(e){let t=e.btn||e.form.find(':input[type="submit"]');e.btn||(e.btn=t),t.prop("disabled",!0),t.addClass("w-form-loading")}(s),D(l,!0),p.on("undefined"!=typeof turnstile?"ready":o,function(){function e(){i(k,r,e=>{s.turnstileToken=e,U(s),D(l,!1)},()=>{U(s),s.btn&&s.btn.prop("disabled",!0),D(l,!1)})}if("undefined"!=typeof IntersectionObserver){var t=new IntersectionObserver(function(n){n[0].isIntersecting&&(t.disconnect(),e())},{rootMargin:"200px"});t.observe(r)}else e()}));var v=s.form.attr("aria-label")||s.form.attr("data-name")||"Form";s.done.attr("aria-label")||s.form.attr("aria-label",v),s.done.attr("tabindex","-1"),s.done.attr("role","region"),s.done.attr("aria-label")||s.done.attr("aria-label",v+" success"),s.fail.attr("tabindex","-1"),s.fail.attr("role","region"),s.fail.attr("aria-label")||s.fail.attr("aria-label",v+" failure");var w=s.action=l.attr("action");if(s.handler=null,s.redirect=l.attr("data-redirect"),x.test(w)){s.handler=F;return}if(!w){if(f){s.handler=(0,n(524).default)(U,m,a,$,M,I,b,j,E,f,A,e,d);return}O()}}function U(e){var t=e.btn=e.form.find(':input[type="submit"]');e.wait=e.btn.attr("data-wait")||null,e.success=!1;let n=!!(k&&!e.turnstileToken);t.prop("disabled",n),t.removeClass("w-form-loading"),e.label&&t.val(e.label)}function E(e){var t=e.btn,n=e.wait;t.prop("disabled",!0),n&&(e.label=t.val(),t.val(n))}function D(e,t){let n=e.closest(".w-form");t?n.addClass("w-form-loading"):n.removeClass("w-form-loading")}function I(t,n){var a=null;return n=n||{},t.find(':input:not([type="submit"]):not([type="file"]):not([type="button"])').each(function(i,r){var o,l,f,s,d,c=e(r),u=c.attr("type"),p=c.attr("data-name")||c.attr("name")||"Field "+(i+1);p=encodeURIComponent(p);var m=c.val();if("checkbox"===u)m=c.is(":checked");else if("radio"===u){if(null===n[p]||"string"==typeof n[p])return;m=t.find('input[name="'+c.attr("name")+'"]:checked').val()||null}"string"==typeof m&&(m=e.trim(m)),n[p]=m,a=a||(o=c,l=u,f=p,s=m,d=null,"password"===l?d="Passwords cannot be submitted.":o.attr("required")?s?w.test(o.attr("type"))&&!h.test(s)&&(d="Please enter a valid email address for: "+f):d="Please fill out the required field: "+f:"g-recaptcha-response"!==f||s||(d="Please confirm you're not a robot."),d)}),a}function j(t){var n={};return t.find(':input[type="file"]').each(function(t,a){var i=e(a),r=i.attr("data-name")||i.attr("name")||"File "+(t+1),o=i.attr("data-value");"string"==typeof o&&(o=e.trim(o)),n[r]=o}),n}u.ready=u.design=u.preview=function(){(function(){if(k){let e=()=>{(r=document.createElement("script")).src="https://challenges.cloudflare.com/turnstile/v0/api.js",document.head.appendChild(r),r.onload=()=>{p.trigger(o)}};"function"==typeof requestIdleCallback?window.requestIdleCallback(e):setTimeout(e,200)}})(),d="https://nodedc.dctouch.ru/api/v1/form/"+(f=e("html").attr("data-ndc-site")),v&&d.indexOf("https://nodedc.dctouch.ru")>=0&&(d=d.replace("https://nodedc.dctouch.ru","https://nodedc.dctouch.ru")),c=`${d}/signFile`,(l=e(g+" form")).length&&l.each(C),(!y||a.env("preview"))&&!s&&function(){s=!0,p.on("submit",g+" form",function(t){var n=e.data(this,g);n.handler&&(n.evt=t,n.handler(n))});let t=".w-checkbox-input",n=".w-radio-input",a="w--redirected-checked",i="w--redirected-focus",r="w--redirected-focus-visible",o=[["checkbox",t],["radio",n]];p.on("change",g+' form input[type="checkbox"]:not('+t+")",n=>{e(n.target).siblings(t).toggleClass(a)}),p.on("change",g+' form input[type="radio"]',i=>{e(`input[name="${i.target.name}"]:not(${t})`).map((t,i)=>e(i).siblings(n).removeClass(a));let r=e(i.target);r.hasClass("w-radio-input")||r.siblings(n).addClass(a)}),o.forEach(([t,n])=>{p.on("focus",g+` form input[type="${t}"]:not(`+n+")",t=>{e(t.target).siblings(n).addClass(i),e(t.target).filter(":focus-visible, [data-ndc-focus-visible]").siblings(n).addClass(r)}),p.on("blur",g+` form input[type="${t}"]:not(`+n+")",t=>{e(t.target).siblings(n).removeClass(`${i} ${r}`)})})}()};let T={_mkto_trk:"marketo"};function $(){return document.cookie.split("; ").reduce(function(e,t){let n=t.split("="),a=n[0];if(a in T){let t=T[a],i=n.slice(1).join("=");e[t]=i}return e},{})}function F(n){U(n);var a,i=n.form,r={};if(/^https/.test(m.href)&&!/^https/.test(n.action))return void i.attr("method","post");M(n);var o=I(i,r);if(o)return b(o);E(n),t.each(r,function(e,t){w.test(t)&&(r.EMAIL=e),/^((full[ _-]?)?name)$/i.test(t)&&(a=e),/^(first[ _-]?name)$/i.test(t)&&(r.FNAME=e),/^(last[ _-]?name)$/i.test(t)&&(r.LNAME=e)}),a&&!r.FNAME&&(r.FNAME=(a=a.split(" "))[0],r.LNAME=r.LNAME||a[1]);var l=n.action.replace("/post?","/post-json?")+"&c=?",f=l.indexOf("u=")+2;f=l.substring(f,l.indexOf("&",f));var s=l.indexOf("id=")+3;r["b_"+f+"_"+(s=l.substring(s,l.indexOf("&",s)))]="",e.ajax({url:l,data:r,dataType:"jsonp"}).done(function(e){n.success="success"===e.result||/already/.test(e.msg),n.success||console.info("MailChimp error: "+e.msg),A(n)}).fail(function(){A(n)})}function A(e){var t=e.form,n=e.redirect,i=e.success;if(i&&n)return void a.location(n);e.done.toggle(i),e.fail.toggle(!i),i?e.done.focus():e.fail.focus(),t.toggle(!i),U(e)}function M(e){e.evt&&e.evt.preventDefault(),e.evt=null}return u})},670:function(e,t,n){n(461),n(624),n(286),n(334),n(338),n(695),n(322),n(527)}},t={};function n(a){var i=t[a];if(void 0!==i)return i.exports;var r=t[a]={exports:{}};return e[a](r,r.exports,n),r.exports}n.m=e,n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e=[];n.O=(t,a,i,r)=>{if(a){r=r||0;for(var o=e.length;o>0&&e[o-1][2]>r;o--)e[o]=e[o-1];e[o]=[a,i,r];return}for(var l=1/0,o=0;o=r)&&Object.keys(n.O).every(e=>n.O[e](a[s]))?a.splice(s--,1):(f=!1,r"1.3.9",(()=>{var e={34:0};n.O.j=t=>0===e[t];var t=(t,a)=>{var i,r,[o,l,f]=a,s=0;if(o.some(t=>0!==e[t])){for(i in l)n.o(l,i)&&(n.m[i]=l[i]);if(f)var d=f(n)}for(t&&t(a);s>16&255,e>>8&255,255&e]}function i(t,e,n){return"#"+(0x1000000|t<<16|e<<8|n).toString(16).slice(1)}function r(){}function o(t,e,n){if(void 0!==e&&(n=e),void 0===t)return n;var i=n;return Z.test(t)||!K.test(t)?i=parseInt(t,10):K.test(t)&&(i=1e3*parseFloat(t)),0>i&&(i=0),i==i?i:n}function a(t){B.debug&&window&&window.console.warn(t)}var s,u,c,l=function(t,e,n){function i(t){return"object"==typeof t}function r(t){return"function"==typeof t}function o(){}return function a(s,u){function c(){var t=new l;return r(t.init)&&t.init.apply(t,arguments),t}function l(){}u===n&&(u=s,s=Object),c.Bare=l;var h,d=o[t]=s[t],f=l[t]=c[t]=new o;return f.constructor=c,c.mixin=function(e){return l[t]=c[t]=a(c,e)[t],c},c.open=function(t){if(h={},r(t)?h=t.call(c,f,d,c,s):i(t)&&(h=t),i(h))for(var n in h)e.call(h,n)&&(f[n]=h[n]);return r(f.init)||(f.init=s),c},c.open(u)}}("prototype",{}.hasOwnProperty),h={ease:["ease",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(-2.75*o*r+11*r*r+-15.5*o+8*r+.25*t)}],"ease-in":["ease-in",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(-1*o*r+3*r*r+-3*o+2*r)}],"ease-out":["ease-out",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(.3*o*r+-1.6*r*r+2.2*o+-1.8*r+1.9*t)}],"ease-in-out":["ease-in-out",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(2*o*r+-5*r*r+2*o+2*r)}],linear:["linear",function(t,e,n,i){return n*t/i+e}],"ease-in-quad":["cubic-bezier(0.550, 0.085, 0.680, 0.530)",function(t,e,n,i){return n*(t/=i)*t+e}],"ease-out-quad":["cubic-bezier(0.250, 0.460, 0.450, 0.940)",function(t,e,n,i){return-n*(t/=i)*(t-2)+e}],"ease-in-out-quad":["cubic-bezier(0.455, 0.030, 0.515, 0.955)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t+e:-n/2*(--t*(t-2)-1)+e}],"ease-in-cubic":["cubic-bezier(0.550, 0.055, 0.675, 0.190)",function(t,e,n,i){return n*(t/=i)*t*t+e}],"ease-out-cubic":["cubic-bezier(0.215, 0.610, 0.355, 1)",function(t,e,n,i){return n*((t=t/i-1)*t*t+1)+e}],"ease-in-out-cubic":["cubic-bezier(0.645, 0.045, 0.355, 1)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t+e:n/2*((t-=2)*t*t+2)+e}],"ease-in-quart":["cubic-bezier(0.895, 0.030, 0.685, 0.220)",function(t,e,n,i){return n*(t/=i)*t*t*t+e}],"ease-out-quart":["cubic-bezier(0.165, 0.840, 0.440, 1)",function(t,e,n,i){return-n*((t=t/i-1)*t*t*t-1)+e}],"ease-in-out-quart":["cubic-bezier(0.770, 0, 0.175, 1)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t*t+e:-n/2*((t-=2)*t*t*t-2)+e}],"ease-in-quint":["cubic-bezier(0.755, 0.050, 0.855, 0.060)",function(t,e,n,i){return n*(t/=i)*t*t*t*t+e}],"ease-out-quint":["cubic-bezier(0.230, 1, 0.320, 1)",function(t,e,n,i){return n*((t=t/i-1)*t*t*t*t+1)+e}],"ease-in-out-quint":["cubic-bezier(0.860, 0, 0.070, 1)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t*t*t+e:n/2*((t-=2)*t*t*t*t+2)+e}],"ease-in-sine":["cubic-bezier(0.470, 0, 0.745, 0.715)",function(t,e,n,i){return-n*Math.cos(t/i*(Math.PI/2))+n+e}],"ease-out-sine":["cubic-bezier(0.390, 0.575, 0.565, 1)",function(t,e,n,i){return n*Math.sin(t/i*(Math.PI/2))+e}],"ease-in-out-sine":["cubic-bezier(0.445, 0.050, 0.550, 0.950)",function(t,e,n,i){return-n/2*(Math.cos(Math.PI*t/i)-1)+e}],"ease-in-expo":["cubic-bezier(0.950, 0.050, 0.795, 0.035)",function(t,e,n,i){return 0===t?e:n*Math.pow(2,10*(t/i-1))+e}],"ease-out-expo":["cubic-bezier(0.190, 1, 0.220, 1)",function(t,e,n,i){return t===i?e+n:n*(-Math.pow(2,-10*t/i)+1)+e}],"ease-in-out-expo":["cubic-bezier(1, 0, 0, 1)",function(t,e,n,i){return 0===t?e:t===i?e+n:(t/=i/2)<1?n/2*Math.pow(2,10*(t-1))+e:n/2*(-Math.pow(2,-10*--t)+2)+e}],"ease-in-circ":["cubic-bezier(0.600, 0.040, 0.980, 0.335)",function(t,e,n,i){return-n*(Math.sqrt(1-(t/=i)*t)-1)+e}],"ease-out-circ":["cubic-bezier(0.075, 0.820, 0.165, 1)",function(t,e,n,i){return n*Math.sqrt(1-(t=t/i-1)*t)+e}],"ease-in-out-circ":["cubic-bezier(0.785, 0.135, 0.150, 0.860)",function(t,e,n,i){return(t/=i/2)<1?-n/2*(Math.sqrt(1-t*t)-1)+e:n/2*(Math.sqrt(1-(t-=2)*t)+1)+e}],"ease-in-back":["cubic-bezier(0.600, -0.280, 0.735, 0.045)",function(t,e,n,i,r){return void 0===r&&(r=1.70158),n*(t/=i)*t*((r+1)*t-r)+e}],"ease-out-back":["cubic-bezier(0.175, 0.885, 0.320, 1.275)",function(t,e,n,i,r){return void 0===r&&(r=1.70158),n*((t=t/i-1)*t*((r+1)*t+r)+1)+e}],"ease-in-out-back":["cubic-bezier(0.680, -0.550, 0.265, 1.550)",function(t,e,n,i,r){return void 0===r&&(r=1.70158),(t/=i/2)<1?n/2*t*t*(((r*=1.525)+1)*t-r)+e:n/2*((t-=2)*t*(((r*=1.525)+1)*t+r)+2)+e}]},d={"ease-in-back":"cubic-bezier(0.600, 0, 0.735, 0.045)","ease-out-back":"cubic-bezier(0.175, 0.885, 0.320, 1)","ease-in-out-back":"cubic-bezier(0.680, 0, 0.265, 1)"},f=window,p="bkwld-tram",m=/[\-\.0-9]/g,v=/[A-Z]/,w="number",b=/^(rgb|#)/,g=/(em|cm|mm|in|pt|pc|px)$/,y=/(em|cm|mm|in|pt|pc|px|%)$/,x=/(deg|rad|turn)$/,k="unitless",E=/(all|none) 0s ease 0s/,_=/^(width|height)$/,L=document.createElement("a"),A=["Webkit","Moz","O","ms"],$=["-webkit-","-moz-","-o-","-ms-"],z=function(t){if(t in L.style)return{dom:t,css:t};var e,n,i="",r=t.split("-");for(e=0;ed&&(d=t.span),t.stop(),t.animate(e)},function(t){"wait"in t&&(d=o(t.wait,0))}),l.call(this),d>0&&(this.timer=new P({duration:d,context:this}),this.active=!0,e&&(this.timer.complete=r));var f=this,p=!1,m={};j(function(){h.call(f,t,function(t){t.active&&(p=!0,m[t.name]=t.nextStyle)}),p&&f.$el.css(m)})}}}function r(){if(this.timer&&this.timer.destroy(),this.active=!1,this.queue.length){var t=this.queue.shift();i.call(this,t.options,!0,t.args)}}function s(t){var e;this.timer&&this.timer.destroy(),this.queue=[],this.active=!1,"string"==typeof t?(e={})[t]=1:e="object"==typeof t&&null!=t?t:this.props,h.call(this,e,d),l.call(this)}function u(){s.call(this),this.el.style.display="none"}function c(){this.el.offsetHeight}function l(){var t,e,n=[];for(t in this.upstream&&n.push(this.upstream),this.props)(e=this.props[t]).active&&n.push(e.string);n=n.join(","),this.style!==n&&(this.style=n,this.el.style[T.transition.dom]=n)}function h(t,e,i){var r,o,a,s,u=e!==d,c={};for(r in t)a=t[r],r in Y?(c.transform||(c.transform={}),c.transform[r]=a):(v.test(r)&&(r=r.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})),r in X?c[r]=a:(s||(s={}),s[r]=a));for(r in c){if(a=c[r],!(o=this.props[r])){if(!u)continue;o=n.call(this,r)}e.call(this,o,a)}i&&s&&i.call(this,s)}function d(t){t.stop()}function f(t,e){t.set(e)}function m(t){this.$el.css(t)}function w(t,n){e[t]=function(){return this.children?b.call(this,n,arguments):(this.el&&n.apply(this,arguments),this)}}function b(t,e){var n,i=this.children.length;for(n=0;i>n;n++)t.apply(this.children[n],e);return this}e.init=function(e){if(this.$el=t(e),this.el=this.$el[0],this.props={},this.queue=[],this.style="",this.active=!1,B.keepInherited&&!B.fallback){var n=G(this.el,"transition");n&&!E.test(n)&&(this.upstream=n)}T.backface&&B.hideBackface&&H(this.el,T.backface.css,"hidden")},w("add",n),w("start",i),w("wait",function(t){t=o(t,0),this.active?this.queue.push({options:t}):(this.timer=new P({duration:t,context:this,complete:r}),this.active=!0)}),w("then",function(t){return this.active?(this.queue.push({options:t,args:arguments}),void(this.timer.complete=r)):a("No active transition timer. Use start() or wait() before then().")}),w("next",r),w("stop",s),w("set",function(t){s.call(this,t),h.call(this,t,f,m)}),w("show",function(t){"string"!=typeof t&&(t="block"),this.el.style.display=t}),w("hide",u),w("redraw",c),w("destroy",function(){s.call(this),t.removeData(this.el,p),this.$el=this.el=null})}),F=l(C,function(e){function n(e,n){var i=t.data(e,p)||t.data(e,p,new C.Bare);return i.el||i.init(e),n?i.start(n):i}e.init=function(e,i){var r=t(e);if(!r.length)return this;if(1===r.length)return n(r[0],i);var o=[];return r.each(function(t,e){o.push(n(e,i))}),this.children=o,this}}),I=l(function(t){function e(){var t=this.get();this.update("auto");var e=this.get();return this.update(t),e}t.init=function(t,e,n,i){this.$el=t,this.el=t[0];var r,a,s,u=e[0];n[2]&&(u=n[2]),U[u]&&(u=U[u]),this.name=u,this.type=n[1],this.duration=o(e[1],this.duration,500),this.ease=(r=e[2],a=this.ease,s="ease",void 0!==a&&(s=a),r in h?r:s),this.delay=o(e[3],this.delay,0),this.span=this.duration+this.delay,this.active=!1,this.nextStyle=null,this.auto=_.test(this.name),this.unit=i.unit||this.unit||B.defaultUnit,this.angle=i.angle||this.angle||B.defaultAngle,B.fallback||i.fallback?this.animate=this.fallback:(this.animate=this.transition,this.string=this.name+" "+this.duration+"ms"+("ease"!=this.ease?" "+h[this.ease][0]:"")+(this.delay?" "+this.delay+"ms":""))},t.set=function(t){t=this.convert(t,this.type),this.update(t),this.redraw()},t.transition=function(t){this.active=!0,t=this.convert(t,this.type),this.auto&&("auto"==this.el.style[this.name]&&(this.update(this.get()),this.redraw()),"auto"==t&&(t=e.call(this))),this.nextStyle=t},t.fallback=function(t){var n=this.el.style[this.name]||this.convert(this.get(),this.type);t=this.convert(t,this.type),this.auto&&("auto"==n&&(n=this.convert(this.get(),this.type)),"auto"==t&&(t=e.call(this))),this.tween=new D({from:n,to:t,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.get=function(){return G(this.el,this.name)},t.update=function(t){H(this.el,this.name,t)},t.stop=function(){(this.active||this.nextStyle)&&(this.active=!1,this.nextStyle=null,H(this.el,this.name,this.get()));var t=this.tween;t&&t.context&&t.destroy()},t.convert=function(t,e){if("auto"==t&&this.auto)return t;var n,r,o="number"==typeof t,s="string"==typeof t;switch(e){case w:if(o)return t;if(s&&""===t.replace(m,""))return+t;r="number(unitless)";break;case b:if(s){if(""===t&&this.original)return this.original;if(e.test(t))return"#"==t.charAt(0)&&7==t.length?t:((n=/rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(t))?i(n[1],n[2],n[3]):t).replace(/#(\w)(\w)(\w)$/,"#$1$1$2$2$3$3")}r="hex or rgb string";break;case g:if(o)return t+this.unit;if(s&&e.test(t))return t;r="number(px) or string(unit)";break;case y:if(o)return t+this.unit;if(s&&e.test(t))return t;r="number(px) or string(unit or %)";break;case x:if(o)return t+this.angle;if(s&&e.test(t))return t;r="number(deg) or string(angle)";break;case k:if(o||s&&y.test(t))return t;r="number(unitless) or string(unit or %)"}return a("Type warning: Expected: ["+r+"] Got: ["+typeof t+"] "+t),t},t.redraw=function(){this.el.offsetHeight}}),O=l(I,function(t,e){t.init=function(){e.init.apply(this,arguments),this.original||(this.original=this.convert(this.get(),b))}}),R=l(I,function(t,e){t.init=function(){e.init.apply(this,arguments),this.animate=this.fallback},t.get=function(){return this.$el[this.name]()},t.update=function(t){this.$el[this.name](t)}}),N=l(I,function(t,e){function n(t,e){var n,i,r,o,a;for(n in t)r=(o=Y[n])[0],i=o[1]||n,a=this.convert(t[n],r),e.call(this,i,a,r)}t.init=function(){e.init.apply(this,arguments),this.current||(this.current={},Y.perspective&&B.perspective&&(this.current.perspective=B.perspective,H(this.el,this.name,this.style(this.current)),this.redraw()))},t.set=function(t){n.call(this,t,function(t,e){this.current[t]=e}),H(this.el,this.name,this.style(this.current)),this.redraw()},t.transition=function(t){var e=this.values(t);this.tween=new W({current:this.current,values:e,duration:this.duration,delay:this.delay,ease:this.ease});var n,i={};for(n in this.current)i[n]=n in e?e[n]:this.current[n];this.active=!0,this.nextStyle=this.style(i)},t.fallback=function(t){var e=this.values(t);this.tween=new W({current:this.current,values:e,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.update=function(){H(this.el,this.name,this.style(this.current))},t.style=function(t){var e,n="";for(e in t)n+=e+"("+t[e]+") ";return n},t.values=function(t){var e,i={};return n.call(this,t,function(t,n,r){i[t]=n,void 0===this.current[t]&&(e=0,~t.indexOf("scale")&&(e=1),this.current[t]=this.convert(e,r))}),i}}),D=l(function(e){function o(){var t,e,n,i=u.length;if(i)for(j(o),e=M(),t=i;t--;)(n=u[t])&&n.render(e)}var s={ease:h.ease[1],from:0,to:1};e.init=function(t){this.duration=t.duration||0,this.delay=t.delay||0;var e=t.ease||s.ease;h[e]&&(e=h[e][1]),"function"!=typeof e&&(e=s.ease),this.ease=e,this.update=t.update||r,this.complete=t.complete||r,this.context=t.context||this,this.name=t.name;var n=t.from,i=t.to;void 0===n&&(n=s.from),void 0===i&&(i=s.to),this.unit=t.unit||"","number"==typeof n&&"number"==typeof i?(this.begin=n,this.change=i-n):this.format(i,n),this.value=this.begin+this.unit,this.start=M(),!1!==t.autoplay&&this.play()},e.play=function(){this.active||(this.start||(this.start=M()),this.active=!0,1===u.push(this)&&j(o))},e.stop=function(){var e,n;this.active&&(this.active=!1,(n=t.inArray(this,u))>=0&&(e=u.slice(n+1),u.length=n,e.length&&(u=u.concat(e))))},e.render=function(t){var e,n=t-this.start;if(this.delay){if(n<=this.delay)return;n-=this.delay}if(n/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},b=/(.)^/,g={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},y=/\\|'|\r|\n|\u2028|\u2029/g,x=function(t){return"\\"+g[t]},k=/^\s*(\w|\$)+\s*$/,i.template=function(t,e,n){!e&&n&&(e=n);var r,o=RegExp([((e=i.defaults({},e,i.templateSettings)).escape||b).source,(e.interpolate||b).source,(e.evaluate||b).source].join("|")+"|$","g"),a=0,s="__p+='";t.replace(o,function(e,n,i,r,o){return s+=t.slice(a,o).replace(y,x),a=o+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":i?s+="'+\n((__t=("+i+"))==null?'':__t)+\n'":r&&(s+="';\n"+r+"\n__p+='"),e}),s+="';\n";var u=e.variable;if(u){if(!k.test(u))throw Error("variable is not a bare identifier: "+u)}else s="with(obj||{}){\n"+s+"}\n",u="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var c=function(t){return r.call(this,t,i)};return c.source="function("+u+"){\n"+s+"}",c},t.exports=i},461:function(t,e,n){var i=n(949);i.define("brand",t.exports=function(t){var e,n={},r=document,o=t("html"),a=t("body"),s=window.location,u=/PhantomJS/i.test(navigator.userAgent),c="fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange";function l(){var n=r.fullScreen||r.mozFullScreen||r.webkitIsFullScreen||r.msFullscreenElement||!!r.webkitFullscreenElement;t(e).attr("style",n?"display: none !important;":"")}function h(){var t=a.children(".w-webflow-badge"),n=t.length&&t.get(0)===e,r=i.env("editor");if(n){r&&t.remove();return}t.length&&t.remove(),r||a.append(e)}return n.ready=function(){var n,i,a,d=o.attr("data-wf-status"),f=o.attr("data-wf-domain")||"";/\.webflow\.io$/i.test(f)&&s.hostname!==f&&(d=!0),d&&!u&&(e=e||(n=t('').attr("href","https://webflow.com?utm_campaign=brandjs"),i=t("").attr("src","./assets/vendor/webflow-badge-icon-d2.89e12c322e.svg").attr("alt","").css({marginRight:"4px",width:"26px"}),a=t("").attr("src","./assets/vendor/webflow-badge-text-d2.c82cec3b78.svg").attr("alt","Made in Webflow"),n.append(i,a),n[0]),h(),setTimeout(h,500),t(r).off(c,l).on(c,l))},n})},322:function(t,e,n){var i=n(949);i.define("edit",t.exports=function(t,e,n){if(n=n||{},(i.env("test")||i.env("frame"))&&!n.fixture&&!function(){try{return!!(window.top.__Cypress__||window.PLAYWRIGHT_TEST)}catch(t){return!1}}())return{exit:1};var r,o=t(window),a=t(document.documentElement),s=document.location,u="hashchange",c=n.load||function(){var e,n,i;r=!0,window.WebflowEditor=!0,o.off(u,h),e=function(e){var n;t.ajax({url:f("https://editor-api.webflow.com/api/editor/view"),data:{siteId:a.attr("data-wf-site")},xhrFields:{withCredentials:!0},dataType:"json",crossDomain:!0,success:(n=e,function(e){var i,r,o;if(!e)return void console.error("Could not load editor data");e.thirdPartyCookiesSupported=n,r=(i=e.scriptPath).indexOf("//")>=0?i:f("https://editor-api.webflow.com"+i),o=function(){window.WebflowEditor(e)},t.ajax({type:"GET",url:r,dataType:"script",cache:!0}).then(o,d)})})},(n=window.document.createElement("iframe")).src="https://webflow.com/site/third-party-cookie-check.html",n.style.display="none",n.sandbox="allow-scripts allow-same-origin",i=function(t){"WF_third_party_cookies_unsupported"===t.data?(p(n,i),e(!1)):"WF_third_party_cookies_supported"===t.data&&(p(n,i),e(!0))},n.onerror=function(){p(n,i),e(!1)},window.addEventListener("message",i,!1),window.document.body.appendChild(n)},l=!1;try{l=localStorage&&localStorage.getItem&&localStorage.getItem("WebflowEditor")}catch(t){}function h(){!r&&/\?edit/.test(s.hash)&&c()}function d(t,e,n){throw console.error("Could not load editor script: "+e),n}function f(t){return t.replace(/([^:])\/\//g,"$1/")}function p(t,e){window.removeEventListener("message",e,!1),t.remove()}return/[?&](update)(?:[=&?]|$)/.test(s.search)||/\?update$/.test(s.href)?function(){var t=document.documentElement,e=t.getAttribute("data-wf-site"),n=t.getAttribute("data-wf-page"),i=t.getAttribute("data-wf-item-slug"),r=t.getAttribute("data-wf-collection"),o=t.getAttribute("data-wf-domain");if(e&&n){var a="pageId="+n;a+="&utm_source=legacy_editor",i&&r&&o&&(a+="&domain="+encodeURIComponent(o)+"&itemSlug="+encodeURIComponent(i)+"&collectionId="+r),window.location.href="https://webflow.com/external/designer/"+e+"?"+a}}():l?c():s.search?(/[?&](edit)(?:[=&?]|$)/.test(s.search)||/\?edit$/.test(s.href))&&c():o.on(u,h).triggerHandler(u),{}})},338:function(t,e,n){n(949).define("focus-visible",t.exports=function(){return{ready:function(){if("undefined"!=typeof document)try{document.querySelector(":focus-visible")}catch(t){!function(t){var e=!0,n=!1,i=null,r={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function o(t){return!!t&&t!==document&&"HTML"!==t.nodeName&&"BODY"!==t.nodeName&&"classList"in t&&"contains"in t.classList}function a(t){t.getAttribute("data-wf-focus-visible")||t.setAttribute("data-wf-focus-visible","true")}function s(){e=!1}function u(){document.addEventListener("mousemove",c),document.addEventListener("mousedown",c),document.addEventListener("mouseup",c),document.addEventListener("pointermove",c),document.addEventListener("pointerdown",c),document.addEventListener("pointerup",c),document.addEventListener("touchmove",c),document.addEventListener("touchstart",c),document.addEventListener("touchend",c)}function c(t){t.target.nodeName&&"html"===t.target.nodeName.toLowerCase()||(e=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mousedown",c),document.removeEventListener("mouseup",c),document.removeEventListener("pointermove",c),document.removeEventListener("pointerdown",c),document.removeEventListener("pointerup",c),document.removeEventListener("touchmove",c),document.removeEventListener("touchstart",c),document.removeEventListener("touchend",c))}document.addEventListener("keydown",function(n){n.metaKey||n.altKey||n.ctrlKey||(o(t.activeElement)&&a(t.activeElement),e=!0)},!0),document.addEventListener("mousedown",s,!0),document.addEventListener("pointerdown",s,!0),document.addEventListener("touchstart",s,!0),document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&(n&&(e=!0),u())},!0),u(),t.addEventListener("focus",function(t){if(o(t.target)){var n,i,s;(e||(i=(n=t.target).type,"INPUT"===(s=n.tagName)&&r[i]&&!n.readOnly||"TEXTAREA"===s&&!n.readOnly||n.isContentEditable||0))&&a(t.target)}},!0),t.addEventListener("blur",function(t){if(o(t.target)&&t.target.hasAttribute("data-wf-focus-visible")){var e;n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),(e=t.target).getAttribute("data-wf-focus-visible")&&e.removeAttribute("data-wf-focus-visible")}},!0)}(document)}}}})},334:function(t,e,n){var i=n(949);i.define("focus",t.exports=function(){var t=[],e=!1;function n(n){e&&(n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),t.unshift(n))}function r(n){var i,r;r=(i=n.target).tagName,(/^a$/i.test(r)&&null!=i.href||/^(button|textarea)$/i.test(r)&&!0!==i.disabled||/^input$/i.test(r)&&/^(button|reset|submit|radio|checkbox)$/i.test(i.type)&&!i.disabled||!/^(button|input|textarea|select|a)$/i.test(r)&&!Number.isNaN(Number.parseFloat(i.tabIndex))||/^audio$/i.test(r)||/^video$/i.test(r)&&!0===i.controls)&&(e=!0,setTimeout(()=>{for(e=!1,n.target.focus();t.length>0;){var i=t.pop();i.target.dispatchEvent(new MouseEvent(i.type,i))}},0))}return{ready:function(){"undefined"!=typeof document&&document.body.hasAttribute("data-wf-focus-within")&&i.env.safari&&(document.addEventListener("mousedown",r,!0),document.addEventListener("mouseup",n,!0),document.addEventListener("click",n,!0))}}})},949:function(t,e,n){var i,r,o={},a={},s=[],u=window.Webflow||[],c=window.jQuery,l=c(window),h=c(document),d=c.isFunction,f=o._=n(756),p=o.tram=n(487)&&c.tram,m=!1,v=!1;function w(t){o.env()&&(d(t.design)&&l.on("__wf_design",t.design),d(t.preview)&&l.on("__wf_preview",t.preview)),d(t.destroy)&&l.on("__wf_destroy",t.destroy),t.ready&&d(t.ready)&&function(t){if(m)return t.ready();f.contains(s,t.ready)||s.push(t.ready)}(t)}function b(t){var e;d(t.design)&&l.off("__wf_design",t.design),d(t.preview)&&l.off("__wf_preview",t.preview),d(t.destroy)&&l.off("__wf_destroy",t.destroy),t.ready&&d(t.ready)&&(e=t,s=f.filter(s,function(t){return t!==e.ready}))}p.config.hideBackface=!1,p.config.keepInherited=!0,o.define=function(t,e,n){a[t]&&b(a[t]);var i=a[t]=e(c,f,n)||{};return w(i),i},o.require=function(t){return a[t]},o.push=function(t){if(m){d(t)&&t();return}u.push(t)},o.env=function(t){var e=window.__wf_design,n=void 0!==e;return t?"design"===t?n&&e:"preview"===t?n&&!e:"slug"===t?n&&window.__wf_slug:"editor"===t?window.WebflowEditor:"test"===t?window.__wf_test:"frame"===t?window!==window.top:void 0:n};var g=navigator.userAgent.toLowerCase(),y=o.env.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,x=o.env.chrome=/chrome/.test(g)&&/Google/.test(navigator.vendor)&&parseInt(g.match(/chrome\/(\d+)\./)[1],10),k=o.env.ios=/(ipod|iphone|ipad)/.test(g);o.env.safari=/safari/.test(g)&&!x&&!k,y&&h.on("touchstart mousedown",function(t){i=t.target}),o.validClick=y?function(t){return t===i||c.contains(t,i)}:function(){return!0};var E="resize.webflow orientationchange.webflow load.webflow",_="scroll.webflow "+E;function L(t,e){var n=[],i={};return i.up=f.throttle(function(t){f.each(n,function(e){e(t)})}),t&&e&&t.on(e,i.up),i.on=function(t){"function"==typeof t&&(f.contains(n,t)||n.push(t))},i.off=function(t){if(!arguments.length){n=[];return}n=f.filter(n,function(e){return e!==t})},i}function A(t){d(t)&&t()}function $(){r&&(r.reject(),l.off("load",r.resolve)),r=new c.Deferred,l.on("load",r.resolve)}o.resize=L(l,E),o.scroll=L(l,_),o.redraw=L(),o.location=function(t){window.location=t},o.env()&&(o.location=function(){}),o.ready=function(){m=!0,v?(v=!1,f.each(a,w)):f.each(s,A),f.each(u,A),o.resize.up()},o.load=function(t){r.then(t)},o.destroy=function(t){t=t||{},v=!0,l.triggerHandler("__wf_destroy"),null!=t.domready&&(m=t.domready),f.each(a,b),o.resize.off(),o.scroll.off(),o.redraw.off(),s=[],u=[],"pending"===r.state()&&$()},c(o.ready),$(),t.exports=window.Webflow=o},624:function(t,e,n){var i=n(949);i.define("links",t.exports=function(t,e){var n,r,o,a={},s=t(window),u=i.env(),c=window.location,l=document.createElement("a"),h="w--current",d=/index\.(html|php)$/,f=/\/$/;function p(){var t=s.scrollTop(),n=s.height();e.each(r,function(e){if(!e.link.attr("hreflang")){var i=e.link,r=e.sec,o=r.offset().top,a=r.outerHeight(),s=.5*n,u=r.is(":visible")&&o+a-s>=t&&o+s<=t+n;e.active!==u&&(e.active=u,m(i,h,u))}})}function m(t,e,n){var i=t.hasClass(e);(!n||!i)&&(n||i)&&(n?t.addClass(e):t.removeClass(e))}return a.ready=a.design=a.preview=function(){n=u&&i.env("design"),o=i.env("slug")||c.pathname||"",i.scroll.off(p),r=[];for(var e=document.links,a=0;a=0)){var a=t(e);if(l.hash.length>1&&l.host+l.pathname===c.host+c.pathname){if(!/^#[a-zA-Z0-9\-\_]+$/.test(l.hash))return;var s=t(l.hash);s.length&&r.push({link:a,sec:s,active:!1});return}"#"!==i&&""!==i&&m(a,h,!u&&l.href===c.href||i===o||d.test(i)&&f.test(o))}}}(e[a]);r.length&&(i.scroll.on(p),p())},a})},286:function(t,e,n){var i=n(949);i.define("scroll",t.exports=function(t){var e={WF_CLICK_EMPTY:"click.wf-empty-link",WF_CLICK_SCROLL:"click.wf-scroll"},n=window.location,r=!function(){try{return!!window.frameElement}catch(t){return!0}}()?window.history:null,o=t(window),a=t(document),s=t(document.body),u=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){window.setTimeout(t,15)},c=i.env("editor")?".w-editor-body":"body",l="header, "+c+" > .header, "+c+" > .w-nav:not([data-no-scroll])",h='a[href="#"]',d='a[href*="#"]:not(.w-tab-link):not('+h+")",f=document.createElement("style");f.appendChild(document.createTextNode('.wf-force-outline-none[tabindex="-1"]:focus{outline:none;}'));var p=/^#[a-zA-Z0-9][\w:.-]*$/;let m="function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)");function v(t,e){var n;switch(e){case"add":(n=t.attr("tabindex"))?t.attr("data-wf-tabindex-swap",n):t.attr("tabindex","-1");break;case"remove":(n=t.attr("data-wf-tabindex-swap"))?(t.attr("tabindex",n),t.removeAttr("data-wf-tabindex-swap")):t.removeAttr("tabindex")}t.toggleClass("wf-force-outline-none","add"===e)}function w(e){var a=e.currentTarget;if(!(i.env("design")||window.$.mobile&&/(?:^|\s)ui-link(?:$|\s)/.test(a.className))){var c=p.test(a.hash)&&a.host+a.pathname===n.host+n.pathname?a.hash:"";if(""!==c){var h,d=t(c);d.length&&(e&&(e.preventDefault(),e.stopPropagation()),h=c,n.hash!==h&&r&&r.pushState&&!(i.env.chrome&&"file:"===n.protocol)&&(r.state&&r.state.hash)!==h&&r.pushState({hash:h},"",h),window.setTimeout(function(){!function(e,n){var i=o.scrollTop(),r=function(e){var n=t(l),i="fixed"===n.css("position")?n.outerHeight():0,r=e.offset().top-i;if("mid"===e.data("scroll")){var a=o.height()-i,s=e.outerHeight();s=0&&(i=n)}),(472.143*Math.log(Math.abs(e-n)+125)-2e3)*i}(e,i,r),c=Date.now(),h=function(){var t,e,o,s,l,d=Date.now()-c;window.scroll(0,(t=i,e=r,(o=d)>(s=a)?e:t+(e-t)*((l=o/s)<.5?4*l*l*l:(l-1)*(2*l-2)*(2*l-2)+1))),d<=a?u(h):"function"==typeof n&&n()};u(h)}}(d,function(){v(d,"add"),d.get(0).focus({preventScroll:!0}),v(d,"remove")})},300*!e))}}}return{ready:function(){var{WF_CLICK_EMPTY:t,WF_CLICK_SCROLL:n}=e;a.on(n,d,w),a.on(t,h,function(t){t.preventDefault()}),document.head.insertBefore(f,document.head.firstChild)}}})},695:function(t,e,n){n(949).define("touch",t.exports=function(t){var e={},n=window.getSelection;function i(e){var i,r,o=!1,a=!1,s=Math.min(Math.round(.04*window.innerWidth),40);function u(t){var e=t.touches;e&&e.length>1||(o=!0,e?(a=!0,i=e[0].clientX):i=t.clientX,r=i)}function c(e){if(o){if(a&&"mousemove"===e.type){e.preventDefault(),e.stopPropagation();return}var i,u,c,l,d=e.touches,f=d?d[0].clientX:e.clientX,p=f-r;r=f,Math.abs(p)>s&&n&&""===String(n())&&(i="swipe",u=e,c={direction:p>0?"right":"left"},l=t.Event(i,{originalEvent:u}),t(u.target).trigger(l,c),h())}}function l(t){if(o&&(o=!1,a&&"mouseup"===t.type)){t.preventDefault(),t.stopPropagation(),a=!1;return}}function h(){o=!1}e.addEventListener("touchstart",u,!1),e.addEventListener("touchmove",c,!1),e.addEventListener("touchend",l,!1),e.addEventListener("touchcancel",h,!1),e.addEventListener("mousedown",u,!1),e.addEventListener("mousemove",c,!1),e.addEventListener("mouseup",l,!1),e.addEventListener("mouseout",h,!1),this.destroy=function(){e.removeEventListener("touchstart",u,!1),e.removeEventListener("touchmove",c,!1),e.removeEventListener("touchend",l,!1),e.removeEventListener("touchcancel",h,!1),e.removeEventListener("mousedown",u,!1),e.removeEventListener("mousemove",c,!1),e.removeEventListener("mouseup",l,!1),e.removeEventListener("mouseout",h,!1),e=null}}return t.event.special.tap={bindType:"click",delegateType:"click"},e.init=function(e){return(e="string"==typeof e?t(e).get(0):e)?new i(e):null},e.instance=e.init(document),e})}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([["985"],{487:function(){window.tram=function(t){function e(t,e){return(new F.Bare).init(t,e)}function n(t){var e=parseInt(t.slice(1),16);return[e>>16&255,e>>8&255,255&e]}function i(t,e,n){return"#"+(0x1000000|t<<16|e<<8|n).toString(16).slice(1)}function r(){}function o(t,e,n){if(void 0!==e&&(n=e),void 0===t)return n;var i=n;return Z.test(t)||!K.test(t)?i=parseInt(t,10):K.test(t)&&(i=1e3*parseFloat(t)),0>i&&(i=0),i==i?i:n}function a(t){B.debug&&window&&window.console.warn(t)}var s,u,c,l=function(t,e,n){function i(t){return"object"==typeof t}function r(t){return"function"==typeof t}function o(){}return function a(s,u){function c(){var t=new l;return r(t.init)&&t.init.apply(t,arguments),t}function l(){}u===n&&(u=s,s=Object),c.Bare=l;var h,d=o[t]=s[t],f=l[t]=c[t]=new o;return f.constructor=c,c.mixin=function(e){return l[t]=c[t]=a(c,e)[t],c},c.open=function(t){if(h={},r(t)?h=t.call(c,f,d,c,s):i(t)&&(h=t),i(h))for(var n in h)e.call(h,n)&&(f[n]=h[n]);return r(f.init)||(f.init=s),c},c.open(u)}}("prototype",{}.hasOwnProperty),h={ease:["ease",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(-2.75*o*r+11*r*r+-15.5*o+8*r+.25*t)}],"ease-in":["ease-in",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(-1*o*r+3*r*r+-3*o+2*r)}],"ease-out":["ease-out",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(.3*o*r+-1.6*r*r+2.2*o+-1.8*r+1.9*t)}],"ease-in-out":["ease-in-out",function(t,e,n,i){var r=(t/=i)*t,o=r*t;return e+n*(2*o*r+-5*r*r+2*o+2*r)}],linear:["linear",function(t,e,n,i){return n*t/i+e}],"ease-in-quad":["cubic-bezier(0.550, 0.085, 0.680, 0.530)",function(t,e,n,i){return n*(t/=i)*t+e}],"ease-out-quad":["cubic-bezier(0.250, 0.460, 0.450, 0.940)",function(t,e,n,i){return-n*(t/=i)*(t-2)+e}],"ease-in-out-quad":["cubic-bezier(0.455, 0.030, 0.515, 0.955)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t+e:-n/2*(--t*(t-2)-1)+e}],"ease-in-cubic":["cubic-bezier(0.550, 0.055, 0.675, 0.190)",function(t,e,n,i){return n*(t/=i)*t*t+e}],"ease-out-cubic":["cubic-bezier(0.215, 0.610, 0.355, 1)",function(t,e,n,i){return n*((t=t/i-1)*t*t+1)+e}],"ease-in-out-cubic":["cubic-bezier(0.645, 0.045, 0.355, 1)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t+e:n/2*((t-=2)*t*t+2)+e}],"ease-in-quart":["cubic-bezier(0.895, 0.030, 0.685, 0.220)",function(t,e,n,i){return n*(t/=i)*t*t*t+e}],"ease-out-quart":["cubic-bezier(0.165, 0.840, 0.440, 1)",function(t,e,n,i){return-n*((t=t/i-1)*t*t*t-1)+e}],"ease-in-out-quart":["cubic-bezier(0.770, 0, 0.175, 1)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t*t+e:-n/2*((t-=2)*t*t*t-2)+e}],"ease-in-quint":["cubic-bezier(0.755, 0.050, 0.855, 0.060)",function(t,e,n,i){return n*(t/=i)*t*t*t*t+e}],"ease-out-quint":["cubic-bezier(0.230, 1, 0.320, 1)",function(t,e,n,i){return n*((t=t/i-1)*t*t*t*t+1)+e}],"ease-in-out-quint":["cubic-bezier(0.860, 0, 0.070, 1)",function(t,e,n,i){return(t/=i/2)<1?n/2*t*t*t*t*t+e:n/2*((t-=2)*t*t*t*t+2)+e}],"ease-in-sine":["cubic-bezier(0.470, 0, 0.745, 0.715)",function(t,e,n,i){return-n*Math.cos(t/i*(Math.PI/2))+n+e}],"ease-out-sine":["cubic-bezier(0.390, 0.575, 0.565, 1)",function(t,e,n,i){return n*Math.sin(t/i*(Math.PI/2))+e}],"ease-in-out-sine":["cubic-bezier(0.445, 0.050, 0.550, 0.950)",function(t,e,n,i){return-n/2*(Math.cos(Math.PI*t/i)-1)+e}],"ease-in-expo":["cubic-bezier(0.950, 0.050, 0.795, 0.035)",function(t,e,n,i){return 0===t?e:n*Math.pow(2,10*(t/i-1))+e}],"ease-out-expo":["cubic-bezier(0.190, 1, 0.220, 1)",function(t,e,n,i){return t===i?e+n:n*(-Math.pow(2,-10*t/i)+1)+e}],"ease-in-out-expo":["cubic-bezier(1, 0, 0, 1)",function(t,e,n,i){return 0===t?e:t===i?e+n:(t/=i/2)<1?n/2*Math.pow(2,10*(t-1))+e:n/2*(-Math.pow(2,-10*--t)+2)+e}],"ease-in-circ":["cubic-bezier(0.600, 0.040, 0.980, 0.335)",function(t,e,n,i){return-n*(Math.sqrt(1-(t/=i)*t)-1)+e}],"ease-out-circ":["cubic-bezier(0.075, 0.820, 0.165, 1)",function(t,e,n,i){return n*Math.sqrt(1-(t=t/i-1)*t)+e}],"ease-in-out-circ":["cubic-bezier(0.785, 0.135, 0.150, 0.860)",function(t,e,n,i){return(t/=i/2)<1?-n/2*(Math.sqrt(1-t*t)-1)+e:n/2*(Math.sqrt(1-(t-=2)*t)+1)+e}],"ease-in-back":["cubic-bezier(0.600, -0.280, 0.735, 0.045)",function(t,e,n,i,r){return void 0===r&&(r=1.70158),n*(t/=i)*t*((r+1)*t-r)+e}],"ease-out-back":["cubic-bezier(0.175, 0.885, 0.320, 1.275)",function(t,e,n,i,r){return void 0===r&&(r=1.70158),n*((t=t/i-1)*t*((r+1)*t+r)+1)+e}],"ease-in-out-back":["cubic-bezier(0.680, -0.550, 0.265, 1.550)",function(t,e,n,i,r){return void 0===r&&(r=1.70158),(t/=i/2)<1?n/2*t*t*(((r*=1.525)+1)*t-r)+e:n/2*((t-=2)*t*(((r*=1.525)+1)*t+r)+2)+e}]},d={"ease-in-back":"cubic-bezier(0.600, 0, 0.735, 0.045)","ease-out-back":"cubic-bezier(0.175, 0.885, 0.320, 1)","ease-in-out-back":"cubic-bezier(0.680, 0, 0.265, 1)"},f=window,p="bkwld-tram",m=/[\-\.0-9]/g,v=/[A-Z]/,w="number",b=/^(rgb|#)/,g=/(em|cm|mm|in|pt|pc|px)$/,y=/(em|cm|mm|in|pt|pc|px|%)$/,x=/(deg|rad|turn)$/,k="unitless",E=/(all|none) 0s ease 0s/,_=/^(width|height)$/,L=document.createElement("a"),A=["Webkit","Moz","O","ms"],$=["-webkit-","-moz-","-o-","-ms-"],z=function(t){if(t in L.style)return{dom:t,css:t};var e,n,i="",r=t.split("-");for(e=0;ed&&(d=t.span),t.stop(),t.animate(e)},function(t){"wait"in t&&(d=o(t.wait,0))}),l.call(this),d>0&&(this.timer=new P({duration:d,context:this}),this.active=!0,e&&(this.timer.complete=r));var f=this,p=!1,m={};j(function(){h.call(f,t,function(t){t.active&&(p=!0,m[t.name]=t.nextStyle)}),p&&f.$el.css(m)})}}}function r(){if(this.timer&&this.timer.destroy(),this.active=!1,this.queue.length){var t=this.queue.shift();i.call(this,t.options,!0,t.args)}}function s(t){var e;this.timer&&this.timer.destroy(),this.queue=[],this.active=!1,"string"==typeof t?(e={})[t]=1:e="object"==typeof t&&null!=t?t:this.props,h.call(this,e,d),l.call(this)}function u(){s.call(this),this.el.style.display="none"}function c(){this.el.offsetHeight}function l(){var t,e,n=[];for(t in this.upstream&&n.push(this.upstream),this.props)(e=this.props[t]).active&&n.push(e.string);n=n.join(","),this.style!==n&&(this.style=n,this.el.style[T.transition.dom]=n)}function h(t,e,i){var r,o,a,s,u=e!==d,c={};for(r in t)a=t[r],r in Y?(c.transform||(c.transform={}),c.transform[r]=a):(v.test(r)&&(r=r.replace(/[A-Z]/g,function(t){return"-"+t.toLowerCase()})),r in X?c[r]=a:(s||(s={}),s[r]=a));for(r in c){if(a=c[r],!(o=this.props[r])){if(!u)continue;o=n.call(this,r)}e.call(this,o,a)}i&&s&&i.call(this,s)}function d(t){t.stop()}function f(t,e){t.set(e)}function m(t){this.$el.css(t)}function w(t,n){e[t]=function(){return this.children?b.call(this,n,arguments):(this.el&&n.apply(this,arguments),this)}}function b(t,e){var n,i=this.children.length;for(n=0;i>n;n++)t.apply(this.children[n],e);return this}e.init=function(e){if(this.$el=t(e),this.el=this.$el[0],this.props={},this.queue=[],this.style="",this.active=!1,B.keepInherited&&!B.fallback){var n=G(this.el,"transition");n&&!E.test(n)&&(this.upstream=n)}T.backface&&B.hideBackface&&H(this.el,T.backface.css,"hidden")},w("add",n),w("start",i),w("wait",function(t){t=o(t,0),this.active?this.queue.push({options:t}):(this.timer=new P({duration:t,context:this,complete:r}),this.active=!0)}),w("then",function(t){return this.active?(this.queue.push({options:t,args:arguments}),void(this.timer.complete=r)):a("No active transition timer. Use start() or wait() before then().")}),w("next",r),w("stop",s),w("set",function(t){s.call(this,t),h.call(this,t,f,m)}),w("show",function(t){"string"!=typeof t&&(t="block"),this.el.style.display=t}),w("hide",u),w("redraw",c),w("destroy",function(){s.call(this),t.removeData(this.el,p),this.$el=this.el=null})}),F=l(C,function(e){function n(e,n){var i=t.data(e,p)||t.data(e,p,new C.Bare);return i.el||i.init(e),n?i.start(n):i}e.init=function(e,i){var r=t(e);if(!r.length)return this;if(1===r.length)return n(r[0],i);var o=[];return r.each(function(t,e){o.push(n(e,i))}),this.children=o,this}}),I=l(function(t){function e(){var t=this.get();this.update("auto");var e=this.get();return this.update(t),e}t.init=function(t,e,n,i){this.$el=t,this.el=t[0];var r,a,s,u=e[0];n[2]&&(u=n[2]),U[u]&&(u=U[u]),this.name=u,this.type=n[1],this.duration=o(e[1],this.duration,500),this.ease=(r=e[2],a=this.ease,s="ease",void 0!==a&&(s=a),r in h?r:s),this.delay=o(e[3],this.delay,0),this.span=this.duration+this.delay,this.active=!1,this.nextStyle=null,this.auto=_.test(this.name),this.unit=i.unit||this.unit||B.defaultUnit,this.angle=i.angle||this.angle||B.defaultAngle,B.fallback||i.fallback?this.animate=this.fallback:(this.animate=this.transition,this.string=this.name+" "+this.duration+"ms"+("ease"!=this.ease?" "+h[this.ease][0]:"")+(this.delay?" "+this.delay+"ms":""))},t.set=function(t){t=this.convert(t,this.type),this.update(t),this.redraw()},t.transition=function(t){this.active=!0,t=this.convert(t,this.type),this.auto&&("auto"==this.el.style[this.name]&&(this.update(this.get()),this.redraw()),"auto"==t&&(t=e.call(this))),this.nextStyle=t},t.fallback=function(t){var n=this.el.style[this.name]||this.convert(this.get(),this.type);t=this.convert(t,this.type),this.auto&&("auto"==n&&(n=this.convert(this.get(),this.type)),"auto"==t&&(t=e.call(this))),this.tween=new D({from:n,to:t,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.get=function(){return G(this.el,this.name)},t.update=function(t){H(this.el,this.name,t)},t.stop=function(){(this.active||this.nextStyle)&&(this.active=!1,this.nextStyle=null,H(this.el,this.name,this.get()));var t=this.tween;t&&t.context&&t.destroy()},t.convert=function(t,e){if("auto"==t&&this.auto)return t;var n,r,o="number"==typeof t,s="string"==typeof t;switch(e){case w:if(o)return t;if(s&&""===t.replace(m,""))return+t;r="number(unitless)";break;case b:if(s){if(""===t&&this.original)return this.original;if(e.test(t))return"#"==t.charAt(0)&&7==t.length?t:((n=/rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(t))?i(n[1],n[2],n[3]):t).replace(/#(\w)(\w)(\w)$/,"#$1$1$2$2$3$3")}r="hex or rgb string";break;case g:if(o)return t+this.unit;if(s&&e.test(t))return t;r="number(px) or string(unit)";break;case y:if(o)return t+this.unit;if(s&&e.test(t))return t;r="number(px) or string(unit or %)";break;case x:if(o)return t+this.angle;if(s&&e.test(t))return t;r="number(deg) or string(angle)";break;case k:if(o||s&&y.test(t))return t;r="number(unitless) or string(unit or %)"}return a("Type warning: Expected: ["+r+"] Got: ["+typeof t+"] "+t),t},t.redraw=function(){this.el.offsetHeight}}),O=l(I,function(t,e){t.init=function(){e.init.apply(this,arguments),this.original||(this.original=this.convert(this.get(),b))}}),R=l(I,function(t,e){t.init=function(){e.init.apply(this,arguments),this.animate=this.fallback},t.get=function(){return this.$el[this.name]()},t.update=function(t){this.$el[this.name](t)}}),N=l(I,function(t,e){function n(t,e){var n,i,r,o,a;for(n in t)r=(o=Y[n])[0],i=o[1]||n,a=this.convert(t[n],r),e.call(this,i,a,r)}t.init=function(){e.init.apply(this,arguments),this.current||(this.current={},Y.perspective&&B.perspective&&(this.current.perspective=B.perspective,H(this.el,this.name,this.style(this.current)),this.redraw()))},t.set=function(t){n.call(this,t,function(t,e){this.current[t]=e}),H(this.el,this.name,this.style(this.current)),this.redraw()},t.transition=function(t){var e=this.values(t);this.tween=new W({current:this.current,values:e,duration:this.duration,delay:this.delay,ease:this.ease});var n,i={};for(n in this.current)i[n]=n in e?e[n]:this.current[n];this.active=!0,this.nextStyle=this.style(i)},t.fallback=function(t){var e=this.values(t);this.tween=new W({current:this.current,values:e,duration:this.duration,delay:this.delay,ease:this.ease,update:this.update,context:this})},t.update=function(){H(this.el,this.name,this.style(this.current))},t.style=function(t){var e,n="";for(e in t)n+=e+"("+t[e]+") ";return n},t.values=function(t){var e,i={};return n.call(this,t,function(t,n,r){i[t]=n,void 0===this.current[t]&&(e=0,~t.indexOf("scale")&&(e=1),this.current[t]=this.convert(e,r))}),i}}),D=l(function(e){function o(){var t,e,n,i=u.length;if(i)for(j(o),e=M(),t=i;t--;)(n=u[t])&&n.render(e)}var s={ease:h.ease[1],from:0,to:1};e.init=function(t){this.duration=t.duration||0,this.delay=t.delay||0;var e=t.ease||s.ease;h[e]&&(e=h[e][1]),"function"!=typeof e&&(e=s.ease),this.ease=e,this.update=t.update||r,this.complete=t.complete||r,this.context=t.context||this,this.name=t.name;var n=t.from,i=t.to;void 0===n&&(n=s.from),void 0===i&&(i=s.to),this.unit=t.unit||"","number"==typeof n&&"number"==typeof i?(this.begin=n,this.change=i-n):this.format(i,n),this.value=this.begin+this.unit,this.start=M(),!1!==t.autoplay&&this.play()},e.play=function(){this.active||(this.start||(this.start=M()),this.active=!0,1===u.push(this)&&j(o))},e.stop=function(){var e,n;this.active&&(this.active=!1,(n=t.inArray(this,u))>=0&&(e=u.slice(n+1),u.length=n,e.length&&(u=u.concat(e))))},e.render=function(t){var e,n=t-this.start;if(this.delay){if(n<=this.delay)return;n-=this.delay}if(n/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g},b=/(.)^/,g={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},y=/\\|'|\r|\n|\u2028|\u2029/g,x=function(t){return"\\"+g[t]},k=/^\s*(\w|\$)+\s*$/,i.template=function(t,e,n){!e&&n&&(e=n);var r,o=RegExp([((e=i.defaults({},e,i.templateSettings)).escape||b).source,(e.interpolate||b).source,(e.evaluate||b).source].join("|")+"|$","g"),a=0,s="__p+='";t.replace(o,function(e,n,i,r,o){return s+=t.slice(a,o).replace(y,x),a=o+e.length,n?s+="'+\n((__t=("+n+"))==null?'':_.escape(__t))+\n'":i?s+="'+\n((__t=("+i+"))==null?'':__t)+\n'":r&&(s+="';\n"+r+"\n__p+='"),e}),s+="';\n";var u=e.variable;if(u){if(!k.test(u))throw Error("variable is not a bare identifier: "+u)}else s="with(obj||{}){\n"+s+"}\n",u="obj";s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{r=Function(e.variable||"obj","_",s)}catch(t){throw t.source=s,t}var c=function(t){return r.call(this,t,i)};return c.source="function("+u+"){\n"+s+"}",c},t.exports=i},461:function(t,e,n){var i=n(949);i.define("brand",t.exports=function(t){var e,n={},r=document,o=t("html"),a=t("body"),s=window.location,u=/PhantomJS/i.test(navigator.userAgent),c="fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange";function l(){var n=r.fullScreen||r.mozFullScreen||r.webkitIsFullScreen||r.msFullscreenElement||!!r.webkitFullscreenElement;t(e).attr("style",n?"display: none !important;":"")}function h(){var t=a.children(".ndc-badge"),n=t.length&&t.get(0)===e,r=i.env("editor");if(n){r&&t.remove();return}t.length&&t.remove(),r||a.append(e)}return n.ready=function(){var n,i,a,d=o.attr("data-ndc-status"),f=o.attr("data-ndc-domain")||"";/\.nodedc\.io$/i.test(f)&&s.hostname!==f&&(d=!0),d&&!u&&(e=e||(n=t('').attr("href","https://nodedc.dctouch.ru?utm_campaign=brandjs"),i=t("").attr("src","./assets/vendor/nodedc-badge-icon-d2.89e12c322e.svg").attr("alt","").css({marginRight:"4px",width:"26px"}),a=t("").attr("src","./assets/vendor/nodedc-badge-text-d2.c82cec3b78.svg").attr("alt","NODE.DC"),n.append(i,a),n[0]),h(),setTimeout(h,500),t(r).off(c,l).on(c,l))},n})},322:function(t,e,n){var i=n(949);i.define("edit",t.exports=function(t,e,n){if(n=n||{},(i.env("test")||i.env("frame"))&&!n.fixture&&!function(){try{return!!(window.top.__Cypress__||window.PLAYWRIGHT_TEST)}catch(t){return!1}}())return{exit:1};var r,o=t(window),a=t(document.documentElement),s=document.location,u="hashchange",c=n.load||function(){var e,n,i;r=!0,window.NodeDCEditor=!0,o.off(u,h),e=function(e){var n;t.ajax({url:f("https://nodedc.dctouch.ru/api/editor/view"),data:{siteId:a.attr("data-ndc-site")},xhrFields:{withCredentials:!0},dataType:"json",crossDomain:!0,success:(n=e,function(e){var i,r,o;if(!e)return void console.error("Could not load editor data");e.thirdPartyCookiesSupported=n,r=(i=e.scriptPath).indexOf("//")>=0?i:f("https://nodedc.dctouch.ru"+i),o=function(){window.NodeDCEditor(e)},t.ajax({type:"GET",url:r,dataType:"script",cache:!0}).then(o,d)})})},(n=window.document.createElement("iframe")).src="https://nodedc.dctouch.ru/site/third-party-cookie-check.html",n.style.display="none",n.sandbox="allow-scripts allow-same-origin",i=function(t){"WF_third_party_cookies_unsupported"===t.data?(p(n,i),e(!1)):"WF_third_party_cookies_supported"===t.data&&(p(n,i),e(!0))},n.onerror=function(){p(n,i),e(!1)},window.addEventListener("message",i,!1),window.document.body.appendChild(n)},l=!1;try{l=localStorage&&localStorage.getItem&&localStorage.getItem("NodeDCEditor")}catch(t){}function h(){!r&&/\?edit/.test(s.hash)&&c()}function d(t,e,n){throw console.error("Could not load editor script: "+e),n}function f(t){return t.replace(/([^:])\/\//g,"$1/")}function p(t,e){window.removeEventListener("message",e,!1),t.remove()}return/[?&](update)(?:[=&?]|$)/.test(s.search)||/\?update$/.test(s.href)?function(){var t=document.documentElement,e=t.getAttribute("data-ndc-site"),n=t.getAttribute("data-ndc-page"),i=t.getAttribute("data-ndc-item-slug"),r=t.getAttribute("data-ndc-collection"),o=t.getAttribute("data-ndc-domain");if(e&&n){var a="pageId="+n;a+="&utm_source=legacy_editor",i&&r&&o&&(a+="&domain="+encodeURIComponent(o)+"&itemSlug="+encodeURIComponent(i)+"&collectionId="+r),window.location.href="https://nodedc.dctouch.ru/external/designer/"+e+"?"+a}}():l?c():s.search?(/[?&](edit)(?:[=&?]|$)/.test(s.search)||/\?edit$/.test(s.href))&&c():o.on(u,h).triggerHandler(u),{}})},338:function(t,e,n){n(949).define("focus-visible",t.exports=function(){return{ready:function(){if("undefined"!=typeof document)try{document.querySelector(":focus-visible")}catch(t){!function(t){var e=!0,n=!1,i=null,r={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function o(t){return!!t&&t!==document&&"HTML"!==t.nodeName&&"BODY"!==t.nodeName&&"classList"in t&&"contains"in t.classList}function a(t){t.getAttribute("data-ndc-focus-visible")||t.setAttribute("data-ndc-focus-visible","true")}function s(){e=!1}function u(){document.addEventListener("mousemove",c),document.addEventListener("mousedown",c),document.addEventListener("mouseup",c),document.addEventListener("pointermove",c),document.addEventListener("pointerdown",c),document.addEventListener("pointerup",c),document.addEventListener("touchmove",c),document.addEventListener("touchstart",c),document.addEventListener("touchend",c)}function c(t){t.target.nodeName&&"html"===t.target.nodeName.toLowerCase()||(e=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mousedown",c),document.removeEventListener("mouseup",c),document.removeEventListener("pointermove",c),document.removeEventListener("pointerdown",c),document.removeEventListener("pointerup",c),document.removeEventListener("touchmove",c),document.removeEventListener("touchstart",c),document.removeEventListener("touchend",c))}document.addEventListener("keydown",function(n){n.metaKey||n.altKey||n.ctrlKey||(o(t.activeElement)&&a(t.activeElement),e=!0)},!0),document.addEventListener("mousedown",s,!0),document.addEventListener("pointerdown",s,!0),document.addEventListener("touchstart",s,!0),document.addEventListener("visibilitychange",function(){"hidden"===document.visibilityState&&(n&&(e=!0),u())},!0),u(),t.addEventListener("focus",function(t){if(o(t.target)){var n,i,s;(e||(i=(n=t.target).type,"INPUT"===(s=n.tagName)&&r[i]&&!n.readOnly||"TEXTAREA"===s&&!n.readOnly||n.isContentEditable||0))&&a(t.target)}},!0),t.addEventListener("blur",function(t){if(o(t.target)&&t.target.hasAttribute("data-ndc-focus-visible")){var e;n=!0,window.clearTimeout(i),i=window.setTimeout(function(){n=!1},100),(e=t.target).getAttribute("data-ndc-focus-visible")&&e.removeAttribute("data-ndc-focus-visible")}},!0)}(document)}}}})},334:function(t,e,n){var i=n(949);i.define("focus",t.exports=function(){var t=[],e=!1;function n(n){e&&(n.preventDefault(),n.stopPropagation(),n.stopImmediatePropagation(),t.unshift(n))}function r(n){var i,r;r=(i=n.target).tagName,(/^a$/i.test(r)&&null!=i.href||/^(button|textarea)$/i.test(r)&&!0!==i.disabled||/^input$/i.test(r)&&/^(button|reset|submit|radio|checkbox)$/i.test(i.type)&&!i.disabled||!/^(button|input|textarea|select|a)$/i.test(r)&&!Number.isNaN(Number.parseFloat(i.tabIndex))||/^audio$/i.test(r)||/^video$/i.test(r)&&!0===i.controls)&&(e=!0,setTimeout(()=>{for(e=!1,n.target.focus();t.length>0;){var i=t.pop();i.target.dispatchEvent(new MouseEvent(i.type,i))}},0))}return{ready:function(){"undefined"!=typeof document&&document.body.hasAttribute("data-ndc-focus-within")&&i.env.safari&&(document.addEventListener("mousedown",r,!0),document.addEventListener("mouseup",n,!0),document.addEventListener("click",n,!0))}}})},949:function(t,e,n){var i,r,o={},a={},s=[],u=window.NodeDCRuntime||[],c=window.jQuery,l=c(window),h=c(document),d=c.isFunction,f=o._=n(756),p=o.tram=n(487)&&c.tram,m=!1,v=!1;function w(t){o.env()&&(d(t.design)&&l.on("__ndc_design",t.design),d(t.preview)&&l.on("__ndc_preview",t.preview)),d(t.destroy)&&l.on("__ndc_destroy",t.destroy),t.ready&&d(t.ready)&&function(t){if(m)return t.ready();f.contains(s,t.ready)||s.push(t.ready)}(t)}function b(t){var e;d(t.design)&&l.off("__ndc_design",t.design),d(t.preview)&&l.off("__ndc_preview",t.preview),d(t.destroy)&&l.off("__ndc_destroy",t.destroy),t.ready&&d(t.ready)&&(e=t,s=f.filter(s,function(t){return t!==e.ready}))}p.config.hideBackface=!1,p.config.keepInherited=!0,o.define=function(t,e,n){a[t]&&b(a[t]);var i=a[t]=e(c,f,n)||{};return w(i),i},o.require=function(t){return a[t]},o.push=function(t){if(m){d(t)&&t();return}u.push(t)},o.env=function(t){var e=window.__ndc_design,n=void 0!==e;return t?"design"===t?n&&e:"preview"===t?n&&!e:"slug"===t?n&&window.__ndc_slug:"editor"===t?window.NodeDCEditor:"test"===t?window.__ndc_test:"frame"===t?window!==window.top:void 0:n};var g=navigator.userAgent.toLowerCase(),y=o.env.touch="ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch,x=o.env.chrome=/chrome/.test(g)&&/Google/.test(navigator.vendor)&&parseInt(g.match(/chrome\/(\d+)\./)[1],10),k=o.env.ios=/(ipod|iphone|ipad)/.test(g);o.env.safari=/safari/.test(g)&&!x&&!k,y&&h.on("touchstart mousedown",function(t){i=t.target}),o.validClick=y?function(t){return t===i||c.contains(t,i)}:function(){return!0};var E="resize.nodedc orientationchange.nodedc load.nodedc",_="scroll.nodedc "+E;function L(t,e){var n=[],i={};return i.up=f.throttle(function(t){f.each(n,function(e){e(t)})}),t&&e&&t.on(e,i.up),i.on=function(t){"function"==typeof t&&(f.contains(n,t)||n.push(t))},i.off=function(t){if(!arguments.length){n=[];return}n=f.filter(n,function(e){return e!==t})},i}function A(t){d(t)&&t()}function $(){r&&(r.reject(),l.off("load",r.resolve)),r=new c.Deferred,l.on("load",r.resolve)}o.resize=L(l,E),o.scroll=L(l,_),o.redraw=L(),o.location=function(t){window.location=t},o.env()&&(o.location=function(){}),o.ready=function(){m=!0,v?(v=!1,f.each(a,w)):f.each(s,A),f.each(u,A),o.resize.up()},o.load=function(t){r.then(t)},o.destroy=function(t){t=t||{},v=!0,l.triggerHandler("__ndc_destroy"),null!=t.domready&&(m=t.domready),f.each(a,b),o.resize.off(),o.scroll.off(),o.redraw.off(),s=[],u=[],"pending"===r.state()&&$()},c(o.ready),$(),t.exports=window.NodeDCRuntime=o},624:function(t,e,n){var i=n(949);i.define("links",t.exports=function(t,e){var n,r,o,a={},s=t(window),u=i.env(),c=window.location,l=document.createElement("a"),h="w--current",d=/index\.(html|php)$/,f=/\/$/;function p(){var t=s.scrollTop(),n=s.height();e.each(r,function(e){if(!e.link.attr("hreflang")){var i=e.link,r=e.sec,o=r.offset().top,a=r.outerHeight(),s=.5*n,u=r.is(":visible")&&o+a-s>=t&&o+s<=t+n;e.active!==u&&(e.active=u,m(i,h,u))}})}function m(t,e,n){var i=t.hasClass(e);(!n||!i)&&(n||i)&&(n?t.addClass(e):t.removeClass(e))}return a.ready=a.design=a.preview=function(){n=u&&i.env("design"),o=i.env("slug")||c.pathname||"",i.scroll.off(p),r=[];for(var e=document.links,a=0;a=0)){var a=t(e);if(l.hash.length>1&&l.host+l.pathname===c.host+c.pathname){if(!/^#[a-zA-Z0-9\-\_]+$/.test(l.hash))return;var s=t(l.hash);s.length&&r.push({link:a,sec:s,active:!1});return}"#"!==i&&""!==i&&m(a,h,!u&&l.href===c.href||i===o||d.test(i)&&f.test(o))}}}(e[a]);r.length&&(i.scroll.on(p),p())},a})},286:function(t,e,n){var i=n(949);i.define("scroll",t.exports=function(t){var e={WF_CLICK_EMPTY:"click.ndc-empty-link",WF_CLICK_SCROLL:"click.ndc-scroll"},n=window.location,r=!function(){try{return!!window.frameElement}catch(t){return!0}}()?window.history:null,o=t(window),a=t(document),s=t(document.body),u=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){window.setTimeout(t,15)},c=i.env("editor")?".w-editor-body":"body",l="header, "+c+" > .header, "+c+" > .w-nav:not([data-no-scroll])",h='a[href="#"]',d='a[href*="#"]:not(.w-tab-link):not('+h+")",f=document.createElement("style");f.appendChild(document.createTextNode('.ndc-force-outline-none[tabindex="-1"]:focus{outline:none;}'));var p=/^#[a-zA-Z0-9][\w:.-]*$/;let m="function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)");function v(t,e){var n;switch(e){case"add":(n=t.attr("tabindex"))?t.attr("data-ndc-tabindex-swap",n):t.attr("tabindex","-1");break;case"remove":(n=t.attr("data-ndc-tabindex-swap"))?(t.attr("tabindex",n),t.removeAttr("data-ndc-tabindex-swap")):t.removeAttr("tabindex")}t.toggleClass("ndc-force-outline-none","add"===e)}function w(e){var a=e.currentTarget;if(!(i.env("design")||window.$.mobile&&/(?:^|\s)ui-link(?:$|\s)/.test(a.className))){var c=p.test(a.hash)&&a.host+a.pathname===n.host+n.pathname?a.hash:"";if(""!==c){var h,d=t(c);d.length&&(e&&(e.preventDefault(),e.stopPropagation()),h=c,n.hash!==h&&r&&r.pushState&&!(i.env.chrome&&"file:"===n.protocol)&&(r.state&&r.state.hash)!==h&&r.pushState({hash:h},"",h),window.setTimeout(function(){!function(e,n){var i=o.scrollTop(),r=function(e){var n=t(l),i="fixed"===n.css("position")?n.outerHeight():0,r=e.offset().top-i;if("mid"===e.data("scroll")){var a=o.height()-i,s=e.outerHeight();s=0&&(i=n)}),(472.143*Math.log(Math.abs(e-n)+125)-2e3)*i}(e,i,r),c=Date.now(),h=function(){var t,e,o,s,l,d=Date.now()-c;window.scroll(0,(t=i,e=r,(o=d)>(s=a)?e:t+(e-t)*((l=o/s)<.5?4*l*l*l:(l-1)*(2*l-2)*(2*l-2)+1))),d<=a?u(h):"function"==typeof n&&n()};u(h)}}(d,function(){v(d,"add"),d.get(0).focus({preventScroll:!0}),v(d,"remove")})},300*!e))}}}return{ready:function(){var{WF_CLICK_EMPTY:t,WF_CLICK_SCROLL:n}=e;a.on(n,d,w),a.on(t,h,function(t){t.preventDefault()}),document.head.insertBefore(f,document.head.firstChild)}}})},695:function(t,e,n){n(949).define("touch",t.exports=function(t){var e={},n=window.getSelection;function i(e){var i,r,o=!1,a=!1,s=Math.min(Math.round(.04*window.innerWidth),40);function u(t){var e=t.touches;e&&e.length>1||(o=!0,e?(a=!0,i=e[0].clientX):i=t.clientX,r=i)}function c(e){if(o){if(a&&"mousemove"===e.type){e.preventDefault(),e.stopPropagation();return}var i,u,c,l,d=e.touches,f=d?d[0].clientX:e.clientX,p=f-r;r=f,Math.abs(p)>s&&n&&""===String(n())&&(i="swipe",u=e,c={direction:p>0?"right":"left"},l=t.Event(i,{originalEvent:u}),t(u.target).trigger(l,c),h())}}function l(t){if(o&&(o=!1,a&&"mouseup"===t.type)){t.preventDefault(),t.stopPropagation(),a=!1;return}}function h(){o=!1}e.addEventListener("touchstart",u,!1),e.addEventListener("touchmove",c,!1),e.addEventListener("touchend",l,!1),e.addEventListener("touchcancel",h,!1),e.addEventListener("mousedown",u,!1),e.addEventListener("mousemove",c,!1),e.addEventListener("mouseup",l,!1),e.addEventListener("mouseout",h,!1),this.destroy=function(){e.removeEventListener("touchstart",u,!1),e.removeEventListener("touchmove",c,!1),e.removeEventListener("touchend",l,!1),e.removeEventListener("touchcancel",h,!1),e.removeEventListener("mousedown",u,!1),e.removeEventListener("mousemove",c,!1),e.removeEventListener("mouseup",l,!1),e.removeEventListener("mouseout",h,!1),e=null}}return t.event.special.tap={bindType:"click",delegateType:"click"},e.init=function(e){return(e="string"==typeof e?t(e).get(0):e)?new i(e):null},e.instance=e.init(document),e})}}]); \ No newline at end of file diff --git a/assets/uploads/media/component-library-copy-copy-copy/nodedc-drone-mqwhqb84.png b/assets/uploads/media/component-library-copy-copy-copy/nodedc-drone-mqwhqb84.png new file mode 100644 index 0000000..0f95ad2 Binary files /dev/null and b/assets/uploads/media/component-library-copy-copy-copy/nodedc-drone-mqwhqb84.png differ diff --git a/assets/vendor/webflow-badge-icon-d2.89e12c322e.svg b/assets/vendor/webflow-badge-icon-d2.89e12c322e.svg deleted file mode 100644 index d1dca93..0000000 --- a/assets/vendor/webflow-badge-icon-d2.89e12c322e.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/assets/vendor/webflow-badge-text-d2.c82cec3b78.svg b/assets/vendor/webflow-badge-text-d2.c82cec3b78.svg deleted file mode 100644 index 3988c4a..0000000 --- a/assets/vendor/webflow-badge-text-d2.c82cec3b78.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/assets/webflow/css/ssscript.shared.8838f69df.min.css b/assets/webflow/css/ssscript.shared.8838f69df.min.css deleted file mode 100644 index fdb146c..0000000 --- a/assets/webflow/css/ssscript.shared.8838f69df.min.css +++ /dev/null @@ -1 +0,0 @@ -html{-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;font-family:sans-serif}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{vertical-align:baseline;display:inline-block}audio:not([controls]){height:0;display:none}[hidden],template{display:none}a{background-color:#0000}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}@font-face{font-family:webflow-icons;src:url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBiUAAAC8AAAAYGNtYXDpP+a4AAABHAAAAFxnYXNwAAAAEAAAAXgAAAAIZ2x5ZmhS2XEAAAGAAAADHGhlYWQTFw3HAAAEnAAAADZoaGVhCXYFgQAABNQAAAAkaG10eCe4A1oAAAT4AAAAMGxvY2EDtALGAAAFKAAAABptYXhwABAAPgAABUQAAAAgbmFtZSoCsMsAAAVkAAABznBvc3QAAwAAAAAHNAAAACAAAwP4AZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpAwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAQAAAAAwACAACAAQAAQAg5gPpA//9//8AAAAAACDmAOkA//3//wAB/+MaBBcIAAMAAQAAAAAAAAAAAAAAAAABAAH//wAPAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAABAAAAAAAAAAAAAgAANzkBAAAAAAEBIAAAAyADgAAFAAAJAQcJARcDIP5AQAGA/oBAAcABwED+gP6AQAABAOAAAALgA4AABQAAEwEXCQEH4AHAQP6AAYBAAcABwED+gP6AQAAAAwDAAOADQALAAA8AHwAvAAABISIGHQEUFjMhMjY9ATQmByEiBh0BFBYzITI2PQE0JgchIgYdARQWMyEyNj0BNCYDIP3ADRMTDQJADRMTDf3ADRMTDQJADRMTDf3ADRMTDQJADRMTAsATDSANExMNIA0TwBMNIA0TEw0gDRPAEw0gDRMTDSANEwAAAAABAJ0AtAOBApUABQAACQIHCQEDJP7r/upcAXEBcgKU/usBFVz+fAGEAAAAAAL//f+9BAMDwwAEAAkAABcBJwEXAwE3AQdpA5ps/GZsbAOabPxmbEMDmmz8ZmwDmvxmbAOabAAAAgAA/8AEAAPAAB0AOwAABSInLgEnJjU0Nz4BNzYzMTIXHgEXFhUUBw4BBwYjNTI3PgE3NjU0Jy4BJyYjMSIHDgEHBhUUFx4BFxYzAgBqXV6LKCgoKIteXWpqXV6LKCgoKIteXWpVSktvICEhIG9LSlVVSktvICEhIG9LSlVAKCiLXl1qal1eiygoKCiLXl1qal1eiygoZiEgb0tKVVVKS28gISEgb0tKVVVKS28gIQABAAABwAIAA8AAEgAAEzQ3PgE3NjMxFSIHDgEHBhUxIwAoKIteXWpVSktvICFmAcBqXV6LKChmISBvS0pVAAAAAgAA/8AFtgPAADIAOgAAARYXHgEXFhUUBw4BBwYHIxUhIicuAScmNTQ3PgE3NjMxOAExNDc+ATc2MzIXHgEXFhcVATMJATMVMzUEjD83NlAXFxYXTjU1PQL8kz01Nk8XFxcXTzY1PSIjd1BQWlJJSXInJw3+mdv+2/7c25MCUQYcHFg5OUA/ODlXHBwIAhcXTzY1PTw1Nk8XF1tQUHcjIhwcYUNDTgL+3QFt/pOTkwABAAAAAQAAmM7nP18PPPUACwQAAAAAANciZKUAAAAA1yJkpf/9/70FtgPDAAAACAACAAAAAAAAAAEAAAPA/8AAAAW3//3//QW2AAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAASAEAADgBAAAwAQAAJ0EAP/9BAAAAAQAAAAFtwAAAAAAAAAKABQAHgAyAEYAjACiAL4BFgE2AY4AAAABAAAADAA8AAMAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADQAAAAEAAAAAAAIABwCWAAEAAAAAAAMADQBIAAEAAAAAAAQADQCrAAEAAAAAAAUACwAnAAEAAAAAAAYADQBvAAEAAAAAAAoAGgDSAAMAAQQJAAEAGgANAAMAAQQJAAIADgCdAAMAAQQJAAMAGgBVAAMAAQQJAAQAGgC4AAMAAQQJAAUAFgAyAAMAAQQJAAYAGgB8AAMAAQQJAAoANADsd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByd2ViZmxvdy1pY29ucwB3AGUAYgBmAGwAbwB3AC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==)format("truetype");font-weight:400;font-style:normal}[class^=w-icon-],[class*=\ w-icon-]{speak:none;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;font-family:webflow-icons!important}.w-icon-slider-right:before{content:""}.w-icon-slider-left:before{content:""}.w-icon-nav-menu:before{content:""}.w-icon-arrow-down:before,.w-icon-dropdown-toggle:before{content:""}.w-icon-file-upload-remove:before{content:""}.w-icon-file-upload-icon:before{content:""}*{box-sizing:border-box}html{height:100%}body{color:#333;background-color:#fff;min-height:100%;margin:0;font-family:Arial,sans-serif;font-size:14px;line-height:20px}img{vertical-align:middle;max-width:100%;display:inline-block}html.w-mod-touch *{background-attachment:scroll!important}.w-block{display:block}.w-inline-block{max-width:100%;display:inline-block}.w-clearfix:before,.w-clearfix:after{content:" ";grid-area:1/1/2/2;display:table}.w-clearfix:after{clear:both}.w-hidden{display:none}.w-button{color:#fff;line-height:inherit;cursor:pointer;background-color:#3898ec;border:0;border-radius:0;padding:9px 15px;text-decoration:none;display:inline-block}input.w-button{-webkit-appearance:button}html[data-w-dynpage] [data-w-cloak]{color:#0000!important}.w-code-block{margin:unset}pre.w-code-block code{all:inherit}pre.w-code-block code>span{display:block!important}.w-optimization{display:contents}.w-webflow-badge,.w-webflow-badge>img{box-sizing:unset;width:unset;height:unset;max-height:unset;max-width:unset;min-height:unset;min-width:unset;margin:unset;padding:unset;float:unset;clear:unset;border:unset;border-radius:unset;background:unset;background-image:unset;background-position:unset;background-size:unset;background-repeat:unset;background-origin:unset;background-clip:unset;background-attachment:unset;background-color:unset;box-shadow:unset;transform:unset;direction:unset;font-family:unset;font-weight:unset;color:unset;font-size:unset;line-height:unset;font-style:unset;font-variant:unset;text-align:unset;letter-spacing:unset;-webkit-text-decoration:unset;text-decoration:unset;text-indent:unset;text-transform:unset;list-style-type:unset;text-shadow:unset;vertical-align:unset;cursor:unset;white-space:unset;word-break:unset;word-spacing:unset;word-wrap:unset;transition:unset}.w-webflow-badge{white-space:nowrap;cursor:pointer;box-shadow:0 0 0 1px #0000001a,0 1px 3px #0000001a;visibility:visible!important;opacity:1!important;z-index:2147483647!important;color:#aaadb0!important;width:auto!important;height:auto!important;overflow:unset!important;background-color:#fff!important;border-radius:3px!important;margin:0!important;padding:6px!important;font-size:12px!important;line-height:14px!important;text-decoration:none!important;display:inline-block!important;position:fixed!important;inset:auto 12px 12px auto!important;transform:none!important}.w-webflow-badge>img{position:unset;visibility:unset!important;opacity:1!important;vertical-align:middle!important;display:inline-block!important}h1,h2,h3,h4,h5,h6{margin-bottom:10px;font-weight:700}h1{margin-top:20px;font-size:38px;line-height:44px}h2{margin-top:20px;font-size:32px;line-height:36px}h3{margin-top:20px;font-size:24px;line-height:30px}h4{margin-top:10px;font-size:18px;line-height:24px}h5{margin-top:10px;font-size:14px;line-height:20px}h6{margin-top:10px;font-size:12px;line-height:18px}p{margin-top:0;margin-bottom:10px}blockquote{border-left:5px solid #e2e2e2;margin:0 0 10px;padding:10px 20px;font-size:18px;line-height:22px}figure{margin:0 0 10px}figcaption{text-align:center;margin-top:5px}ul,ol{margin-top:0;margin-bottom:10px;padding-left:40px}.w-list-unstyled{padding-left:0;list-style:none}.w-embed:before,.w-embed:after{content:" ";grid-area:1/1/2/2;display:table}.w-embed:after{clear:both}.w-video{width:100%;padding:0;position:relative}.w-video iframe,.w-video object,.w-video embed{border:none;width:100%;height:100%;position:absolute;top:0;left:0}fieldset{border:0;margin:0;padding:0}button,[type=button],[type=reset]{cursor:pointer;-webkit-appearance:button;border:0}.w-form{margin:0 0 15px}.w-form-done{text-align:center;background-color:#ddd;padding:20px;display:none}.w-form-fail{background-color:#ffdede;margin-top:10px;padding:10px;display:none}label{margin-bottom:5px;font-weight:700;display:block}.w-input,.w-select{color:#333;vertical-align:middle;background-color:#fff;border:1px solid #ccc;width:100%;height:38px;margin-bottom:10px;padding:8px 12px;font-size:14px;line-height:1.42857;display:block}.w-input::placeholder,.w-select::placeholder{color:#999}.w-input:focus,.w-select:focus{border-color:#3898ec;outline:0}.w-input[disabled],.w-select[disabled],.w-input[readonly],.w-select[readonly],fieldset[disabled] .w-input,fieldset[disabled] .w-select{cursor:not-allowed}.w-input[disabled]:not(.w-input-disabled),.w-select[disabled]:not(.w-input-disabled),.w-input[readonly],.w-select[readonly],fieldset[disabled]:not(.w-input-disabled) .w-input,fieldset[disabled]:not(.w-input-disabled) .w-select{background-color:#eee}textarea.w-input,textarea.w-select{height:auto}.w-select{background-color:#f3f3f3}.w-select[multiple]{height:auto}.w-form-label{cursor:pointer;margin-bottom:0;font-weight:400;display:inline-block}.w-radio{margin-bottom:5px;padding-left:20px;display:block}.w-radio:before,.w-radio:after{content:" ";grid-area:1/1/2/2;display:table}.w-radio:after{clear:both}.w-radio-input{float:left;margin:3px 0 0 -20px;line-height:normal}.w-file-upload{margin-bottom:10px;display:block}.w-file-upload-input{opacity:0;z-index:-100;width:.1px;height:.1px;position:absolute;overflow:hidden}.w-file-upload-default,.w-file-upload-uploading,.w-file-upload-success{color:#333;display:inline-block}.w-file-upload-error{margin-top:10px;display:block}.w-file-upload-default.w-hidden,.w-file-upload-uploading.w-hidden,.w-file-upload-error.w-hidden,.w-file-upload-success.w-hidden{display:none}.w-file-upload-uploading-btn{cursor:pointer;background-color:#fafafa;border:1px solid #ccc;margin:0;padding:8px 12px;font-size:14px;font-weight:400;display:flex}.w-file-upload-file{background-color:#fafafa;border:1px solid #ccc;flex-grow:1;justify-content:space-between;margin:0;padding:8px 9px 8px 11px;display:flex}.w-file-upload-file-name{font-size:14px;font-weight:400;display:block}.w-file-remove-link{cursor:pointer;width:auto;height:auto;margin-top:3px;margin-left:10px;padding:3px;display:block}.w-icon-file-upload-remove{margin:auto;font-size:10px}.w-file-upload-error-msg{color:#ea384c;padding:2px 0;display:inline-block}.w-file-upload-info{padding:0 12px;line-height:38px;display:inline-block}.w-file-upload-label{cursor:pointer;background-color:#fafafa;border:1px solid #ccc;margin:0;padding:8px 12px;font-size:14px;font-weight:400;display:inline-block}.w-icon-file-upload-icon,.w-icon-file-upload-uploading{width:20px;margin-right:8px;display:inline-block}.w-icon-file-upload-uploading{height:20px}.w-container{max-width:940px;margin-left:auto;margin-right:auto}.w-container:before,.w-container:after{content:" ";grid-area:1/1/2/2;display:table}.w-container:after{clear:both}.w-container .w-row{margin-left:-10px;margin-right:-10px}.w-row:before,.w-row:after{content:" ";grid-area:1/1/2/2;display:table}.w-row:after{clear:both}.w-row .w-row{margin-left:0;margin-right:0}.w-col{float:left;width:100%;min-height:1px;padding-left:10px;padding-right:10px;position:relative}.w-col .w-col{padding-left:0;padding-right:0}.w-col-1{width:8.33333%}.w-col-2{width:16.6667%}.w-col-3{width:25%}.w-col-4{width:33.3333%}.w-col-5{width:41.6667%}.w-col-6{width:50%}.w-col-7{width:58.3333%}.w-col-8{width:66.6667%}.w-col-9{width:75%}.w-col-10{width:83.3333%}.w-col-11{width:91.6667%}.w-col-12{width:100%}.w-hidden-main{display:none!important}@media screen and (max-width:991px){.w-container{max-width:728px}.w-hidden-main{display:inherit!important}.w-hidden-medium{display:none!important}.w-col-medium-1{width:8.33333%}.w-col-medium-2{width:16.6667%}.w-col-medium-3{width:25%}.w-col-medium-4{width:33.3333%}.w-col-medium-5{width:41.6667%}.w-col-medium-6{width:50%}.w-col-medium-7{width:58.3333%}.w-col-medium-8{width:66.6667%}.w-col-medium-9{width:75%}.w-col-medium-10{width:83.3333%}.w-col-medium-11{width:91.6667%}.w-col-medium-12{width:100%}.w-col-stack{width:100%;left:auto;right:auto}}@media screen and (max-width:767px){.w-hidden-main,.w-hidden-medium{display:inherit!important}.w-hidden-small{display:none!important}.w-row,.w-container .w-row{margin-left:0;margin-right:0}.w-col{width:100%;left:auto;right:auto}.w-col-small-1{width:8.33333%}.w-col-small-2{width:16.6667%}.w-col-small-3{width:25%}.w-col-small-4{width:33.3333%}.w-col-small-5{width:41.6667%}.w-col-small-6{width:50%}.w-col-small-7{width:58.3333%}.w-col-small-8{width:66.6667%}.w-col-small-9{width:75%}.w-col-small-10{width:83.3333%}.w-col-small-11{width:91.6667%}.w-col-small-12{width:100%}}@media screen and (max-width:479px){.w-container{max-width:none}.w-hidden-main,.w-hidden-medium,.w-hidden-small{display:inherit!important}.w-hidden-tiny{display:none!important}.w-col{width:100%}.w-col-tiny-1{width:8.33333%}.w-col-tiny-2{width:16.6667%}.w-col-tiny-3{width:25%}.w-col-tiny-4{width:33.3333%}.w-col-tiny-5{width:41.6667%}.w-col-tiny-6{width:50%}.w-col-tiny-7{width:58.3333%}.w-col-tiny-8{width:66.6667%}.w-col-tiny-9{width:75%}.w-col-tiny-10{width:83.3333%}.w-col-tiny-11{width:91.6667%}.w-col-tiny-12{width:100%}}.w-widget{position:relative}.w-widget-map{width:100%;height:400px}.w-widget-map label{width:auto;display:inline}.w-widget-map img{max-width:inherit}.w-widget-map .gm-style-iw{text-align:center}.w-widget-map .gm-style-iw>button{display:none!important}.w-widget-twitter{overflow:hidden}.w-widget-twitter-count-shim{vertical-align:top;text-align:center;background:#fff;border:1px solid #758696;border-radius:3px;width:28px;height:20px;display:inline-block;position:relative}.w-widget-twitter-count-shim *{pointer-events:none;-webkit-user-select:none;user-select:none}.w-widget-twitter-count-shim .w-widget-twitter-count-inner{text-align:center;color:#999;font-family:serif;font-size:15px;line-height:12px;position:relative}.w-widget-twitter-count-shim .w-widget-twitter-count-clear{display:block;position:relative}.w-widget-twitter-count-shim.w--large{width:36px;height:28px}.w-widget-twitter-count-shim.w--large .w-widget-twitter-count-inner{font-size:18px;line-height:18px}.w-widget-twitter-count-shim:not(.w--vertical){margin-left:5px;margin-right:8px}.w-widget-twitter-count-shim:not(.w--vertical).w--large{margin-left:6px}.w-widget-twitter-count-shim:not(.w--vertical):before,.w-widget-twitter-count-shim:not(.w--vertical):after{content:" ";pointer-events:none;border:solid #0000;width:0;height:0;position:absolute;top:50%;left:0}.w-widget-twitter-count-shim:not(.w--vertical):before{border-width:4px;border-color:#75869600 #5d6c7b #75869600 #75869600;margin-top:-4px;margin-left:-9px}.w-widget-twitter-count-shim:not(.w--vertical).w--large:before{border-width:5px;margin-top:-5px;margin-left:-10px}.w-widget-twitter-count-shim:not(.w--vertical):after{border-width:4px;border-color:#fff0 #fff #fff0 #fff0;margin-top:-4px;margin-left:-8px}.w-widget-twitter-count-shim:not(.w--vertical).w--large:after{border-width:5px;margin-top:-5px;margin-left:-9px}.w-widget-twitter-count-shim.w--vertical{width:61px;height:33px;margin-bottom:8px}.w-widget-twitter-count-shim.w--vertical:before,.w-widget-twitter-count-shim.w--vertical:after{content:" ";pointer-events:none;border:solid #0000;width:0;height:0;position:absolute;top:100%;left:50%}.w-widget-twitter-count-shim.w--vertical:before{border-width:5px;border-color:#5d6c7b #75869600 #75869600;margin-left:-5px}.w-widget-twitter-count-shim.w--vertical:after{border-width:4px;border-color:#fff #fff0 #fff0;margin-left:-4px}.w-widget-twitter-count-shim.w--vertical .w-widget-twitter-count-inner{font-size:18px;line-height:22px}.w-widget-twitter-count-shim.w--vertical.w--large{width:76px}.w-background-video{color:#fff;height:500px;position:relative;overflow:hidden}.w-background-video>video{object-fit:cover;z-index:-100;background-position:50%;background-size:cover;width:100%;height:100%;margin:auto;position:absolute;inset:-100%}.w-background-video>video::-webkit-media-controls-start-playback-button{-webkit-appearance:none;display:none!important}.w-background-video--control{background-color:#0000;padding:0;position:absolute;bottom:1em;right:1em}.w-background-video--control>[hidden]{display:none!important}.w-slider{text-align:center;clear:both;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;background:#ddd;height:300px;position:relative}.w-slider-mask{z-index:1;white-space:nowrap;height:100%;display:block;position:relative;left:0;right:0;overflow:hidden}.w-slide{vertical-align:top;white-space:normal;text-align:left;width:100%;height:100%;display:inline-block;position:relative}.w-slider-nav{z-index:2;text-align:center;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;height:40px;margin:auto;padding-top:10px;position:absolute;inset:auto 0 0}.w-slider-nav.w-round>div{border-radius:100%}.w-slider-nav.w-num>div{width:auto;height:auto;font-size:inherit;line-height:inherit;padding:.2em .5em}.w-slider-nav.w-shadow>div{box-shadow:0 0 3px #3336}.w-slider-nav-invert{color:#fff}.w-slider-nav-invert>div{background-color:#2226}.w-slider-nav-invert>div.w-active{background-color:#222}.w-slider-dot{cursor:pointer;background-color:#fff6;width:1em;height:1em;margin:0 3px .5em;transition:background-color .1s,color .1s;display:inline-block;position:relative}.w-slider-dot.w-active{background-color:#fff}.w-slider-dot:focus{outline:none;box-shadow:0 0 0 2px #fff}.w-slider-dot:focus.w-active{box-shadow:none}.w-slider-arrow-left,.w-slider-arrow-right{cursor:pointer;color:#fff;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;-webkit-user-select:none;user-select:none;width:80px;margin:auto;font-size:40px;position:absolute;inset:0;overflow:hidden}.w-slider-arrow-left [class^=w-icon-],.w-slider-arrow-right [class^=w-icon-],.w-slider-arrow-left [class*=\ w-icon-],.w-slider-arrow-right [class*=\ w-icon-]{position:absolute}.w-slider-arrow-left:focus,.w-slider-arrow-right:focus{outline:0}.w-slider-arrow-left{z-index:3;right:auto}.w-slider-arrow-right{z-index:4;left:auto}.w-icon-slider-left,.w-icon-slider-right{width:1em;height:1em;margin:auto;inset:0}.w-slider-aria-label{clip:rect(0 0 0 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.w-slider-force-show{display:block!important}.w-dropdown{text-align:left;z-index:900;margin-left:auto;margin-right:auto;display:inline-block;position:relative}.w-dropdown-btn,.w-dropdown-toggle,.w-dropdown-link{vertical-align:top;color:#222;text-align:left;white-space:nowrap;margin-left:auto;margin-right:auto;padding:20px;text-decoration:none;position:relative}.w-dropdown-toggle{-webkit-user-select:none;user-select:none;cursor:pointer;padding-right:40px;display:inline-block}.w-dropdown-toggle:focus{outline:0}.w-icon-dropdown-toggle{width:1em;height:1em;margin:auto 20px auto auto;position:absolute;top:0;bottom:0;right:0}.w-dropdown-list{background:#ddd;min-width:100%;display:none;position:absolute}.w-dropdown-list.w--open{display:block}.w-dropdown-link{color:#222;padding:10px 20px;display:block}.w-dropdown-link.w--current{color:#0082f3}.w-dropdown-link:focus{outline:0}.w-lightbox-backdrop{cursor:auto;letter-spacing:normal;text-indent:0;text-shadow:none;text-transform:none;visibility:visible;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;color:#fff;text-align:center;z-index:2000;opacity:0;-webkit-user-select:none;-moz-user-select:none;-webkit-tap-highlight-color:transparent;background:#000000e6;outline:0;font-family:Helvetica Neue,Helvetica,Ubuntu,Segoe UI,Verdana,sans-serif;font-size:17px;font-style:normal;font-weight:300;line-height:1.2;list-style:disc;position:fixed;inset:0;-webkit-transform:translate(0)}.w-lightbox-backdrop,.w-lightbox-container{-webkit-overflow-scrolling:touch;height:100%;overflow:auto}.w-lightbox-content{height:100vh;position:relative;overflow:hidden}.w-lightbox-view{opacity:0;width:100vw;height:100vh;position:absolute}.w-lightbox-view:before{content:"";height:100vh}.w-lightbox-group,.w-lightbox-group .w-lightbox-view,.w-lightbox-group .w-lightbox-view:before{height:86vh}.w-lightbox-frame,.w-lightbox-view:before{vertical-align:middle;display:inline-block}.w-lightbox-figure{margin:0;position:relative}.w-lightbox-group .w-lightbox-figure{cursor:pointer}.w-lightbox-img{width:auto;max-width:none;height:auto}.w-lightbox-image{float:none;max-width:100vw;max-height:100vh;display:block}.w-lightbox-group .w-lightbox-image{max-height:86vh}.w-lightbox-caption{text-align:left;text-overflow:ellipsis;white-space:nowrap;background:#0006;padding:.5em 1em;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.w-lightbox-embed{width:100%;height:100%;position:absolute;inset:0}.w-lightbox-control{cursor:pointer;background-position:50%;background-repeat:no-repeat;background-size:24px;width:4em;transition:all .3s;position:absolute;top:0}.w-lightbox-left{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==);display:none;bottom:0;left:0}.w-lightbox-right{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+);display:none;bottom:0;right:0}.w-lightbox-close{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=);background-size:18px;height:2.6em;right:0}.w-lightbox-strip{white-space:nowrap;padding:0 1vh;line-height:0;position:absolute;bottom:0;left:0;right:0;overflow:auto hidden}.w-lightbox-item{box-sizing:content-box;cursor:pointer;width:10vh;padding:2vh 1vh;display:inline-block;-webkit-transform:translate(0,0)}.w-lightbox-active{opacity:.3}.w-lightbox-thumbnail{background:#222;height:10vh;position:relative;overflow:hidden}.w-lightbox-thumbnail-image{position:absolute;top:0;left:0}.w-lightbox-thumbnail .w-lightbox-tall{width:100%;top:50%;transform:translateY(-50%)}.w-lightbox-thumbnail .w-lightbox-wide{height:100%;left:50%;transform:translate(-50%)}.w-lightbox-spinner{box-sizing:border-box;border:5px solid #0006;border-radius:50%;width:40px;height:40px;margin-top:-20px;margin-left:-20px;animation:.8s linear infinite spin;position:absolute;top:50%;left:50%}.w-lightbox-spinner:after{content:"";border:3px solid #0000;border-bottom-color:#fff;border-radius:50%;position:absolute;inset:-4px}.w-lightbox-hide{display:none}.w-lightbox-noscroll{overflow:hidden}@media (min-width:768px){.w-lightbox-content{height:96vh;margin-top:2vh}.w-lightbox-view,.w-lightbox-view:before{height:96vh}.w-lightbox-group,.w-lightbox-group .w-lightbox-view,.w-lightbox-group .w-lightbox-view:before{height:84vh}.w-lightbox-image{max-width:96vw;max-height:96vh}.w-lightbox-group .w-lightbox-image{max-width:82.3vw;max-height:84vh}.w-lightbox-left,.w-lightbox-right{opacity:.5;display:block}.w-lightbox-close{opacity:.8}.w-lightbox-control:hover{opacity:1}}.w-lightbox-inactive,.w-lightbox-inactive:hover{opacity:0}.w-richtext:before,.w-richtext:after{content:" ";grid-area:1/1/2/2;display:table}.w-richtext:after{clear:both}.w-richtext[contenteditable=true]:before,.w-richtext[contenteditable=true]:after{white-space:initial}.w-richtext ol,.w-richtext ul{overflow:hidden}.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-video div:after,.w-richtext .w-richtext-figure-selected[data-rt-type=video] div:after,.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-image div,.w-richtext .w-richtext-figure-selected[data-rt-type=image] div{outline:2px solid #2895f7}.w-richtext figure.w-richtext-figure-type-video>div:after,.w-richtext figure[data-rt-type=video]>div:after{content:"";display:none;position:absolute;inset:0}.w-richtext figure{max-width:60%;position:relative}.w-richtext figure>div:before{cursor:default!important}.w-richtext figure img{width:100%}.w-richtext figure figcaption.w-richtext-figcaption-placeholder{opacity:.6}.w-richtext figure div{color:#0000;font-size:0}.w-richtext figure.w-richtext-figure-type-image,.w-richtext figure[data-rt-type=image]{display:table}.w-richtext figure.w-richtext-figure-type-image>div,.w-richtext figure[data-rt-type=image]>div{display:inline-block}.w-richtext figure.w-richtext-figure-type-image>figcaption,.w-richtext figure[data-rt-type=image]>figcaption{caption-side:bottom;display:table-caption}.w-richtext figure.w-richtext-figure-type-video,.w-richtext figure[data-rt-type=video]{width:60%;height:0}.w-richtext figure.w-richtext-figure-type-video iframe,.w-richtext figure[data-rt-type=video] iframe{width:100%;height:100%;position:absolute;top:0;left:0}.w-richtext figure.w-richtext-figure-type-video>div,.w-richtext figure[data-rt-type=video]>div{width:100%}.w-richtext figure.w-richtext-align-center{clear:both;margin-left:auto;margin-right:auto}.w-richtext figure.w-richtext-align-center.w-richtext-figure-type-image>div,.w-richtext figure.w-richtext-align-center[data-rt-type=image]>div{max-width:100%}.w-richtext figure.w-richtext-align-normal{clear:both}.w-richtext figure.w-richtext-align-fullwidth{text-align:center;clear:both;width:100%;max-width:100%;margin-left:auto;margin-right:auto;display:block}.w-richtext figure.w-richtext-align-fullwidth>div{padding-bottom:inherit;display:inline-block}.w-richtext figure.w-richtext-align-fullwidth>figcaption{display:block}.w-richtext figure.w-richtext-align-floatleft{float:left;clear:none;margin-right:15px}.w-richtext figure.w-richtext-align-floatright{float:right;clear:none;margin-left:15px}.w-nav{z-index:1000;background:#ddd;position:relative}.w-nav:before,.w-nav:after{content:" ";grid-area:1/1/2/2;display:table}.w-nav:after{clear:both}.w-nav-brand{float:left;color:#333;text-decoration:none;position:relative}.w-nav-link{vertical-align:top;color:#222;text-align:left;margin-left:auto;margin-right:auto;padding:20px;text-decoration:none;display:inline-block;position:relative}.w-nav-link.w--current{color:#0082f3}.w-nav-menu{float:right;position:relative}[data-nav-menu-open]{text-align:center;background:#c8c8c8;min-width:200px;position:absolute;top:100%;left:0;right:0;overflow:visible;display:block!important}.w--nav-link-open{display:block;position:relative}.w-nav-overlay{width:100%;display:none;position:absolute;top:100%;left:0;right:0;overflow:hidden}.w-nav-overlay [data-nav-menu-open]{top:0}.w-nav[data-animation=over-left] .w-nav-overlay{width:auto}.w-nav[data-animation=over-left] .w-nav-overlay,.w-nav[data-animation=over-left] [data-nav-menu-open]{z-index:1;top:0;right:auto}.w-nav[data-animation=over-right] .w-nav-overlay{width:auto}.w-nav[data-animation=over-right] .w-nav-overlay,.w-nav[data-animation=over-right] [data-nav-menu-open]{z-index:1;top:0;left:auto}.w-nav-button{float:right;cursor:pointer;-webkit-tap-highlight-color:#0000;tap-highlight-color:#0000;-webkit-user-select:none;user-select:none;padding:18px;font-size:24px;display:none;position:relative}.w-nav-button:focus{outline:0}.w-nav-button.w--open{color:#fff;background-color:#c8c8c8}.w-nav[data-collapse=all] .w-nav-menu{display:none}.w-nav[data-collapse=all] .w-nav-button,.w--nav-dropdown-open,.w--nav-dropdown-toggle-open{display:block}.w--nav-dropdown-list-open{position:static}@media screen and (max-width:991px){.w-nav[data-collapse=medium] .w-nav-menu{display:none}.w-nav[data-collapse=medium] .w-nav-button{display:block}}@media screen and (max-width:767px){.w-nav[data-collapse=small] .w-nav-menu{display:none}.w-nav[data-collapse=small] .w-nav-button{display:block}.w-nav-brand{padding-left:10px}}@media screen and (max-width:479px){.w-nav[data-collapse=tiny] .w-nav-menu{display:none}.w-nav[data-collapse=tiny] .w-nav-button{display:block}}.w-tabs{position:relative}.w-tabs:before,.w-tabs:after{content:" ";grid-area:1/1/2/2;display:table}.w-tabs:after{clear:both}.w-tab-menu{position:relative}.w-tab-link{vertical-align:top;text-align:left;cursor:pointer;color:#222;background-color:#ddd;padding:9px 30px;text-decoration:none;display:inline-block;position:relative}.w-tab-link.w--current{background-color:#c8c8c8}.w-tab-link:focus{outline:0}.w-tab-content{display:block;position:relative;overflow:hidden}.w-tab-pane{display:none;position:relative}.w--tab-active{display:block}@media screen and (max-width:479px){.w-tab-link{display:block}}.w-ix-emptyfix:after{content:""}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.w-dyn-empty{background-color:#ddd;padding:10px}.w-dyn-hide,.w-dyn-bind-empty,.w-condition-invisible{display:none!important}.wf-layout-layout{display:grid}.w-layout-grid{grid-row-gap:16px;grid-column-gap:16px;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;display:grid}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60665a3d2b6fc590a7_InstrumentSans-SemiBoldItalic.woff2)format("woff2");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60fbcd5a800591e421_InstrumentSans-SemiBold.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c602a855fbb013d5c50_InstrumentSans-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c603cc9de956857dcdc_InstrumentSans-BoldItalic.woff2)format("woff2");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c605d5b0cb77878327b_InstrumentSans-Bold.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c604d256969a81247d8_InstrumentSans-MediumItalic.woff2)format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60452994fbb27f3183_InstrumentSans-Italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Instrumentsans;src:url(../images/69ad9c60f0f31535d2eaa0bd_InstrumentSans-Medium.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}:root{--color-black--100:#000;--color-white:#fefefe;--site-max-w:1920px;--size-py:.6rem;--color-blue:#146ef5;--color-white--40:#717171;--size-bar-h:2.4em;--radius-system:1rem;--sys-alpha-bg:#1f1f1f87;--color-white--70:#b9b9b9;--color-gray:#7e7e7e;--default-w:80%;--color-black--90:#000000e6}body{background-color:var(--color-black--100);color:var(--color-white);letter-spacing:0;font-family:Instrumentsans,Arial,sans-serif;font-size:.9rem;font-weight:400;line-height:1.2em}h1{letter-spacing:-.04em;margin-top:0;margin-bottom:.6rem;font-size:2.6rem;font-weight:500;line-height:1em}h2{margin-top:0;margin-bottom:0;font-size:1.6rem;font-weight:500;line-height:1.1em}h3{margin-top:0;margin-bottom:10px;font-size:24px;font-weight:500;line-height:30px}h4{margin-top:10px;margin-bottom:10px;font-size:18px;font-weight:700;line-height:24px}h5{margin-top:10px;margin-bottom:10px;font-size:14px;font-weight:700;line-height:20px}h6{margin-top:10px;margin-bottom:10px;font-size:12px;font-weight:700;line-height:18px}p{margin-bottom:10px}a{color:var(--color-white);text-decoration:underline}blockquote{border-left:5px solid #e2e2e2;margin-bottom:10px;padding:10px 20px;font-size:18px;line-height:22px}.w{overflow:clip}.page-w{min-height:100svh;position:relative}.s{max-width:var(--site-max-w);flex-flow:column;min-height:30svh;margin-left:auto;margin-right:auto;padding-top:6rem;padding-bottom:6rem;display:flex;position:relative}.s.h-screen{height:100svh;padding-top:0;padding-bottom:0}.s.h-screen.py{padding-top:10%;padding-bottom:10%}.s.h-screen.py.mobile-space{height:auto}.s.footer{padding-bottom:6.1rem}.s.h-half{min-height:50svh}.s.ho-size{height:600svh;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;overflow:clip}.s.waitlist{justify-content:center;align-items:flex-start;height:100svh}.hud-w{z-index:100;padding-bottom:var(--size-py);pointer-events:none;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0%}.dock{grid-column-gap:1em;grid-row-gap:1em;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);outline-offset:0px;pointer-events:auto;background-image:linear-gradient(#2f2f2f96,#212121 75%);border-radius:1.2em;outline:1px solid #fff3;justify-content:center;align-items:flex-end;padding:.8em .9em .8em 1.3em;font-size:12px;display:flex;position:relative}.dock-icon{aspect-ratio:1;background-color:var(--color-white);background-image:linear-gradient(#cfcfcf,#444);border-radius:.7em;justify-content:center;align-items:center;width:3em;display:flex}.dock-icon.ssscript{background-image:linear-gradient(#000,#363636)}.dock-icon.no-bg{background-color:#f0f0f000;background-image:none}.dot{background-color:var(--color-white);border-radius:100%;flex:none;width:3px;height:3px;position:absolute;top:90%}.dot.highlight{background-color:#5bdf6f;width:.6em;height:.6em;position:absolute;inset:.1em auto 0% -.9em}.dot.highlight.purple{background-color:#cc7bf5}.dot.highlight.red{background-color:#ff6b62}.dot.relative{width:6px;height:6px}.dot.relative.email{background-color:var(--color-blue);width:7px;height:7px;position:static;top:0%}.logo{width:75%}.logo.xxs{width:1.3em}.logo.app{width:20%}.logo.app.footer{flex:none;width:5rem}.logo.app.xs{width:10%}.line{background-color:#0000004d;border-radius:1em;flex:none;width:1px;height:3em}.line.full{height:100%}.line.full.x-icon{background-color:#7a7a7a;width:2px;height:75%;position:absolute;transform:rotate(45deg)}.line.full.x-icon.rot{transform:rotate(-45deg)}.line.ho{background-color:var(--color-white--40);width:100%;height:1px;margin-bottom:1rem}.line.ho.darker{opacity:.3}.dock-app-img{opacity:1;width:100%}.dock-app-img.trash{transform:scale(1.1)}.folder-w{z-index:5;grid-column-gap:1rem;grid-row-gap:1rem;pointer-events:none;flex-flow:column wrap-reverse;grid-template-rows:auto auto auto auto auto auto auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;justify-content:flex-start;align-items:flex-start;height:100%;padding:3rem 1rem 4rem;display:flex;position:fixed;inset:0%}.folder-w.video-w{flex-flow:row;padding-left:2rem}.folder-w.txts{padding-left:2rem;padding-right:2rem;position:fixed;inset:0%}.folder-w.txts-windows{justify-content:center;align-items:center}.folder-w.abs{z-index:0;grid-column-gap:4rem;grid-row-gap:4rem;flex-flow:row;justify-content:center;align-items:center;position:absolute}.folder{grid-column-gap:.4em;grid-row-gap:.4em;aspect-ratio:1;pointer-events:auto;flex-flow:column;flex:none;justify-content:flex-start;align-items:center;width:2em;display:flex}.folder-title{text-align:center;text-transform:lowercase;text-shadow:0 1px 3px #0003;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:1.2em;font-weight:700;line-height:100%}.folder-title.lower{justify-content:flex-start;align-items:flex-end;display:flex}.mac-bar{height:var(--size-bar-h);padding-right:var(--size-py);padding-left:var(--size-py);background-color:var(--color-black--100);pointer-events:auto;mix-blend-mode:color-burn;justify-content:space-between;font-size:12px;font-weight:500;display:flex;position:fixed;inset:0% 0% auto}.bar-icon-w{grid-column-gap:.5em;grid-row-gap:.5em;justify-content:center;align-items:center;height:100%;display:flex}.svg{aspect-ratio:1;height:100%}.svg.app-card{aspect-ratio:auto;height:auto}.svg.app-card._w-6{width:40%}.bar-side{grid-column-gap:1.6em;grid-row-gap:1.6em;justify-content:center;align-items:center;height:100%;display:flex}.sys-svg-w{justify-content:center;align-items:center;height:100%;padding-top:.4em;display:flex}.bar-txt{justify-content:center;align-items:center;height:100%;text-decoration:none;display:flex}.bar-txt.medium{font-weight:700}.bar-txt-w{grid-column-gap:1em;grid-row-gap:1em;justify-content:center;align-items:center;height:100%;display:flex}.webgl{background-color:#0f0f0f;background-image:linear-gradient(#1f1f1f,#0a0a0a);width:100%;height:100%;position:fixed;inset:0%}.app-w{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0%}.app-w.static{justify-content:flex-start;align-items:flex-start;padding-top:10%;padding-left:10%}.app-w.mail{position:relative}.app-w.align-right{justify-content:flex-end;align-items:center;padding-right:5%}.app-w.align-right.further{margin-right:-20%;padding-right:0%}.app-w.far-left{justify-content:flex-start;align-items:flex-end;margin-left:-10%}.image{width:90%}.app-item{border-radius:var(--radius-system);filter:drop-shadow(0 2px 5px #000000b3);pointer-events:auto;background-color:#1e1e1e;border:1px solid #fff3;flex-flow:column;width:20rem;height:40svh;display:flex;position:relative;overflow:clip}.app-item.abs{position:absolute;inset:12% auto auto 8%}.app-item.abs.about{inset:15% auto auto 10%}.app-item.video{aspect-ratio:3/2;border-radius:var(--radius-system);background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);width:70vw;height:auto}.app-item.data{z-index:1;border-radius:var(--radius-system);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background-color:#1f1f1f87;flex-flow:column;width:23rem;min-width:23rem;max-width:23rem;height:auto;padding-bottom:.8rem;display:flex}.app-item.mail{background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:auto;min-width:20rem;height:auto;overflow:visible}.app-item.txt{visibility:hidden;position:absolute}.app-item.price{background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);width:auto;min-width:20rem;height:auto;overflow:visible}.app-item.img{z-index:1;background-color:var(--sys-alpha-bg);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);width:25rem;height:auto;position:absolute}.app-head{background-color:#343434;border-bottom:1px solid #000;justify-content:center;height:1.9em;display:flex;position:relative}.app-head.preview{background-color:#34343400;border-bottom-style:none;flex:none;justify-content:flex-start;align-items:center;padding-left:3.9em}.app-head-trigs{z-index:2;grid-column-gap:.5em;grid-row-gap:.5em;justify-content:center;align-items:center;height:100%;margin-left:.6em;display:flex;position:absolute;inset:0% auto auto 0%}.circle{aspect-ratio:1;color:#abacb9;background-color:#f7f7f7;border-radius:100%;height:50%;padding-bottom:0;padding-left:0;padding-right:0;display:flex}.circle.red{background-color:#fe5f57;padding-bottom:0;padding-right:0}.circle.yellow{background-color:#febc2c}.circle.green{background-color:#28c840}.circle.opaque{border-radius:60%;justify-content:center;align-items:center}.circle.opaque.lighter{pointer-events:auto;background-color:#222}.txt-text-block{padding-bottom:.4em;padding-left:.4em;padding-right:.4em;font-family:Arial,Helvetica Neue,Helvetica,sans-serif;font-size:12px;line-height:150%}.txt-text-block.h1{margin-top:.3em;font-size:2em;line-height:100%}.txt-text-block.h2{margin-top:10px;margin-bottom:0;font-size:1.3em;line-height:120%}.txt-text-block.editable{height:100%}.app-name-w{grid-column-gap:.3em;grid-row-gap:.3em;justify-content:center;align-items:center;height:100%;display:flex}.app-name-txt{color:#b0b0b0;text-transform:lowercase;font-size:13px;font-weight:600}.app-name-txt.preview{color:#d8d8d8}.app-icon{height:60%}.bar-txt-el{height:100%;position:relative}.text-scrollable{height:92%;overflow:scroll}.text-editable{height:90%}.folder-title-w{grid-column-gap:.3em;grid-row-gap:.3em;justify-content:flex-start;align-items:center;font-size:.5em;display:flex;position:relative}.p-w{padding:.4em}.video{background-color:#000;border-radius:1em;width:100%;height:100%;padding-bottom:0;padding-right:0}.video-size{aspect-ratio:3/2;justify-content:center;align-items:center;padding:.3em;display:flex;overflow:clip}.x-icon{justify-content:center;align-items:center;width:100%;height:100%;transition:opacity .2s;display:flex;position:relative}.flex-v{grid-column-gap:1em;grid-row-gap:1em;flex-flow:column;justify-content:center;align-items:center;height:100%;display:flex}.flex-v._w-full{grid-column-gap:1em;grid-row-gap:1em;width:100%;height:auto;margin-top:2rem;margin-bottom:1rem}.data-he{text-align:center;width:80%;margin-top:0;margin-bottom:0;font-size:2.3em;font-weight:500;line-height:100%}.data-he.h2{width:70%;color:var(--color-white--70);font-size:1.1em;font-weight:400;line-height:1.2em}.data-he.h2.xs{font-size:.9em}.data-he.sm{font-size:1.8em;line-height:1.3em}.form-field{color:var(--color-white);background-color:#ffffff0d;border:1px solid #fff3;border-radius:.6rem;margin-bottom:0;padding-top:12px}.form-field::placeholder{color:#fefefe2e;font-size:12px;font-weight:600}.form-field.taller{height:6rem}.form-w{width:95%;margin-bottom:0}.form{grid-column-gap:.6em;grid-row-gap:.6em;flex-flow:column;margin-top:.6rem;padding-top:.6rem;padding-bottom:.6rem;display:flex}.form-item{display:flex;position:relative}.form-btn{color:var(--color-black--100);background-color:#efefef00;justify-content:center;align-items:center;padding:3px 3px 3px 6px;font-size:12px;font-weight:500;display:flex;position:absolute;inset:0% 0% 0% auto}.form-btn.static{justify-content:flex-start;align-items:center;height:2.4rem;padding-left:0;text-decoration:none;position:static}.form-btn.static.disable{opacity:.3;pointer-events:none}.form-btn.static.mt-10{margin-top:1rem}.btn-bg{background-color:var(--color-blue);height:100%;color:var(--color-white);letter-spacing:-.02em;border-radius:.7em;justify-content:center;align-items:center;padding-left:1.2em;padding-right:1.2em;display:flex}.btn-bg.gray{background-color:#353535}.notice-txt{opacity:.4;text-align:center;font-size:.7rem;line-height:130%}.notice-txt.sm{font-size:.7em}.form-element{grid-column-gap:.4em;grid-row-gap:.4em;flex-flow:column;justify-content:flex-start;align-items:center;width:100%;display:flex}.s-cont{justify-content:flex-start;align-items:flex-start;width:80%;height:80%;margin:auto;display:flex}.s-cont.shorter{grid-column-gap:16px;grid-row-gap:16px;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;justify-content:space-between;align-items:center;height:70%;display:flex}.main-h{flex-flow:column;max-width:12ch;margin-bottom:.6rem;line-height:1em;display:flex}.main-h.sm{font-size:1.6rem;line-height:1.1em}.main-h.h2{font-size:2.1rem;line-height:.9em}.main-h.h1{letter-spacing:-.04em;margin-bottom:.9rem;font-size:2.6rem;line-height:.9em}.main-h.h1.xl{font-size:4rem}.main-h.tp{position:relative}.darker-70{color:var(--color-white--70)}.darker-70.mr-xs{padding-right:.2rem}.darker-70.mr-xs.lighter{font-weight:500}.darker-70.blue{color:var(--color-blue)}.darker-70.blue.bold{font-weight:600}.h-txt{max-width:25ch;color:var(--color-gray);margin-bottom:1.2rem}.h-txt.mt-5{margin-top:3rem}.h-txt.blue{color:var(--color-blue)}.h-txt.blue.bold{font-weight:600}.h-full{height:100%}.h-full.between{flex-flow:column;justify-content:space-between;display:flex}.h-full.between.lower{height:90%;margin-top:15%}.h-full.between.lower.center{justify-content:center}.c{grid-column-gap:2rem;grid-row-gap:2rem;justify-content:flex-start;align-items:center;width:80%;margin-left:auto;margin-right:auto;display:flex}.c.full{width:100%;min-height:5vh}.c._w-60{width:60%}.c.center{text-align:center;justify-content:center;align-items:flex-start;display:flex}.c.center.ve{flex-flow:column;justify-content:flex-start;align-items:center}.c.footer-col{grid-column-gap:0rem;grid-row-gap:0rem;justify-content:space-between;align-items:flex-start}.c.flex-r{justify-content:flex-end;align-items:center}.c.py{width:var(--default-w);padding-top:3rem;padding-bottom:3rem}.c.ve{flex-flow:column;justify-content:flex-start;align-items:flex-start}.darker-40{color:var(--color-white--40)}.darker-40.sm{font-size:.7rem}.darker-40.mt{margin-top:.3rem;display:inline-block}.ho{flex-flow:row;justify-content:space-between;align-items:flex-start;width:100%;display:flex}.ho.flip{flex-flow:row-reverse}.video-screen{aspect-ratio:3/2;border-radius:var(--radius-system);background-color:var(--color-black--100);object-fit:cover;justify-content:center;align-items:center;width:100%;display:flex;overflow:clip;transform:scale(1.1)}.slide-w{flex:none;width:35rem;padding-right:.5rem}.slider{flex-flow:row;margin-bottom:0;padding-top:3rem;padding-bottom:3rem;padding-left:calc(50vw - 17.5rem);display:flex}.slide-he{margin-top:1rem;margin-bottom:.3rem;font-size:1.2em;line-height:1em}.slide-p{max-width:30ch;color:var(--color-white--70);font-size:.9em;line-height:1.2em}.slide-he-w{margin-left:1rem;font-size:.7rem}.ce{flex-flow:column;justify-content:flex-start;align-items:center;display:flex}.mail-size{grid-column-gap:1rem;grid-row-gap:1rem;flex-flow:column;width:25rem;height:100%;padding:1.9rem;display:flex;position:absolute}.mail-head{grid-column-gap:.2rem;grid-row-gap:.2rem;flex-flow:column;display:flex}.mail-p{width:100%;font-weight:600}.mail-p.normal{font-size:.8rem;font-weight:400}.mail-p.smaller{flex:0 auto}.darker{color:var(--color-white--40);font-weight:400}.darker.sm{font-size:.6rem}.mail-head-w{grid-column-gap:1rem;grid-row-gap:1rem;justify-content:flex-start;align-items:flex-start;height:4.7rem;display:flex}.mail-img-w{aspect-ratio:1;background-color:var(--color-white--40);opacity:1;background-image:url(../images/69d2db06ed4081cf9bdacdc4_federic0.avif);background-position:0 0;background-size:cover;border-radius:100%;width:3rem}.mail-body{flex-flow:column;display:flex}.logo-lockup-w{grid-column-gap:.2em;grid-row-gap:.2em;flex-flow:column;align-items:center;display:flex}.logo-size{width:10rem}.logo-size.sm{width:6.6rem}.mail-app{display:flex}.mail-list{flex-flow:column;width:22rem;max-height:30rem;margin:2rem 1rem .8rem;padding-top:10%;padding-left:.3rem;padding-right:.3rem;display:flex;overflow:clip}.mail-slide{flex:none;padding-top:.2rem;padding-bottom:.2rem}.mail-item{border-radius:var(--radius-system);outline-offset:0px;background-color:#1f1f1fc9;outline:1px solid #fefefe33;justify-content:flex-start;align-items:center;height:5rem;padding:1rem;transition:background-color .4s;display:flex}.mail-rel-wrap{position:relative}.waitlist-coll{pointer-events:none;height:100svh;position:absolute;inset:0%}.text-ho{flex-flow:column;justify-content:flex-start;align-items:center;font-size:.5em;display:flex}.app-item-dot{justify-content:center;align-items:center;width:1px;height:1px;display:flex}.pricing-sm{font-size:.7rem}.pricing-sm.features{font-size:.8rem;line-height:1.3em}.pricing-sm.features.darker-40.mt{margin-top:.6rem}.pricing-sm.features.bolder{font-weight:700}.pricing-lg{font-weight:600}.pricing-lg.mb{margin-bottom:1rem;font-size:.9rem;line-height:100%}.pricing-it{font-size:2.2rem;font-weight:700;line-height:1.3em}.footer-list-he{font-size:.6rem}.div-block-2{grid-column-gap:1rem;grid-row-gap:1rem;align-items:center;display:flex}.ft-link{padding-top:.3rem;padding-bottom:.3rem;text-decoration:none}.clip{padding-top:0;padding-bottom:0;overflow:clip}.div-block-3{grid-column-gap:1rem;grid-row-gap:1rem;flex-flow:column;display:flex}.footer-cols{grid-column-gap:5rem;grid-row-gap:5rem;grid-template-rows:auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;display:grid}.footer-notice{max-width:30ch;color:var(--color-white--70);text-align:left;font-size:.7rem;line-height:1.9em}.footer-notice.mt{margin-top:.4rem;line-height:1.3em}.pricing{grid-column-gap:2rem;grid-row-gap:1rem;text-align:left;grid-template-rows:auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;padding:2rem;display:grid}.div-block-6{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:1rem;margin-bottom:1rem;display:flex}.div-block-6.key{grid-column-gap:.1rem;grid-row-gap:.1rem;margin-bottom:2rem;line-height:.8em}.pricing-wrap{margin-top:4rem}.to-left{transform:translate(-2vw)}.to-right{transform:translate(2vw)}.mail-view{opacity:0;width:25rem;height:100%;position:absolute}.mail-view:first-child{opacity:1}.collection-list-wrapper{height:100%}.collection-list{width:25rem;height:30rem}.div-block-7{grid-column-gap:.1rem;grid-row-gap:.1rem;flex-flow:column;justify-content:flex-start;align-items:flex-start;display:flex}.mail-text{font-size:.8rem;line-height:1.5em}.div-block-8{height:1.2em}.clip-12{height:1.3em;overflow:hidden}.div-block-9{flex-flow:column;height:100%;display:flex}.striked-price{font-size:1.2rem;font-weight:400;text-decoration:line-through}.price-notice{grid-column-gap:.3rem;grid-row-gap:.3rem;flex-flow:row;margin-top:.4rem;display:flex}.utility-page-wrap{justify-content:center;align-items:center;width:100vw;max-width:100%;height:100vh;max-height:100%;display:flex}.utility-page-content{text-align:center;flex-direction:column;width:260px;display:flex}.webgl-target-w{justify-content:center;align-items:center;width:1px;height:1px;display:flex;position:absolute}.webgl-target-w.ab{justify-content:center;align-items:flex-end}.webgl-target-w.b{justify-content:center;align-items:flex-start}.webgl-target-w.bl{inset:auto auto 0% 0%}.webgl-target{height:50svh}.webgl-target.point{width:1px;height:1px}.webgl-target.short{height:20svh}.p-line{opacity:.07;background-color:#fff;grid-column:1/span 5;height:1px}.p-line.is--m{display:none}.pricing-table{grid-column-gap:2rem;grid-row-gap:.8rem;text-align:left;grid-template-rows:auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;padding:2rem;display:grid}.package-beta{grid-column:2/span 1}.package-founder{grid-column:3/span 1}.package-basic{grid-column:4/span 1}.package-advanced{grid-column:5/span 1}.p-text{min-width:8rem}.p-text.is--m{display:none}.div-block-10{width:9rem}.p-separator{grid-column:1/span 5;height:1.7rem}.p-final-note{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:1rem;margin-bottom:1rem;display:flex}.p-final-note.key{grid-column-gap:.1rem;grid-row-gap:.1rem;margin-bottom:2rem;line-height:.8em}.form-success{grid-column-gap:.8rem;grid-row-gap:.8rem;border-radius:var(--radius-system);text-align:center;background-color:#38383899;border:1px solid #fff3;flex-flow:column;justify-content:center;align-items:center;width:100%;min-height:10rem;padding-top:2rem;padding-bottom:2rem;display:flex}.hg-par{margin-bottom:.4rem;font-size:.7rem}.hg-par.features{font-size:.8rem;line-height:1.3em}.hg-par.features.darker-40.mt{margin-top:.6rem}.hg-par.features.bolder{font-weight:700}.hg-par.darker-70{margin-bottom:.6rem}.mail-rt h1,.mail-rt h2{display:none}.mail-rt h3{color:var(--color-white--70);font-size:1rem;line-height:1em}.mail-rt h4{color:var(--color-white--40);font-size:.9rem;font-weight:600;line-height:1em}.mail-rt h5{color:var(--color-white--70);font-size:.6rem;font-weight:600;line-height:1em}.mail-rt p{color:var(--color-gray);margin-bottom:1rem;font-size:.8rem;line-height:1.5em}.mail-rt h6{color:var(--color-white--40);font-size:.6rem;font-weight:600;line-height:1em}.bubble{background-color:var(--color-blue);color:var(--color-white);letter-spacing:.05em;border-radius:2em;padding:.4rem .5rem;font-size:.55rem;font-weight:400}.div-block-11{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:5rem;display:flex}.unread-email{width:1rem;height:58%}.logo-link{justify-content:center;align-items:center;display:flex}.logo-link.outline{padding:0}.txt-w{flex-flow:column;margin-top:1.2rem;display:flex}.form-fail{grid-column-gap:.8rem;grid-row-gap:.8rem;border-radius:var(--radius-system);background-color:#2c000099;border:1px solid #f3000033;flex-flow:column;justify-content:center;align-items:center;width:100%;padding-top:1rem;padding-bottom:1rem;display:flex}.article-body{max-width:60ch;color:var(--color-white--70);margin-top:2rem;line-height:1.5em}.article-body h2{margin-bottom:.6rem}.article-h1{font-size:2em}.article-h2{color:var(--color-white--40);font-size:1.4em}.article-h3{color:var(--color-white--40);margin-top:1em;margin-bottom:.5em;font-size:1.2em}.article-h4{color:var(--color-white--40);margin-top:.5em;margin-bottom:.5em;font-size:1em}.article-h5{color:var(--color-white--40);margin-top:.5em;margin-bottom:.5em}.article-h6{color:var(--color-white--40);margin-top:1em;margin-bottom:1em;font-size:.8em}.article-w{grid-column-gap:.6rem;grid-row-gap:.6rem;flex-flow:column;max-width:60ch;margin:30svh auto;display:flex}.article-abstract{color:var(--color-white--40);margin-right:5rem;font-size:.8rem;line-height:1.4em}.article-date{color:var(--color-white--70);font-size:.7rem}.article-head{width:100%;max-width:60ch;margin-left:auto;margin-right:auto;display:flex}.bold-text,.italic-text{color:var(--color-white--40)}.founders-pricing{grid-column-gap:0rem;grid-row-gap:0rem;flex-flow:column;justify-content:flex-start;align-items:flex-start;width:80%;display:flex}.pricing-block-out{grid-column-gap:.4rem;grid-row-gap:.4rem;flex-flow:column;margin-top:1rem;margin-bottom:1rem;display:flex}.pricing-block-out.key{grid-column-gap:.5rem;grid-row-gap:1rem;flex-flow:row;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;justify-content:center;align-items:flex-start;width:100%;margin-bottom:2rem;line-height:.8em;display:grid}.button-center{justify-content:center;align-items:center;width:100%;margin-top:1rem;display:flex}.mac-bar-2{pointer-events:auto;mix-blend-mode:color-burn;background-color:#000;justify-content:space-between;height:2.4em;padding-left:.6rem;padding-right:.6rem;font-size:12px;font-weight:500;display:flex;position:fixed;inset:0% 0% auto}.video-el{width:100%;height:100%;padding-bottom:0;padding-right:0}.video-cut{border-radius:var(--size-py);overflow:clip}._wf-button-1{transform-origin:50.5781px 9px;color:#000000d8;text-align:center;cursor:default;background-color:silver;border-color:#000000d8 silver;border-left-style:outset;border-left-width:2px;border-right-style:outset;border-right-width:2px;align-items:flex-start;width:101.172px;height:18px;min-height:15px;padding:2px 6px 3px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:11px;display:inline-block}._wf-div-2,._wf-div-3,._wf-div-4{transform-origin:592px 9px;height:18px}._wf-div-5{transform-origin:592px 27px;height:54px}._wf-div-6{transform-origin:592px 36.5px;height:73px}._wf-button-1-2{transform-origin:30.5313px 19.9063px;color:#000000d8;text-align:center;cursor:default;background-color:silver;border-color:#000000d8 silver;border-left-style:outset;border-left-width:2px;border-right-style:outset;border-right-width:2px;align-items:flex-start;width:61.0781px;min-width:auto;height:39.8125px;min-height:15px;padding:2px 6px 3px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:11px}._wf-h2-2{transform-origin:0 0;width:0;min-width:auto;min-height:auto;margin-top:19.9063px;margin-bottom:19.9063px;font-size:24px;font-weight:700}._wf-button-3{transform-origin:20.125px 19.9063px;color:#000000d8;text-align:center;cursor:default;background-color:silver;border-color:#000000d8 silver;border-left-style:outset;border-left-width:2px;border-right-style:outset;border-right-width:2px;align-items:flex-start;width:40.2656px;min-width:auto;height:39.8125px;min-height:15px;padding:2px 6px 3px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;font-size:11px}._wf-div-4-2{transform-origin:592px 19.9063px;justify-content:space-between;min-width:auto;height:39.8125px;min-height:auto;display:flex}._wf-div-5-2{transform-origin:84.5625px 9px;width:169.141px;min-width:auto;height:18px;min-height:auto;font-weight:700}._wf-div-6-2{transform-origin:84px 9px;width:169.141px;min-width:auto;height:18px;min-height:auto;font-weight:700}._wf-div-7,._wf-div-8,._wf-div-9,._wf-div-10,._wf-div-11{transform-origin:84.5625px 9px;width:169.141px;min-width:auto;height:18px;min-height:auto;font-weight:700}._wf-div-12{transform-origin:592px 9px;grid-template-rows:18px;grid-template-columns:169.141px 169.141px 169.141px 169.141px 169.141px 169.141px 169.141px;min-width:auto;height:18px;min-height:auto;display:grid}._wf-div-13{transform-origin:592px 28.9063px;flex-direction:column;align-items:center;height:57.8125px;display:flex}._wf-div-1{transform-origin:3px 50px;background-color:#000;width:6px;height:50px;position:absolute;inset:110px 154px 160px 160px;transform:matrix(1,0,0,1,-3,0)}._wf-div-2-2{transform-origin:2px 70px;background-color:#000;width:4px;height:70px;position:absolute;inset:90px 156px 160px 160px;transform:matrix(1,0,0,1,-2,0)}._wf-div-3-2{transform-origin:1px 90px;background-color:red;width:2px;height:90px;position:absolute;inset:70px 158px 160px 160px;transform:matrix(1,0,0,1,-1,0)}._wf-div-4-3{transform-origin:168px 168px;border-style:solid;border-width:8px;border-radius:50%;width:320px;height:320px;position:relative;inset:0}.ho-w{justify-content:flex-start;align-items:flex-start;height:80svh;display:flex;position:sticky;top:10svh;overflow-x:scroll}.ho-content{flex:none;min-width:100%;height:100%;padding-left:30%;padding-right:30%;display:flex}.ho-c{flex-flow:column;justify-content:center;align-items:flex-start;min-width:80vw;display:flex;position:relative}.ho-c.a-r{justify-content:center;align-items:flex-end}.ho-c.a-c{justify-content:center;align-items:center;min-width:22rem}._w-bg{border-radius:var(--radius-system);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background-image:linear-gradient(#0f0f0f99,#000c);border:1px solid #ffffff1a;padding:2.8rem 1.8rem 1.8rem}._wf-span-1{transform-origin:0 0;color:#333;border-color:#333;width:auto;height:auto;font-family:Arial,sans-serif;font-size:32px;display:inline}._wf-span-2{transform-origin:0 0;width:auto;height:auto;display:inline}._wf-span-3{transform-origin:0 0;color:#333;border-color:#333;width:auto;height:auto;font-family:Arial,sans-serif;font-size:32px;display:inline}._wf-span-4{transform-origin:0 0;width:auto;height:auto;display:inline}._wf-span-5{transform-origin:0 0;color:#333;border-color:#333;width:auto;height:auto;font-family:Arial,sans-serif;font-size:32px;display:inline}._wf-div-6-3{transform-origin:592px 18.5px;color:#333;border-color:#333;height:37px;font-family:Arial,sans-serif;font-size:32px}.wiggle-letter{transform-origin:0 0;width:auto;height:auto;display:inline}.marquee-content,.marquee{transform-origin:592px 9px;height:18px}.animation-spin{animation:2s linear infinite spin}.animated-text{opacity:0;transform-origin:65.5625px 9px;width:131.141px;height:18px;display:inline-block;transform:matrix(1,0,0,1,0,20)}.animated-text-2{opacity:0;transform-origin:75.7969px 9px;width:151.594px;height:18px;display:inline-block;transform:matrix(1,0,0,1,0,20)}.text-animation-wrapper{transform-origin:592px 9px;height:18px;overflow:hidden}.folders{z-index:5;grid-column-gap:1rem;grid-row-gap:1rem;pointer-events:none;flex-flow:column wrap-reverse;grid-template-rows:auto auto auto auto auto auto auto auto auto auto;grid-template-columns:1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;grid-auto-columns:1fr;justify-content:flex-start;align-items:flex-start;height:100%;padding:3rem 1rem 4rem;display:flex;position:fixed;inset:0%}.folders.video-w{flex-flow:row;padding-left:2rem}.folders.txts{z-index:0;flex-flow:column wrap;place-content:flex-end flex-start;align-self:flex-end;align-items:flex-end;padding-left:2rem;padding-right:2rem;position:static}.folders.txts-windows{justify-content:center;align-items:center}.light-c{min-height:110svh;position:relative}.inner-block{border-radius:var(--size-py);height:50svh;margin:.4rem;padding:1rem;position:relative;overflow:clip}.abs{position:absolute;inset:0%}.abs.flex{display:flex}.abs.tr{justify-content:flex-end;align-items:flex-start;height:33%;padding-top:.6rem;padding-right:.6rem;display:flex}.abs.tr.no-evt{pointer-events:none}.img{object-fit:cover}.collection-list-2{justify-content:center;align-items:center;height:100%;display:flex}.collection-list-wrapper-2{width:100%;height:auto}.collection-item{justify-content:center;align-items:center;display:flex}.notification{border-radius:var(--radius-system);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#0f0f0fd9;border:1px solid #ffffff1a;flex-flow:column;width:20rem;min-height:6.2rem;padding:.9rem 1.2rem;font-size:.9rem;display:flex}.red-txt{color:#ff453a;text-transform:uppercase;margin-bottom:0;font-size:.5rem}.red-txt.gray{color:var(--color-gray)}.steps-w{grid-column-gap:.8rem;grid-row-gap:.8rem;color:var(--color-white--40);flex:1;justify-content:flex-start;align-items:flex-end;font-size:.8rem;line-height:1em;display:flex}.xs{font-size:.8em;line-height:.5em}.notification-w{z-index:100;grid-column-gap:.3rem;grid-row-gap:.3rem;flex-flow:column;justify-content:flex-start;align-items:flex-end;display:flex;position:fixed;inset:2.6rem 1.2rem auto auto}.div-block-13{color:var(--color-white--40);flex:1;justify-content:flex-start;align-items:flex-end;font-size:.8rem;line-height:1.1em;display:flex}.paragraph{margin-bottom:.4em}.collection-item-2{order:9999}.collection-list-wrapper-3{height:100svh}.hgroup-2{text-align:left}.gap-v{grid-column-gap:10rem;grid-row-gap:10rem;flex-flow:column;margin-top:6rem;margin-bottom:6rem;display:flex}.c-viz{content-visibility:auto}@media screen and (max-width:991px){.mail-list{width:19rem}.pricing-table{grid-column-gap:.9rem;grid-row-gap:.7rem;padding:1.5rem}.div-block-10{width:0}}@media screen and (max-width:767px){.s{min-height:auto}.s.h-screen{height:auto;padding-top:10svh}.s.h-screen.py.mobile-flip{flex-flow:column-reverse}.s.h-screen.py.mobile-space{grid-column-gap:2rem;grid-row-gap:2rem}.s.footer{grid-column-gap:4rem;grid-row-gap:4rem}.s.h-half{min-height:auto}.hud-w{display:none}.app-w{position:static}.app-w.align-right{justify-content:center;align-items:center;padding-right:0%}.app-item.video{width:95%}.form-btn.static{margin-top:0}.s-cont.shorter{flex-flow:column;justify-content:flex-start;height:auto;margin-bottom:10%;position:relative;top:-10%}.h-txt{margin-bottom:.2rem}.h-full.between{grid-column-gap:16px;grid-row-gap:16px;grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-columns:1fr;width:100%;height:auto;display:grid}.h-full.between.lower{height:100%;margin-top:0%}.c._w-60{width:80%}.c.footer-col{grid-column-gap:4rem;grid-row-gap:4rem;flex-flow:column}.ho{flex-flow:column}.slide-w{width:90vw}.slider{padding-left:2rem}.mail-app{flex-flow:column}.mail-list{width:23rem;max-height:15rem}.pricing-sm.darker-70.is--right{text-align:right}.p-line.is--m{display:block}.package-founder{margin-top:2.5rem}.package-basic,.package-advanced{margin-top:2.5rem;display:block}.p-text{min-width:10rem}.p-text.is--m{display:block}.p-separator{display:none}.txt-w{flex-flow:column;margin-top:3rem;display:flex}.article-w{margin-left:1rem;margin-right:1rem}.article-head{width:auto;margin-left:1rem;margin-right:1rem}.notification,.notification-w{display:none}}@media screen and (max-width:479px){.s.h-screen.py.mobile-flip{grid-column-gap:2rem;grid-row-gap:2rem}.folder-w{display:none}.app-w{top:-10%}.app-item.data{width:90%;min-width:auto;max-width:90%}.app-item.mail,.app-item.price{width:95%;min-width:auto}.h-full.between.lower{margin-top:0%}.mail-size{grid-column-gap:.7rem;grid-row-gap:.7rem;padding-top:1.2rem;padding-bottom:1.2rem}.mail-p{font-size:.8rem}.mail-head-w{justify-content:flex-start;align-items:flex-start;height:3.7rem}.mail-item{height:4rem}.collection-list{height:27.5rem}.unread-email{height:88%}.mail-wrapper{flex-flow:column;justify-content:flex-start;align-items:center;display:flex}.article-abstract{margin-right:0}.folders{display:none}}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8f2-c46ac7c8{grid-area:19/2/20/6}@media screen and (max-width:767px){#w-node-ddd50e0c-bdcb-417b-7dc2-7db828a06f46-43601640,#w-node-f82ddc17-0624-f069-9963-dda808a65750-43601640{grid-area:2/2/2/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7d4-c46ac7c8{grid-area:1/1/2/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7dd-c46ac7c8{grid-area:18/1/19/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7ec-c46ac7c8{grid-area:35/1/36/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac7f7-c46ac7c8{grid-area:52/1/53/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac802-c46ac7c8{grid-area:2/1/3/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac805-c46ac7c8{grid-area:19/1/20/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac808-c46ac7c8{grid-area:36/1/37/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac80b-c46ac7c8{grid-area:67/1/68/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac80e-c46ac7c8{grid-area:65/1/66/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac811-c46ac7c8{grid-area:63/1/64/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac814-c46ac7c8{grid-area:61/1/62/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac817-c46ac7c8{grid-area:59/1/60/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac81a-c46ac7c8{grid-area:57/1/58/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac81d-c46ac7c8{grid-area:55/1/56/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac820-c46ac7c8{grid-area:53/1/54/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac823-c46ac7c8{grid-area:21/1/22/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac826-c46ac7c8{grid-area:38/1/39/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac829-c46ac7c8{grid-area:23/1/24/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac82c-c46ac7c8{grid-area:50/1/51/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac82f-c46ac7c8{grid-area:48/1/49/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac832-c46ac7c8{grid-area:46/1/47/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac835-c46ac7c8{grid-area:44/1/45/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac838-c46ac7c8{grid-area:42/1/43/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac83b-c46ac7c8{grid-area:40/1/41/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac83e-c46ac7c8{grid-area:25/1/26/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac841-c46ac7c8{grid-area:27/1/28/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac844-c46ac7c8{grid-area:29/1/30/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac847-c46ac7c8{grid-area:31/1/32/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac84a-c46ac7c8{grid-area:33/1/34/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac84d-c46ac7c8{grid-area:2/3/3/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac850-c46ac7c8{grid-area:19/3/20/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac853-c46ac7c8{grid-area:36/3/37/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac856-c46ac7c8{grid-area:53/3/54/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac859-c46ac7c8{grid-area:3/1/4/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85a-c46ac7c8{grid-area:20/1/21/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85b-c46ac7c8{grid-area:22/1/23/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85c-c46ac7c8{grid-area:26/1/27/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85d-c46ac7c8{grid-area:24/1/25/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85e-c46ac7c8{grid-area:28/1/29/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac85f-c46ac7c8{grid-area:30/1/31/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac860-c46ac7c8{grid-area:32/1/33/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac861-c46ac7c8{grid-area:37/1/38/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac862-c46ac7c8{grid-area:64/1/65/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac863-c46ac7c8{grid-area:66/1/67/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac864-c46ac7c8{grid-area:62/1/63/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac865-c46ac7c8{grid-area:60/1/61/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac866-c46ac7c8{grid-area:58/1/59/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac867-c46ac7c8{grid-area:56/1/57/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac868-c46ac7c8{grid-area:54/1/55/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac869-c46ac7c8{grid-area:39/1/40/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86a-c46ac7c8{grid-area:49/1/50/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86b-c46ac7c8{grid-area:47/1/48/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86c-c46ac7c8{grid-area:45/1/46/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86d-c46ac7c8{grid-area:43/1/44/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86e-c46ac7c8{grid-area:41/1/42/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac86f-c46ac7c8{grid-area:4/1/5/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac872-c46ac7c8{grid-area:4/3/5/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac875-c46ac7c8{grid-area:21/3/22/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac878-c46ac7c8{grid-area:38/3/39/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac87b-c46ac7c8{grid-area:55/3/56/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac87e-c46ac7c8{grid-area:5/1/6/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac87f-c46ac7c8{grid-area:6/1/7/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac882-c46ac7c8{grid-area:6/3/7/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac885-c46ac7c8{grid-area:23/3/24/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac888-c46ac7c8{grid-area:40/3/41/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac88b-c46ac7c8{grid-area:57/3/58/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac88e-c46ac7c8{grid-area:7/1/8/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac88f-c46ac7c8{grid-area:8/1/9/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac892-c46ac7c8{grid-area:8/3/9/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac895-c46ac7c8{grid-area:25/3/26/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac898-c46ac7c8{grid-area:42/3/43/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac89b-c46ac7c8{grid-area:59/3/60/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac89e-c46ac7c8{grid-area:9/1/10/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac89f-c46ac7c8{grid-area:10/1/11/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8a2-c46ac7c8{grid-area:10/3/11/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8a5-c46ac7c8{grid-area:27/3/28/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8a8-c46ac7c8{grid-area:44/3/45/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ab-c46ac7c8{grid-area:61/3/62/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ae-c46ac7c8{grid-area:11/1/12/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8af-c46ac7c8{grid-area:12/1/13/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8b2-c46ac7c8{grid-area:12/3/13/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8b5-c46ac7c8{grid-area:29/3/30/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8b8-c46ac7c8{grid-area:46/2/47/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8bb-c46ac7c8{grid-area:63/3/64/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8be-c46ac7c8{grid-area:13/1/14/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8bf-c46ac7c8{grid-area:14/1/15/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8c2-c46ac7c8{grid-area:14/3/15/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8c5-c46ac7c8{grid-area:31/3/32/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8c8-c46ac7c8{grid-area:48/3/49/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8cb-c46ac7c8{grid-area:65/3/66/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ce-c46ac7c8{grid-area:15/1/16/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8cf-c46ac7c8{grid-area:16/1/17/3}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8d2-c46ac7c8{grid-area:16/3/17/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8d5-c46ac7c8{grid-area:33/3/34/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8d8-c46ac7c8{grid-area:50/3/51/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8db-c46ac7c8{grid-area:67/3/68/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8e0-c46ac7c8{grid-area:17/1/18/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8e5-c46ac7c8{grid-area:34/1/35/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ea-c46ac7c8{grid-area:51/1/52/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8ee-c46ac7c8{grid-area:68/1/69/6}#w-node-_50f753d0-d32b-2c22-f62e-fef0c46ac8f2-c46ac7c8{grid-row:70/71;grid-column-start:1}}@media screen and (max-width:479px){#w-node-_42aec6af-ef19-ac2b-f604-ecf49ea735c6-43601640{grid-area:span 1/span 2/span 1/span 2}} \ No newline at end of file diff --git a/assets/webflow/js/ssscript.a0aa6ca1.38bff8ac21973156.js b/assets/webflow/js/ssscript.a0aa6ca1.38bff8ac21973156.js deleted file mode 100644 index 2d2d5dc..0000000 --- a/assets/webflow/js/ssscript.a0aa6ca1.38bff8ac21973156.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{var e={524:function(e,t){"use strict";function n(e,t,n,a,i,r,o,l,f,s,d,c,u){return function(p){e(p);var m=p.form,v={name:m.attr("data-name")||m.attr("name")||"Untitled Form",pageId:m.attr("data-wf-page-id")||"",elementId:m.attr("data-wf-element-id")||"",domain:c("html").attr("data-wf-domain")||null,collectionId:c("html").attr("data-wf-collection")||null,itemSlug:c("html").attr("data-wf-item-slug")||null,source:t.href,test:n.env(),fields:{},fileUploads:{},dolphin:/pass[\s-_]?(word|code)|secret|login|credentials/i.test(m.html()),trackingCookies:a()};let g=m.attr("data-wf-flow");g&&(v.wfFlow=g);let w=m.attr("data-wf-locale-id");w&&(v.localeId=w),i(p);var h=r(m,v.fields);return h?o(h):(v.fileUploads=l(m),f(p),s)?void c.ajax({url:u,type:"POST",data:v,dataType:"json",crossDomain:!0}).done(function(e){e&&200===e.code&&(p.success=!0),d(p)}).fail(function(){d(p)}):void d(p)}}Object.defineProperty(t,"default",{enumerable:!0,get:function(){return n}})},527:function(e,t,n){"use strict";var a=n(949);let i=(e,t,n,a)=>{let i=document.createElement("div");t.appendChild(i),turnstile.render(i,{sitekey:e,callback:function(e){n(e)},"error-callback":function(){a()}})};a.define("forms",e.exports=function(e,t){let r,o="TURNSTILE_LOADED";var l,f,s,d,c,u={},p=e(document),m=window.location,v=window.XDomainRequest&&!window.atob,g=".w-form",w=/e(-)?mail/i,h=/^\S+@\S+$/,b=window.alert,y=a.env();let k=p.find("[data-turnstile-sitekey]").data("turnstile-sitekey");var x=/list-manage[1-9]?.com/i,O=t.debounce(function(){console.warn("Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.")},100);function C(t,r){var l=e(r),s=e.data(r,g);s||(s=e.data(r,g,{form:l})),U(s);var u=l.closest("div.w-form");s.done=u.find("> .w-form-done"),s.fail=u.find("> .w-form-fail"),s.fileUploads=u.find(".w-file-upload"),s.fileUploads.each(function(t){!function(t,n){if(n.fileUploads&&n.fileUploads[t]){var a,i=e(n.fileUploads[t]),r=i.find("> .w-file-upload-default"),o=i.find("> .w-file-upload-uploading"),l=i.find("> .w-file-upload-success"),f=i.find("> .w-file-upload-error"),s=r.find(".w-file-upload-input"),d=r.find(".w-file-upload-label"),u=d.children(),p=f.find(".w-file-upload-error-msg"),m=l.find(".w-file-upload-file"),v=l.find(".w-file-remove-link"),g=m.find(".w-file-upload-file-name"),w=p.attr("data-w-size-error"),h=p.attr("data-w-type-error"),b=p.attr("data-w-generic-error");if(y||d.on("click keydown",function(e){("keydown"!==e.type||13===e.which||32===e.which)&&(e.preventDefault(),s.click())}),d.find(".w-icon-file-upload-icon").attr("aria-hidden","true"),v.find(".w-icon-file-upload-remove").attr("aria-hidden","true"),y)s.on("click",function(e){e.preventDefault()}),d.on("click",function(e){e.preventDefault()}),u.on("click",function(e){e.preventDefault()});else{v.on("click keydown",function(e){if("keydown"===e.type){if(13!==e.which&&32!==e.which)return;e.preventDefault()}s.removeAttr("data-value"),s.val(""),g.html(""),r.toggle(!0),l.toggle(!1),d.focus()}),s.on("change",function(i){var l,s,d;(a=i.target&&i.target.files&&i.target.files[0])&&(r.toggle(!1),f.toggle(!1),o.toggle(!0),o.focus(),g.text(a.name),D()||E(n),n.fileUploads[t].uploading=!0,l=a,s=O,d=new URLSearchParams({name:l.name,size:l.size}),e.ajax({type:"GET",url:`${c}?${d}`,crossDomain:!0}).done(function(e){s(null,e)}).fail(function(e){s(e)}))});var k=d.outerHeight();s.height(k),s.width(1)}}function x(e){var a=e.responseJSON&&e.responseJSON.msg,i=b;"string"==typeof a&&0===a.indexOf("InvalidFileTypeError")?i=h:"string"==typeof a&&0===a.indexOf("MaxFileSizeError")&&(i=w),p.text(i),s.removeAttr("data-value"),s.val(""),o.toggle(!1),r.toggle(!0),f.toggle(!0),f.focus(),n.fileUploads[t].uploading=!1,D()||U(n)}function O(t,n){if(t)return x(t);var i=n.fileName,r=n.postData,o=n.fileId,l=n.s3Url;s.attr("data-value",o),function(t,n,a,i,r){var o=new FormData;for(var l in n)o.append(l,n[l]);o.append("file",a,i),e.ajax({type:"POST",url:t,data:o,processData:!1,contentType:!1}).done(function(){r(null)}).fail(function(e){r(e)})}(l,r,a,i,C)}function C(e){if(e)return x(e);o.toggle(!1),l.css("display","inline-block"),l.focus(),n.fileUploads[t].uploading=!1,D()||U(n)}function D(){return(n.fileUploads&&n.fileUploads.toArray()||[]).some(function(e){return e.uploading})}}(t,s)}),k&&!l.is("[data-wf-no-turnstile]")&&(function(e){let t=e.btn||e.form.find(':input[type="submit"]');e.btn||(e.btn=t),t.prop("disabled",!0),t.addClass("w-form-loading")}(s),D(l,!0),p.on("undefined"!=typeof turnstile?"ready":o,function(){function e(){i(k,r,e=>{s.turnstileToken=e,U(s),D(l,!1)},()=>{U(s),s.btn&&s.btn.prop("disabled",!0),D(l,!1)})}if("undefined"!=typeof IntersectionObserver){var t=new IntersectionObserver(function(n){n[0].isIntersecting&&(t.disconnect(),e())},{rootMargin:"200px"});t.observe(r)}else e()}));var v=s.form.attr("aria-label")||s.form.attr("data-name")||"Form";s.done.attr("aria-label")||s.form.attr("aria-label",v),s.done.attr("tabindex","-1"),s.done.attr("role","region"),s.done.attr("aria-label")||s.done.attr("aria-label",v+" success"),s.fail.attr("tabindex","-1"),s.fail.attr("role","region"),s.fail.attr("aria-label")||s.fail.attr("aria-label",v+" failure");var w=s.action=l.attr("action");if(s.handler=null,s.redirect=l.attr("data-redirect"),x.test(w)){s.handler=F;return}if(!w){if(f){s.handler=(0,n(524).default)(U,m,a,$,M,I,b,j,E,f,A,e,d);return}O()}}function U(e){var t=e.btn=e.form.find(':input[type="submit"]');e.wait=e.btn.attr("data-wait")||null,e.success=!1;let n=!!(k&&!e.turnstileToken);t.prop("disabled",n),t.removeClass("w-form-loading"),e.label&&t.val(e.label)}function E(e){var t=e.btn,n=e.wait;t.prop("disabled",!0),n&&(e.label=t.val(),t.val(n))}function D(e,t){let n=e.closest(".w-form");t?n.addClass("w-form-loading"):n.removeClass("w-form-loading")}function I(t,n){var a=null;return n=n||{},t.find(':input:not([type="submit"]):not([type="file"]):not([type="button"])').each(function(i,r){var o,l,f,s,d,c=e(r),u=c.attr("type"),p=c.attr("data-name")||c.attr("name")||"Field "+(i+1);p=encodeURIComponent(p);var m=c.val();if("checkbox"===u)m=c.is(":checked");else if("radio"===u){if(null===n[p]||"string"==typeof n[p])return;m=t.find('input[name="'+c.attr("name")+'"]:checked').val()||null}"string"==typeof m&&(m=e.trim(m)),n[p]=m,a=a||(o=c,l=u,f=p,s=m,d=null,"password"===l?d="Passwords cannot be submitted.":o.attr("required")?s?w.test(o.attr("type"))&&!h.test(s)&&(d="Please enter a valid email address for: "+f):d="Please fill out the required field: "+f:"g-recaptcha-response"!==f||s||(d="Please confirm you're not a robot."),d)}),a}function j(t){var n={};return t.find(':input[type="file"]').each(function(t,a){var i=e(a),r=i.attr("data-name")||i.attr("name")||"File "+(t+1),o=i.attr("data-value");"string"==typeof o&&(o=e.trim(o)),n[r]=o}),n}u.ready=u.design=u.preview=function(){(function(){if(k){let e=()=>{(r=document.createElement("script")).src="https://challenges.cloudflare.com/turnstile/v0/api.js",document.head.appendChild(r),r.onload=()=>{p.trigger(o)}};"function"==typeof requestIdleCallback?window.requestIdleCallback(e):setTimeout(e,200)}})(),d="https://webflow.com/api/v1/form/"+(f=e("html").attr("data-wf-site")),v&&d.indexOf("https://webflow.com")>=0&&(d=d.replace("https://webflow.com","https://formdata.webflow.com")),c=`${d}/signFile`,(l=e(g+" form")).length&&l.each(C),(!y||a.env("preview"))&&!s&&function(){s=!0,p.on("submit",g+" form",function(t){var n=e.data(this,g);n.handler&&(n.evt=t,n.handler(n))});let t=".w-checkbox-input",n=".w-radio-input",a="w--redirected-checked",i="w--redirected-focus",r="w--redirected-focus-visible",o=[["checkbox",t],["radio",n]];p.on("change",g+' form input[type="checkbox"]:not('+t+")",n=>{e(n.target).siblings(t).toggleClass(a)}),p.on("change",g+' form input[type="radio"]',i=>{e(`input[name="${i.target.name}"]:not(${t})`).map((t,i)=>e(i).siblings(n).removeClass(a));let r=e(i.target);r.hasClass("w-radio-input")||r.siblings(n).addClass(a)}),o.forEach(([t,n])=>{p.on("focus",g+` form input[type="${t}"]:not(`+n+")",t=>{e(t.target).siblings(n).addClass(i),e(t.target).filter(":focus-visible, [data-wf-focus-visible]").siblings(n).addClass(r)}),p.on("blur",g+` form input[type="${t}"]:not(`+n+")",t=>{e(t.target).siblings(n).removeClass(`${i} ${r}`)})})}()};let T={_mkto_trk:"marketo"};function $(){return document.cookie.split("; ").reduce(function(e,t){let n=t.split("="),a=n[0];if(a in T){let t=T[a],i=n.slice(1).join("=");e[t]=i}return e},{})}function F(n){U(n);var a,i=n.form,r={};if(/^https/.test(m.href)&&!/^https/.test(n.action))return void i.attr("method","post");M(n);var o=I(i,r);if(o)return b(o);E(n),t.each(r,function(e,t){w.test(t)&&(r.EMAIL=e),/^((full[ _-]?)?name)$/i.test(t)&&(a=e),/^(first[ _-]?name)$/i.test(t)&&(r.FNAME=e),/^(last[ _-]?name)$/i.test(t)&&(r.LNAME=e)}),a&&!r.FNAME&&(r.FNAME=(a=a.split(" "))[0],r.LNAME=r.LNAME||a[1]);var l=n.action.replace("/post?","/post-json?")+"&c=?",f=l.indexOf("u=")+2;f=l.substring(f,l.indexOf("&",f));var s=l.indexOf("id=")+3;r["b_"+f+"_"+(s=l.substring(s,l.indexOf("&",s)))]="",e.ajax({url:l,data:r,dataType:"jsonp"}).done(function(e){n.success="success"===e.result||/already/.test(e.msg),n.success||console.info("MailChimp error: "+e.msg),A(n)}).fail(function(){A(n)})}function A(e){var t=e.form,n=e.redirect,i=e.success;if(i&&n)return void a.location(n);e.done.toggle(i),e.fail.toggle(!i),i?e.done.focus():e.fail.focus(),t.toggle(!i),U(e)}function M(e){e.evt&&e.evt.preventDefault(),e.evt=null}return u})},670:function(e,t,n){n(461),n(624),n(286),n(334),n(338),n(695),n(322),n(527)}},t={};function n(a){var i=t[a];if(void 0!==i)return i.exports;var r=t[a]={exports:{}};return e[a](r,r.exports,n),r.exports}n.m=e,n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e=[];n.O=(t,a,i,r)=>{if(a){r=r||0;for(var o=e.length;o>0&&e[o-1][2]>r;o--)e[o]=e[o-1];e[o]=[a,i,r];return}for(var l=1/0,o=0;o=r)&&Object.keys(n.O).every(e=>n.O[e](a[s]))?a.splice(s--,1):(f=!1,r"1.3.9",(()=>{var e={34:0};n.O.j=t=>0===e[t];var t=(t,a)=>{var i,r,[o,l,f]=a,s=0;if(o.some(t=>0!==e[t])){for(i in l)n.o(l,i)&&(n.m[i]=l[i]);if(f)var d=f(n)}for(t&&t(a);sBeta - - - - - -
- -
Ssscript App logo
Beta release May 2026

Get in the Beta

Apply only if you think you can follow up with this.

Thanks!

We'll reach out if you're a fit.

Want to get in early and contribute to the development, locking a yearly discounted 50% advanced access forever?
Get Founder Now 350€

Nope :(

Something went wrong.
Try again (later maybe)?

Privacy PolicyCookie Policy
© — All Right Reserved
2026

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

InfluenceEarly Choices

And actively participate to the product roadmap.

Direct accessTo the App.

As an early tester. Infinite credits and tokens, unlimiterd projects.

DiscountedSign up.

When launching.
video-demo.mp4

What's inThe Beta.

You'll be actively participating in the early development stages of the app, influencing the development and future direction.
What am I expecting?
Active participation. Either through testing scenarios, or even better, to roll it in production.
What you'll get?
I'll be there for you. Constant communication, bug fixing and 1 to 1 involvement.
Where?
We'll have a shared, private Discord channel, with other Beta Testers (~40 ppl).
What you get,
Preference, early and discounted access to Founders plan.
\ No newline at end of file diff --git a/backbase/ssscript.app/beta-apply.orig b/backbase/ssscript.app/beta-apply.orig deleted file mode 100644 index 4be8630..0000000 --- a/backbase/ssscript.app/beta-apply.orig +++ /dev/null @@ -1,69 +0,0 @@ -Beta - - - - - -
- -
Ssscript App logo
Beta release May 2026

Get in the Beta

Apply only if you think you can follow up with this.

Thanks!

We'll reach out if you're a fit.

Want to get in early and contribute to the development, locking a yearly discounted 50% advanced access forever?
Get Founder Now 350€

Nope :(

Something went wrong.
Try again (later maybe)?

Privacy PolicyCookie Policy
© — All Right Reserved
2026

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

InfluenceEarly Choices

And actively participate to the product roadmap.

Direct accessTo the App.

As an early tester. Infinite credits and tokens, unlimiterd projects.

DiscountedSign up.

When launching.
video-demo.mp4

What's inThe Beta.

You'll be actively participating in the early development stages of the app, influencing the development and future direction.
What am I expecting?
Active participation. Either through testing scenarios, or even better, to roll it in production.
What you'll get?
I'll be there for you. Constant communication, bug fixing and 1 to 1 involvement.
Where?
We'll have a shared, private Discord channel, with other Beta Testers (~40 ppl).
What you get,
Preference, early and discounted access to Founders plan.
\ No newline at end of file diff --git a/backbase/ssscript.app/enterprise.html b/backbase/ssscript.app/enterprise.html deleted file mode 100644 index c321d06..0000000 --- a/backbase/ssscript.app/enterprise.html +++ /dev/null @@ -1,69 +0,0 @@ -Enterprise - - - - - -
- -
Ssscript App logo
Release September 2026

Enterprise Plan

Bring Your Own Keys. Extra security and privacy. Use any model.

200
/ Monthly (5 users)
Dropping
May 2026
Token Capacity
BYOK
Project Workspace
Unlimited
Members Included
5 Seats
6+ Members
+ 40€ / Month / User
Privacy PolicyCookie Policy
© — All Right Reserved
2026

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

DirectAssistance

Privileged access to support channels.

5 SeatsIncluded

5 Seats (40€/month) included.
Pay what you use, get unlimited projects.
video-demo.mp4

BringYour OwnKeys.

Complete privacy and isolation.
Pay on your terms.
Enterprise Pricing
Access the app in beta with the testers, you'll get access on the first beta open wave in approximately a week.
Use any model.
At more than 50% discounts. All the good stuffs, less than half the price.
Additional Seats
Available at discounted price (30€/month per user).
Premium Support
Available 24h.
\ No newline at end of file diff --git a/backbase/ssscript.app/enterprise.orig b/backbase/ssscript.app/enterprise.orig deleted file mode 100644 index 1fa6d40..0000000 --- a/backbase/ssscript.app/enterprise.orig +++ /dev/null @@ -1,69 +0,0 @@ -Enterprise - - - - - -
- -
Ssscript App logo
Release September 2026

Enterprise Plan

Bring Your Own Keys. Extra security and privacy. Use any model.

200
/ Monthly (5 users)
Dropping
May 2026
Token Capacity
BYOK
Project Workspace
Unlimited
Members Included
5 Seats
6+ Members
+ 40€ / Month / User
Privacy PolicyCookie Policy
© — All Right Reserved
2026

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

DirectAssistance

Privileged access to support channels.

5 SeatsIncluded

5 Seats (40€/month) included.
Pay what you use, get unlimited projects.
video-demo.mp4

BringYour OwnKeys.

Complete privacy and isolation.
Pay on your terms.
Enterprise Pricing
Access the app in beta with the testers, you'll get access on the first beta open wave in approximately a week.
Use any model.
At more than 50% discounts. All the good stuffs, less than half the price.
Additional Seats
Available at discounted price (30€/month per user).
Premium Support
Available 24h.
\ No newline at end of file diff --git a/backbase/ssscript.app/founders.html b/backbase/ssscript.app/founders.html deleted file mode 100644 index 6fd101f..0000000 --- a/backbase/ssscript.app/founders.html +++ /dev/null @@ -1,69 +0,0 @@ -Founders - - - - - -
- -
Ssscript App logo
Beta release July 2026

Founders Access

Get in Early. Access the early beta before official release, with benefits.

50% Discount
310
/ Yearly, Forever
Dropping
April 2026
Token Capacity Beta
Unlimited
Token Capacity After
20M / Month
Project Workspace
Unlimited
Expansion (10M/20M)
€10/€16
Total Availability
200 Spots
Help fund the training and fine tuning of the Webflow code model, and the early development of the App.
Privacy PolicyCookie Policy
© — All Right Reserved
2026

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

InfluenceEarly Choices

And actively participate to the product roadmap.

Early accessTo the Beta

You'll get in for the second phase of the beta, help test, provide feedback and shape the future of the app.

50% discountOn the advanced plan.

Yearly, forever.
video-demo.mp4

WhatFounderMeans.

Early Beta Access, 50% discount.
Forever.
Early Access
Access the app in beta with the testers, you'll get access on the first beta open wave in approximately a week.
Lifetime Advanced Perks at half the price.
At more than 50% discounts. All the good stuffs, less than half the price.
Support the development
Your money will go towards fine tuning and training the custom model we're working on.
Pricing

CompareyourOptions

Founders get you access to the second Beta phase, with everything unlimited while testing, for 1 month.
Priced Yearly supports the custom model fine tuning costs, while giving you Advanced pricing perks, forever.
200 Founder spots total available.
Get in!
Pricing.app

Beta

Free
1 Month

Founder

310
/ Yearly, forever
50% Discount

Basic

20
/ Month

Advanced

50
/ Month
Dropping
Dropping
Dropping
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Token Capacity
Dropping
Token Capacity
Token Capacity
Project Workspace
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Core Intelligence
Reasoning Depth
Expansion (10M)
Expansion (20M)
Total Availability
June 2026
June 2026
June 2026
June 2026
Plan Credits
Unlimited
40,000 Included
12,000 Included
40,000 Included
Project Workspace
Unlimited
Unlimited
10 Projects
Unlimited
Core Intelligence
All Models
All fast
All fast
All fast
Reasoning Depth
Full
Full
Limited
Full
Expansion SM 10€
Unlimited Refresh
+ 10,000 Credits
+ 8,000 Credits
+ 10,000 Credits
Expansion MD 20€
Unlimited Refresh
+ 26,000 Credits
+ 20,000 Credits
+ 26,000 Credits
Total Availability
40 testers
200 Spots
--
--
Apply for Beta
Get Founder Now
(*) Stuffs might change as testing progresses, though I'll do my best to honour what's here now.
Enterprise BYOK plans available from September 2026.
\ No newline at end of file diff --git a/backbase/ssscript.app/founders.orig b/backbase/ssscript.app/founders.orig deleted file mode 100644 index 2e8725a..0000000 --- a/backbase/ssscript.app/founders.orig +++ /dev/null @@ -1,69 +0,0 @@ -Founders - - - - - -
- -
Ssscript App logo
Beta release July 2026

Founders Access

Get in Early. Access the early beta before official release, with benefits.

50% Discount
310
/ Yearly, Forever
Dropping
April 2026
Token Capacity Beta
Unlimited
Token Capacity After
20M / Month
Project Workspace
Unlimited
Expansion (10M/20M)
€10/€16
Total Availability
200 Spots
Help fund the training and fine tuning of the Webflow code model, and the early development of the App.
Privacy PolicyCookie Policy
© — All Right Reserved
2026

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

InfluenceEarly Choices

And actively participate to the product roadmap.

Early accessTo the Beta

You'll get in for the second phase of the beta, help test, provide feedback and shape the future of the app.

50% discountOn the advanced plan.

Yearly, forever.
video-demo.mp4

WhatFounderMeans.

Early Beta Access, 50% discount.
Forever.
Early Access
Access the app in beta with the testers, you'll get access on the first beta open wave in approximately a week.
Lifetime Advanced Perks at half the price.
At more than 50% discounts. All the good stuffs, less than half the price.
Support the development
Your money will go towards fine tuning and training the custom model we're working on.
Pricing

CompareyourOptions

Founders get you access to the second Beta phase, with everything unlimited while testing, for 1 month.
Priced Yearly supports the custom model fine tuning costs, while giving you Advanced pricing perks, forever.
200 Founder spots total available.
Get in!
Pricing.app

Beta

Free
1 Month

Founder

310
/ Yearly, forever
50% Discount

Basic

20
/ Month

Advanced

50
/ Month
Dropping
Dropping
Dropping
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Token Capacity
Dropping
Token Capacity
Token Capacity
Project Workspace
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Core Intelligence
Reasoning Depth
Expansion (10M)
Expansion (20M)
Total Availability
June 2026
June 2026
June 2026
June 2026
Plan Credits
Unlimited
40,000 Included
12,000 Included
40,000 Included
Project Workspace
Unlimited
Unlimited
10 Projects
Unlimited
Core Intelligence
All Models
All fast
All fast
All fast
Reasoning Depth
Full
Full
Limited
Full
Expansion SM 10€
Unlimited Refresh
+ 10,000 Credits
+ 8,000 Credits
+ 10,000 Credits
Expansion MD 20€
Unlimited Refresh
+ 26,000 Credits
+ 20,000 Credits
+ 26,000 Credits
Total Availability
40 testers
200 Spots
--
--
Apply for Beta
Get Founder Now
(*) Stuffs might change as testing progresses, though I'll do my best to honour what's here now.
Enterprise BYOK plans available from September 2026.
\ No newline at end of file diff --git a/backbase/ssscript.app/index.html b/backbase/ssscript.app/index.html deleted file mode 100644 index 6ed3de0..0000000 --- a/backbase/ssscript.app/index.html +++ /dev/null @@ -1,122 +0,0 @@ -Ssscript™ — Your Webflow AI Launchpad - - - - -
- -

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

CompleteAgentic Control

Integrated with Webflow MCP, multi agent mode allows you to work on multiple instances in parallel.

ComponentLibrary

Build with AI Agents in mind, diverse component setups that provide the backbone, while design the style and prompt advanced functionality.

Deployment Pipeline

One click deploy, continuous pipeline, instant rollback, and fast CDN delivery.
Ssscript App logo
Beta release July 2026

Get early access

All in one Custom Code, MCP, Ai launchpad for Webflow.

You're In, thanks.

We'll be in touch soon.

Apply for Beta?

Or get Early founder's access

Get Founder Now 350€
200 Spots Max

Nope :(

Something went wrong.
Try again (later maybe)?

Privacy PolicyCookie Policy
© — All Right Reserved
2026
video-demo.mp4

All in oneApp.

The swiss-army knife for AI Agent in your Webflow project.
Contextual Awareness
Connect to the MCP to give the Agents the full context on your build.
Agent Swarms
Use multiple agents in parallel to add custom code, animations, and functionality.
Development Setup
Leverage fast Bun based builds, and live reload of your custom code.
One-click Deploy
Click and deploy your AI written custom code to make it available to all users visiting your website.

AgenticComponentLibrary.

Agent ready component library. One click add (via the Ssscript Webflow app) ready to customise.

AI Mode Switch

New Project Flow

AI Dock Mode

Account

AI Code Editing

AI Dev Server

Webflow MCP

Publishing

OneclickAdd.

With the Ssscript Webflow Extension.
Component Awareness
Use multiple agents in parallel to add custom code, animations, and functionality.
Faster Starters
Leverage fast Bun based builds, and live reload of your custom code.

Get abetterMCP.

Fully re-engineered faster MCP server.
Webflow Awareness
Use multiple agents in parallel to add custom code, animations, and functionality.

FlexibleAI Modes.

Different modes and models for different tasks.

AI Mode Switch

New Project Flow

AI Dock Mode

Account

AI Code Editing

AI Dev Server

Webflow MCP

Publishing

FrequentlyAskedQuestions

Detailed overview of features, functionality and inner workings.
FAQs
Federico
Does it impact performance?
Federico
Where are my files hosted?
Federico
Help! I pushed the wrong files!
Federico
What's the Webflow AI Agent?
Federico
What is the custom knowledge base?
Federico
How do I use it with Webflow?
Federico
What AIs are available?
Federico
How does it work?
Federico
How does publishing work?
Federico
Does it work with the MCP?
Federico
Reply-To
Does it impact performance?

As every custom code addition does: the overhead is just the one added by the code itself.

Everything is also bundled, minified and compressed, to have the least impact on the project, avoiding loading external libraries and increase the number of CDN based scripts.

Sent from my iPhone
Federico
Reply-To
Where are my files hosted?

After the build step, all bundled files are uploaded to Cloudflare R2 and served through a CDN link on ssscript.dev domain, a dedicated CDN for this project, for the fastest, Webflow compatible result.

Sent from my iPhone
Federico
Reply-To
Help! I pushed the wrong files!

In the deploy panel there's the option for an instant rollback.

Hit that, and you'll get the previous deployment working right away, fix locally, and push again.

Sent from my iPhone
Federico
Reply-To
What's the Webflow AI Agent?

Other than @plan, @build and @explore default Agent modes, we're working on a @webflow mode, made specifically of webflow knowlege, how to interact with the project and how to be effective in it.

Sent from my iPhone
Federico
Reply-To
What is the custom knowledge base?

Built on top of years writing custom code in webflow for animation.

WebGl, Threejs, GSAP and custom functionality, we collected best practices, build pipelines, and a module based systems to ensure everything works in unison.

A custom component library is also available for you to pick from, add to your project, and ask the AI to modify to fit your needs.

Sent from my iPhone
Federico
Reply-To
How do I use it with Webflow?

When running the Ssscript™, there's a custom Embed tab.

Depending on your needs, you can get page based scripts, or a unique app.js for the entirety of the project.

The generated link already contains both a deployed version, that'll follow your deploy url, and a local version, allowing you to work on you to preview your code without disturbing other people visiting your website.

Sent from my iPhone
Federico
Reply-To
What AIs are available?

We're using all major models available, from OpenAI to Claude to Gemini.

The model orchestrates automatically based on the request and needs, and you can switch to specific models by selecting them in a toggle.

Sent from my iPhone
Federico
Reply-To
How does it work?

When running, Ssscript™ is doing 2 things in parallel.

Running a local Development environment, based on Bun, that keeps javascript and typescript files in sync, provides Hot Module Reload (HMR), and keeps a webhook active to automatically refresh your website when changes are made.

At the same time, an ai agent orchestrator is running, accessing agents and processing your requests, changing code, checking the build health, and modifying the Webflow project when needed.

Sent from my iPhone
Federico
Reply-To
How does publishing work?

It's a multi step project. First, we use Bun to build, compress, minify and set up the project and libraries used.

Then we add to our CDN: ssscript.dev/{USERNAME}/{PROJECT-NAME}. The link already contains the correct structure, so while you keep seeing the local version of the files, everyone else get the right script served instead.

Sent from my iPhone
Federico
Reply-To
Does it work with the MCP?

It's built to work with the Webflow MCP natively.

Connect project, set authorization, and the AI Agents have now access to the Webflow build. Connect the App in the webflow Designer to also allow for Designer access, so the agents can update content, create elements, change styles and CSS, and to give the custom code full awareness of the Webflow project.

Sent from my iPhone

Connect.Prompt.Ship.

All in one development to production pipeline.
12-click total setup, from app download to have it running in your project.
Join Waitlist
Pricing

Get Codeto No-Code,with AI.

App subscriptions with
inlcuded usage in every plan.
Token based pricing for overages.
200 Founder spots with locked price for the first year.
Pricing.app

Beta

Free
1 Month

Founder

310
/ Yearly, forever
50% Discount

Basic

20
/ Month

Advanced

50
/ Month
Dropping
Dropping
Dropping
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Token Capacity
Dropping
Token Capacity
Token Capacity
Project Workspace
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Core Intelligence
Reasoning Depth
Expansion (10M)
Expansion (20M)
Total Availability
June 2026
June 2026
June 2026
June 2026
Plan Credits
Unlimited
40,000 Included
12,000 Included
40,000 Included
Project Workspace
Unlimited
Unlimited
10 Projects
Unlimited
Core Intelligence
All Models
All fast
All fast
All fast
Reasoning Depth
Full
Full
Limited
Full
Expansion SM 10€
Unlimited Refresh
+ 10,000 Credits
+ 8,000 Credits
+ 10,000 Credits
Expansion MD 20€
Unlimited Refresh
+ 26,000 Credits
+ 20,000 Credits
+ 26,000 Credits
Total Availability
40 testers
200 Spots
--
--
Apply for Beta
Get Founder Now
(*) Stuffs might change as testing progresses, though I'll do my best to honour what's here now.
Enterprise BYOK plans available from September 2026.
One click publish.png
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
One click publish.png
Complete code editor.webp
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
Complete code editor.webp
AI Dock Mode.jpg
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
AI Dock Mode.jpg
Deep Webflow connection.webp
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
Deep Webflow connection.webp
Install, setup and run.jpg
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
Install, setup and run.jpg
Pricing

Get Codeto No-Code,with AI.

App subscriptions with
inlcuded usage in every plan.
Token based pricing for overages.
200 Founder spots with locked price for the first year.
Ssscript App logo
Beta release July 2026

Get early access

All in one Custom Code, MCP, AI launchpad for Webflow.

You're In, thanks.

We'll be in touch soon.

Apply for Beta?
Privacy PolicyCookie Policy
© — All Right Reserved
2026
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
fff
fff
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Ergtrr
Ggg
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Paul
just found your website, looks great ! -
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
s
s
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
rkxkr
i d know but yeah
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Ali Awan
Please let me check this out!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
rox del toro
GIMME
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Flavio
Hello!!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Daniel Clydesdale
We've worked in Webflow since 2016 and use it exclusively. We're also implementing AI into our workflows and I'm very interested in your offering here. Good luck with the launch!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Carter Ogunsola
Just a PSA for all you other devs.. haha I found out about this very early on. One of the favorites ykyk.
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Marin Trajkovski
Hi can i get early access please i wanna test the ai i need it so much i will really appreciate it
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Arul
interesting. Would love to know more
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Jeremy
Wooooooaaahhh!! - -Please let me into the beta!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Safin
I would love to try out this product. Seems very interesting
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Ilja van Eck
Am I the first founder member now? Take my money Fed, make this happen <3
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Jordan Gilroy
I'm your biggest fan
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
hyun
hello
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
kris
testingggg
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Syed Irfan
Interested
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
ramyar atlasi
Apm pflege schule Düsseldorf
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Muhammad Ashar
vv
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
:DD
ka tu nx
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
test
test
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Filip
I know Fed!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Arinbjørn
Let me join!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Janarthanan
waiting
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Jane Smith
I would love early access to this product!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Daniel Apro
Whatup homie, the site is 🔥
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Allonelabs
Hey, we really like your design , cheers!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
nicola romei
"Goat" refers to the horned, domesticated mammal (Capra aegagrus hircus) known for agility. As a popular acronym, G.O.A.T. means "Greatest of All Time
Txt Apple Icon
fff
.txt
Txt Apple Icon
Ergtrr
.txt
Txt Apple Icon
Paul
.txt
Txt Apple Icon
s
.txt
Txt Apple Icon
rkxkr
.txt
Txt Apple Icon
Ali Awan
.txt
Txt Apple Icon
rox del toro
.txt
Txt Apple Icon
Flavio
.txt
Txt Apple Icon
Daniel Clydesdale
.txt
Txt Apple Icon
Carter Ogunsola
.txt
Txt Apple Icon
Marin Trajkovski
.txt
Txt Apple Icon
Arul
.txt
Txt Apple Icon
Jeremy
.txt
Txt Apple Icon
Safin
.txt
Txt Apple Icon
Ilja van Eck
.txt
Txt Apple Icon
Jordan Gilroy
.txt
Txt Apple Icon
hyun
.txt
Txt Apple Icon
kris
.txt
Txt Apple Icon
Syed Irfan
.txt
Txt Apple Icon
ramyar atlasi
.txt
Txt Apple Icon
Muhammad Ashar
.txt
Txt Apple Icon
:DD
.txt
Txt Apple Icon
test
.txt
Txt Apple Icon
Filip
.txt
Txt Apple Icon
Arinbjørn
.txt
Txt Apple Icon
Janarthanan
.txt
Txt Apple Icon
Jane Smith
.txt
Txt Apple Icon
Daniel Apro
.txt
Txt Apple Icon
Allonelabs
.txt
Txt Apple Icon
nicola romei
.txt
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
video-demo.txt
UPCOMING — JULY 2026
Open Beta Release
Everyone in. Let's build (and debug) together.
UPCOMING JULY 2026
Founders Alpha Release
For the second phase of testing, Beta is open to all subscribers with a founders plan.
CURRENTLY
Invites are out for the Closed Beta.
We're testing basic functionality and AI Integration atm.
\ No newline at end of file diff --git a/backbase/ssscript.app/index.html.orig b/backbase/ssscript.app/index.html.orig deleted file mode 100644 index 133bb4b..0000000 --- a/backbase/ssscript.app/index.html.orig +++ /dev/null @@ -1,122 +0,0 @@ -Ssscript™ — Your Webflow AI Launchpad - - - - -
- -

Your Webflow AI Toolkit

Multiple agents on your Webflow project, from the Designer to Custom Code.

CompleteAgentic Control

Integrated with Webflow MCP, multi agent mode allows you to work on multiple instances in parallel.

ComponentLibrary

Build with AI Agents in mind, diverse component setups that provide the backbone, while design the style and prompt advanced functionality.

Deployment Pipeline

One click deploy, continuous pipeline, instant rollback, and fast CDN delivery.
Ssscript App logo
Beta release July 2026

Get early access

All in one Custom Code, MCP, Ai launchpad for Webflow.

You're In, thanks.

We'll be in touch soon.

Apply for Beta?

Or get Early founder's access

Get Founder Now 350€
200 Spots Max

Nope :(

Something went wrong.
Try again (later maybe)?

Privacy PolicyCookie Policy
© — All Right Reserved
2026
video-demo.mp4

All in oneApp.

The swiss-army knife for AI Agent in your Webflow project.
Contextual Awareness
Connect to the MCP to give the Agents the full context on your build.
Agent Swarms
Use multiple agents in parallel to add custom code, animations, and functionality.
Development Setup
Leverage fast Bun based builds, and live reload of your custom code.
One-click Deploy
Click and deploy your AI written custom code to make it available to all users visiting your website.

AgenticComponentLibrary.

Agent ready component library. One click add (via the Ssscript Webflow app) ready to customise.

AI Mode Switch

New Project Flow

AI Dock Mode

Account

AI Code Editing

AI Dev Server

Webflow MCP

Publishing

OneclickAdd.

With the Ssscript Webflow Extension.
Component Awareness
Use multiple agents in parallel to add custom code, animations, and functionality.
Faster Starters
Leverage fast Bun based builds, and live reload of your custom code.

Get abetterMCP.

Fully re-engineered faster MCP server.
Webflow Awareness
Use multiple agents in parallel to add custom code, animations, and functionality.

FlexibleAI Modes.

Different modes and models for different tasks.

AI Mode Switch

New Project Flow

AI Dock Mode

Account

AI Code Editing

AI Dev Server

Webflow MCP

Publishing

FrequentlyAskedQuestions

Detailed overview of features, functionality and inner workings.
FAQs
Federico
Does it impact performance?
Federico
Where are my files hosted?
Federico
Help! I pushed the wrong files!
Federico
What's the Webflow AI Agent?
Federico
What is the custom knowledge base?
Federico
How do I use it with Webflow?
Federico
What AIs are available?
Federico
How does it work?
Federico
How does publishing work?
Federico
Does it work with the MCP?
Federico
Reply-To
Does it impact performance?

As every custom code addition does: the overhead is just the one added by the code itself.

Everything is also bundled, minified and compressed, to have the least impact on the project, avoiding loading external libraries and increase the number of CDN based scripts.

Sent from my iPhone
Federico
Reply-To
Where are my files hosted?

After the build step, all bundled files are uploaded to Cloudflare R2 and served through a CDN link on ssscript.dev domain, a dedicated CDN for this project, for the fastest, Webflow compatible result.

Sent from my iPhone
Federico
Reply-To
Help! I pushed the wrong files!

In the deploy panel there's the option for an instant rollback.

Hit that, and you'll get the previous deployment working right away, fix locally, and push again.

Sent from my iPhone
Federico
Reply-To
What's the Webflow AI Agent?

Other than @plan, @build and @explore default Agent modes, we're working on a @webflow mode, made specifically of webflow knowlege, how to interact with the project and how to be effective in it.

Sent from my iPhone
Federico
Reply-To
What is the custom knowledge base?

Built on top of years writing custom code in webflow for animation.

WebGl, Threejs, GSAP and custom functionality, we collected best practices, build pipelines, and a module based systems to ensure everything works in unison.

A custom component library is also available for you to pick from, add to your project, and ask the AI to modify to fit your needs.

Sent from my iPhone
Federico
Reply-To
How do I use it with Webflow?

When running the Ssscript™, there's a custom Embed tab.

Depending on your needs, you can get page based scripts, or a unique app.js for the entirety of the project.

The generated link already contains both a deployed version, that'll follow your deploy url, and a local version, allowing you to work on you to preview your code without disturbing other people visiting your website.

Sent from my iPhone
Federico
Reply-To
What AIs are available?

We're using all major models available, from OpenAI to Claude to Gemini.

The model orchestrates automatically based on the request and needs, and you can switch to specific models by selecting them in a toggle.

Sent from my iPhone
Federico
Reply-To
How does it work?

When running, Ssscript™ is doing 2 things in parallel.

Running a local Development environment, based on Bun, that keeps javascript and typescript files in sync, provides Hot Module Reload (HMR), and keeps a webhook active to automatically refresh your website when changes are made.

At the same time, an ai agent orchestrator is running, accessing agents and processing your requests, changing code, checking the build health, and modifying the Webflow project when needed.

Sent from my iPhone
Federico
Reply-To
How does publishing work?

It's a multi step project. First, we use Bun to build, compress, minify and set up the project and libraries used.

Then we add to our CDN: ssscript.dev/{USERNAME}/{PROJECT-NAME}. The link already contains the correct structure, so while you keep seeing the local version of the files, everyone else get the right script served instead.

Sent from my iPhone
Federico
Reply-To
Does it work with the MCP?

It's built to work with the Webflow MCP natively.

Connect project, set authorization, and the AI Agents have now access to the Webflow build. Connect the App in the webflow Designer to also allow for Designer access, so the agents can update content, create elements, change styles and CSS, and to give the custom code full awareness of the Webflow project.

Sent from my iPhone

Connect.Prompt.Ship.

All in one development to production pipeline.
12-click total setup, from app download to have it running in your project.
Join Waitlist
Pricing

Get Codeto No-Code,with AI.

App subscriptions with
inlcuded usage in every plan.
Token based pricing for overages.
200 Founder spots with locked price for the first year.
Pricing.app

Beta

Free
1 Month

Founder

310
/ Yearly, forever
50% Discount

Basic

20
/ Month

Advanced

50
/ Month
Dropping
Dropping
Dropping
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Token Capacity
Dropping
Token Capacity
Token Capacity
Project Workspace
Total Availability
Expansion (20M)
Expansion (10M)
Reasoning Depth
Core Intelligence
Project Workspace
Core Intelligence
Reasoning Depth
Expansion (10M)
Expansion (20M)
Total Availability
June 2026
June 2026
June 2026
June 2026
Plan Credits
Unlimited
40,000 Included
12,000 Included
40,000 Included
Project Workspace
Unlimited
Unlimited
10 Projects
Unlimited
Core Intelligence
All Models
All fast
All fast
All fast
Reasoning Depth
Full
Full
Limited
Full
Expansion SM 10€
Unlimited Refresh
+ 10,000 Credits
+ 8,000 Credits
+ 10,000 Credits
Expansion MD 20€
Unlimited Refresh
+ 26,000 Credits
+ 20,000 Credits
+ 26,000 Credits
Total Availability
40 testers
200 Spots
--
--
Apply for Beta
Get Founder Now
(*) Stuffs might change as testing progresses, though I'll do my best to honour what's here now.
Enterprise BYOK plans available from September 2026.
One click publish.png
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
One click publish.png
Complete code editor.webp
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
Complete code editor.webp
AI Dock Mode.jpg
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
AI Dock Mode.jpg
Deep Webflow connection.webp
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
Deep Webflow connection.webp
Install, setup and run.jpg
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
Install, setup and run.jpg
Pricing

Get Codeto No-Code,with AI.

App subscriptions with
inlcuded usage in every plan.
Token based pricing for overages.
200 Founder spots with locked price for the first year.
Ssscript App logo
Beta release July 2026

Get early access

All in one Custom Code, MCP, AI launchpad for Webflow.

You're In, thanks.

We'll be in touch soon.

Apply for Beta?
Privacy PolicyCookie Policy
© — All Right Reserved
2026
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
fff
fff
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Ergtrr
Ggg
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Paul
just found your website, looks great ! -
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
s
s
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
rkxkr
i d know but yeah
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Ali Awan
Please let me check this out!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
rox del toro
GIMME
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Flavio
Hello!!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Daniel Clydesdale
We've worked in Webflow since 2016 and use it exclusively. We're also implementing AI into our workflows and I'm very interested in your offering here. Good luck with the launch!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Carter Ogunsola
Just a PSA for all you other devs.. haha I found out about this very early on. One of the favorites ykyk.
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Marin Trajkovski
Hi can i get early access please i wanna test the ai i need it so much i will really appreciate it
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Arul
interesting. Would love to know more
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Jeremy
Wooooooaaahhh!! - -Please let me into the beta!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Safin
I would love to try out this product. Seems very interesting
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Ilja van Eck
Am I the first founder member now? Take my money Fed, make this happen <3
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Jordan Gilroy
I'm your biggest fan
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
hyun
hello
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
kris
testingggg
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Syed Irfan
Interested
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
ramyar atlasi
Apm pflege schule Düsseldorf
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Muhammad Ashar
vv
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
:DD
ka tu nx
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
test
test
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Filip
I know Fed!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Arinbjørn
Let me join!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Janarthanan
waiting
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Jane Smith
I would love early access to this product!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Daniel Apro
Whatup homie, the site is 🔥
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
Allonelabs
Hey, we really like your design , cheers!
Typed text on a white page with a folded top-right corner, featuring an inspirational passage about 'the crazy ones' who challenge norms, create, inspire, and push humanity forward.
nicola romei
"Goat" refers to the horned, domesticated mammal (Capra aegagrus hircus) known for agility. As a popular acronym, G.O.A.T. means "Greatest of All Time
Txt Apple Icon
fff
.txt
Txt Apple Icon
Ergtrr
.txt
Txt Apple Icon
Paul
.txt
Txt Apple Icon
s
.txt
Txt Apple Icon
rkxkr
.txt
Txt Apple Icon
Ali Awan
.txt
Txt Apple Icon
rox del toro
.txt
Txt Apple Icon
Flavio
.txt
Txt Apple Icon
Daniel Clydesdale
.txt
Txt Apple Icon
Carter Ogunsola
.txt
Txt Apple Icon
Marin Trajkovski
.txt
Txt Apple Icon
Arul
.txt
Txt Apple Icon
Jeremy
.txt
Txt Apple Icon
Safin
.txt
Txt Apple Icon
Ilja van Eck
.txt
Txt Apple Icon
Jordan Gilroy
.txt
Txt Apple Icon
hyun
.txt
Txt Apple Icon
kris
.txt
Txt Apple Icon
Syed Irfan
.txt
Txt Apple Icon
ramyar atlasi
.txt
Txt Apple Icon
Muhammad Ashar
.txt
Txt Apple Icon
:DD
.txt
Txt Apple Icon
test
.txt
Txt Apple Icon
Filip
.txt
Txt Apple Icon
Arinbjørn
.txt
Txt Apple Icon
Janarthanan
.txt
Txt Apple Icon
Jane Smith
.txt
Txt Apple Icon
Daniel Apro
.txt
Txt Apple Icon
Allonelabs
.txt
Txt Apple Icon
nicola romei
.txt
Icon of a MOV video file featuring the QuickTime logo on a white document with a folded corner.
video-demo.txt
UPCOMING — JULY 2026
Open Beta Release
Everyone in. Let's build (and debug) together.
UPCOMING JULY 2026
Founders Alpha Release
For the second phase of testing, Beta is open to all subscribers with a founders plan.
CURRENTLY
Invites are out for the Closed Beta.
We're testing basic functionality and AI Integration atm.
\ No newline at end of file diff --git a/beta-apply.html b/beta-apply.html index 11d7acb..397a9f2 100644 --- a/beta-apply.html +++ b/beta-apply.html @@ -1,70 +1,19 @@ -NODE.DC — ИИ-платформа для Webflow - - - - - -
- -
Логотип NODE.DC
Бета-релиз: май 2026

Попасть в бету

Подавайте заявку, если готовы действительно тестировать и давать обратную связь.

Спасибо!

Мы свяжемся, если ваш профиль подойдёт для тестирования.

Хотите получить ранний доступ и повлиять на разработку, зафиксировав годовой Advanced-доступ со скидкой 50% навсегда?
Оформить Founder-доступ 350€

Не получилось

Что-то пошло не так.
Попробуйте ещё раз чуть позже.

Ваш Webflow ИИ-инструменты

Несколько агентов для проекта Webflow: от Designer до кастомного кода.

Влияйте наранние решения

И активно участвуйте в формировании дорожной карты продукта.

Прямой доступк приложению.

В статусе раннего тестировщика. Безлимитные кредиты и токены, проекты без ограничений.

Льготнаярегистрация.

на старте запуска.
демо-видео.mp4

Что входит вбету.

Вы будете активное участие на ранних этапах разработки приложения, влияя на развитие и дальнейшее направление продукта.
Что мы ожидаем?
Активное участие. Тестовые сценарии, а ещё лучше — применение в реальном продакшене.
Что вы получите?
Мы будем рядом на всём пути. Постоянная коммуникация, исправление ошибок и персональное сопровождение.
Где?
Будет общий закрытый Discord-канал, с другими бета-тестировщиками (~40 человек).
Что вы получаете:
приоритет, ранний доступ со скидкой к тарифу Founders.
\ No newline at end of file + + + + + + + NODE.DC - заявка + + + + + + +
+

NODE.DC

+

Перейти на главную NODE.DC

+
+ + diff --git a/content/block-templates/home.json b/content/block-templates/home.json index 77d1040..1a7be36 100644 --- a/content/block-templates/home.json +++ b/content/block-templates/home.json @@ -10,55 +10,55 @@ "id": "hero-waitlist", "type": "heroWaitlist", "template": "theses-request-demo.html", - "adminLabel": "ТЕЗИСЫ + ЗАПРОС ДЕМО", + "adminLabel": "ТЕЗИСЫ + ЗАПРОС DEMO", "anchor": "hero", "content": { "heading": { - "muted": "Ваш Webflow ", - "main": "ИИ-инструменты" + "muted": "Платформа", + "main": " для цифровых контуров предприятия " }, - "introHtml": "Несколько агентов для проекта Webflow: от Designer до кастомного кода.", + "introHtml": "Hub, Engine, Ops и прикладные модули в единой экосистеме управления, разработки и\nисполнения. ", "cards": [ { "muted": "Полный", "main": "агентный контроль", - "bodyHtml": "Интеграция с Webflow MCP, мультиагентный режим позволяет работать с несколькими экземплярами параллельно." + "bodyHtml": "Единый агентный слой с доступом к задачам, кодовой базе, данным, моделям и связанным сервисам." }, { - "muted": "Компонентная", - "main": "библиотека", - "bodyHtml": "Собирайте с учетом ИИ-агентов разные компонентные заготовки дают основу, а стиль и сложную функциональность можно дорабатывать промптами." + "muted": "Модульная ", + "main": "архитектура", + "bodyHtml": "Подключаемые приложения, роли, контуры доступа, рабочие пространства и специализированные инструменты. " }, { - "muted": "Деплой ", - "main": "пайплайн", - "bodyHtml": "Деплой в один клик, непрерывный пайплайн, мгновенный откат и быстрая доставка через CDN." + "muted": "Разработка ", + "main": "и запуск", + "bodyHtml": "Сборка workflow, интерфейсов и рабочих контуров с передачей результатов в операционный слой." } ], "form": { "messagePlaceholder": "Сообщение (необязательно)", "namePlaceholder": "Ваше имя*", "emailPlaceholder": "Email для регистрации*", - "submitLabel": "Встать в лист ожидания", + "submitLabel": "Подать заявку", "successHeading": "Заявка принята. Спасибо.", "successTextHtml": "Мы скоро свяжемся.
", - "betaCtaLabel": "Подать заявку в бету?", + "betaCtaLabel": "Подать заявку?", "founderIntroHtml": "Или оформить ранний Founder-доступ
", "founderCtaHtml": "Оформить Founder-доступ 350€", "spotsLabel": "До 200 мест", "failureHeading": "Не получилось", "failureTextHtml": "Что-то пошло не так.
Попробуйте ещё раз чуть позже.
" }, - "legalHtml": "Политика конфиденциальностиПолитика cookie
© — Все права защищены
2026", + "legalHtml": "DCTOUCH
© NODE.DC, 2026", "accessCard": { "enabled": true, - "iconSrc": "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", + "iconSrc": "./assets/uploads/images/Logo/dclogo_white_alpha-mqus5if2.png", "iconAlt": "Иконка NODE.DC", - "wordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "wordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "wordmarkAlt": "Логотип NODE.DC", - "release": "Бета-релиз: июль 2026", - "heading": "Ранний доступ", - "description": "Кастомный код, MCP и ИИ-агенты для Webflow в одном рабочем контуре." + "release": "Selfhost платформа ", + "heading": "Запросить DEMO", + "description": "NODE.DC - платформа для задач, процессов, данных, агентов и инженерных модулей." } }, "editableFields": [ @@ -313,50 +313,25 @@ "anchor": null, "content": { "heading": { - "muted": "Гибкие", - "main": "режимы ИИ." + "muted": "NODE.DC", + "main": "режимы / слои" }, - "introHtml": "Разные режимы и модели для разных задач.", + "introHtml": "Строится из базовых слоев и прикладных модулей: вход, разработка, операционная\nработа, агенты, интеграции и инженерные данные.", "sliderItems": [ { "enabled": true, - "videoSrc": "./assets/media/various-modes.mp4", - "title": "Переключение режимов ИИ" + "videoSrc": "./assets/uploads/media/ai-modes/ndc_hub_base-mqv6lm07.mp4", + "title": "HUB - слой витрин и доступов" }, { "enabled": true, - "videoSrc": "./assets/media/project-flow.mp4", - "title": "Создание нового проекта" + "videoSrc": "./assets/uploads/media/ai-modes/ndc_engine_base-mqv6lvyr.mp4", + "title": "ENGINE - среда разбаботки сервисов и автоматизаций" }, { "enabled": true, - "videoSrc": "./assets/media/ai-dock-mode.mp4", - "title": "ИИ-док" - }, - { - "enabled": true, - "videoSrc": "./assets/media/account.mp4", - "title": "Аккаунт" - }, - { - "enabled": true, - "videoSrc": "./assets/media/code-edits.mp4", - "title": "Редактирование кода с ИИ" - }, - { - "enabled": true, - "videoSrc": "./assets/media/dev-server.mp4", - "title": "Dev-сервер с ИИ" - }, - { - "enabled": true, - "videoSrc": "./assets/media/webflow-mcp.mp4", - "title": "Webflow MCP" - }, - { - "enabled": true, - "videoSrc": "./assets/media/publish-flow.mp4", - "title": "Публикация" + "videoSrc": "./assets/uploads/media/ai-modes/ndc_ops_blur-mqv6ss6k.mp4", + "title": "OPS - операционный / административный слой" } ], "scroll": { @@ -364,10 +339,10 @@ }, "bottomInfo": { "heading": { - "muted": "Гибкие", - "main": "режимы ИИ." + "muted": "Hub, ", + "main": "Engine, Ops." }, - "introHtml": "Разные режимы и модели для разных задач." + "introHtml": "Единая логика доступа, разработки и управления процессами внутри enterprise-контура. " } }, "editableFields": [ @@ -465,35 +440,35 @@ "id": "feature-video", "type": "featureVideo", "template": "project-video-first.html", - "adminLabel": "PROJECT VIDEO - FIRST", + "adminLabel": "HUB - PROJECT VIDEO - FIRST", "anchor": "features", "content": { - "windowTitle": "демо-видео.mp4", - "videoSrc": "./assets/media/publish-flow.mp4", + "windowTitle": "NDC_HUB.mp4", + "videoSrc": "./assets/uploads/media/ai-modes/ndc_hub_base-mqv6lm07.mp4", "heading": { - "muted": "Всё в одном", - "main": "приложение." + "muted": "HUB", + "main": "точка входа в платформу " }, - "introHtml": "Универсальный инструмент для ИИ-агентов в вашем Webflow-проекте.", + "introHtml": "Универсальный инструмент для ИИ-агентов в вашем NODE.DC-контуре.", "features": [ { - "eyebrow": "Контекст проекта", - "bodyHtml": "Подключитесь к MCP чтобы агенты получили полный контекст вашей сборки." + "eyebrow": "Каталог приложений", + "bodyHtml": "Доступные модули отображаются по роли, группе и контуру предприятия." }, { - "eyebrow": "Группы агентов", - "bodyHtml": "Используйте несколько агентов параллельно чтобы добавлять кастомный код, анимации и функциональность." + "eyebrow": "Рабочие пространства", + "bodyHtml": "Проекты, отделы и enterprise-контуры разделяются по правилам доступа." }, { - "eyebrow": "Среда разработки", - "bodyHtml": "Используйте быстрые Bun сборки и автообновление для вашего кастомного кода." + "eyebrow": "Администрирование", + "bodyHtml": "Пользователи, группы, роли и права управляются из единой административной зоны." }, { - "eyebrow": "Деплой в один клик", - "bodyHtml": "Нажмите и публикуйте кастомный код, написанный ИИ, чтобы он стал доступен всем посетителям сайта." + "eyebrow": "Сквозной доступ", + "bodyHtml": "Переход к Engine, Ops и прикладным модулям сохраняет общий контекст платформы." } ], - "videoHeightPx": 620 + "videoHeightPx": 700 }, "editableFields": [ { @@ -614,67 +589,42 @@ "id": "component-library", "type": "componentLibrary", "template": "project-video-detail.html", - "adminLabel": "PROJECT VIDEO - DETAIL", + "adminLabel": "HUB - PROJECT VIDEO - DETAIL", "anchor": null, "content": { "heading": { - "muted": "Агентная", - "middle": "Компонентная", - "main": "библиотека." + "muted": "Hub.", + "middle": " Контур", + "main": "доступа." }, - "introHtml": "Готовая к работе с агентами компонентная библиотека: добавление в один клик через приложение NODE.DC для Webflow и дальнейшая настройка под проект.", + "introHtml": "Централизованный запуск приложений, управление ролями, группами и доступом к каждому рабочему модулю.", "sliderItems": [ { - "videoSrc": "./assets/media/various-modes.mp4", - "title": "Переключение режимов ИИ", + "videoSrc": "./assets/uploads/media/component-library/hub_vitrina-mqv7yt7k.mov", + "title": "Каталог приложений", "enabled": true }, { - "videoSrc": "./assets/media/project-flow.mp4", - "title": "Создание нового проекта", + "videoSrc": "./assets/uploads/media/component-library/hub_audit-mqv7z4xo.mov", + "title": "Роли и контуры", "enabled": true }, { - "videoSrc": "./assets/media/ai-dock-mode.mp4", - "title": "ИИ-док", - "enabled": true - }, - { - "videoSrc": "./assets/media/account.mp4", - "title": "Аккаунт", - "enabled": true - }, - { - "videoSrc": "./assets/media/code-edits.mp4", - "title": "Редактирование кода с ИИ", - "enabled": true - }, - { - "videoSrc": "./assets/media/dev-server.mp4", - "title": "Dev-сервер с ИИ", - "enabled": true - }, - { - "videoSrc": "./assets/media/webflow-mcp.mp4", - "title": "Webflow MCP", - "enabled": true - }, - { - "videoSrc": "./assets/media/publish-flow.mp4", - "title": "Публикация", + "videoSrc": "./assets/uploads/media/component-library/hub_dostup-mqv7zakv.mov", + "title": "Группы и доступы", "enabled": true } ], "scroll": { - "speed": 0.55 + "speed": 0.2 }, "bottomInfo": { "heading": { - "muted": "Агентная", - "middle": "Компонентная", - "main": "библиотека." + "muted": "Единый", + "middle": " контур", + "main": "доступа." }, - "introHtml": "Готовая к работе с агентами компонентная библиотека: добавление в один клик через приложение NODE.DC для Webflow и дальнейшая настройка под проект." + "introHtml": "Администрирование\nНазначение ролей и управление пользователями по группам и подразделениям.\nEnterprise-контуры\nкоманд.\nРаздельные конфигурации доступа для инженерных, финансовых, юридических и закупочных\nТонкая настройка\nИндивидуальные права на отдельные приложения, функции и рабочие области." } }, "editableFields": [ @@ -786,7 +736,7 @@ "id": "faq", "type": "faqSection", "template": "faq.html", - "adminLabel": "Частые вопросы и ответы", + "adminLabel": "FAQ", "anchor": null, "content": { "heading": { @@ -795,76 +745,90 @@ "main": "и ответы" }, "introHtml": "Подробный обзор возможностей, логики работы и внутреннего устройства.", - "docsHref": "https://docs.ssscript.app/", - "docsLabel": "Полная документация", + "docsHref": "https://nodedc.dctouch.ru/", + "docsLabel": "Возможности ", "windowTitle": "FAQ", "faq": [ { "question": "Что входит в NODE.DC?", - "answerHtml": "

NODE.DC включает Hub для входа и управления доступами, Engine для разработки workflow и прикладной логики, Ops для операционной работы, сквозного ассистента и подключаемые модули: 1C Assistant, Tender, Digital Twin, Model Viewer / Engineering Core и отраслевые приложения.

" + "answerHtml": "

NODE.DC включает Hub для входа и управления доступами, Engine для разработки workflow и прикладной логики, Ops для операционной работы, сквозного ассистента и подключаемые модули: 1C Assistant, Tender, Digital Twin, Model Viewer / Engineering Core и отраслевые приложения.

", + "enabled": true }, { "question": "Зачем нужен Hub?", - "answerHtml": "

Hub выполняет роль лаунчера и административной точки входа. В нем отображается каталог доступных приложений, рабочие пространства, роли, группы пользователей и права доступа к модулям платформы.

" + "answerHtml": "

Hub выполняет роль лаунчера и административной точки входа. В нем отображается каталог доступных приложений, рабочие пространства, роли, группы пользователей и права доступа к модулям платформы.

", + "enabled": true }, { "question": "Как связаны Hub, Engine и Ops?", - "answerHtml": "

Hub отвечает за вход, роли и доступ к приложениям. Engine используется для сборки workflow, прикладной логики, интеграций и интерфейсов. Ops принимает задачи, отчеты, статусы, результаты работы модулей и действия агентов в операционный контур.

" + "answerHtml": "

Hub отвечает за вход, роли и доступ к приложениям. Engine используется для сборки workflow, прикладной логики, интеграций и интерфейсов. Ops принимает задачи, отчеты, статусы, результаты работы модулей и действия агентов в операционный контур.

", + "enabled": true }, { "question": "Что создается в Engine?", - "answerHtml": "

В Engine создаются workflow, интеграционные сценарии, обработчики данных, прикладная логика, интерфейсные связки и сервисные контуры. Сборка может выполняться вручную в нодовом редакторе или через ассистента по текстовому заданию.

" + "answerHtml": "

В Engine создаются workflow, интеграционные сценарии, обработчики данных, прикладная логика, интерфейсные связки и сервисные контуры. Сборка может выполняться вручную в нодовом редакторе или через ассистента по текстовому заданию.

", + "enabled": true }, { "question": "Что фиксируется в Ops?", - "answerHtml": "

В Ops фиксируются задачи, статусы, карточки, отчеты, согласования, рабочие материалы, результаты агентов и данные из подключенных модулей. Слой предназначен для контроля процессов и операционной работы.

" + "answerHtml": "

В Ops фиксируются задачи, статусы, карточки, отчеты, согласования, рабочие материалы, результаты агентов и данные из подключенных модулей. Слой предназначен для контроля процессов и операционной работы.

", + "enabled": true }, { "question": "Как работает сквозной ассистент?", - "answerHtml": "

Ассистент работает как единый интерфейс к приложениям и данным платформы. В рамках прав доступа ему доступны задачи, процессы, кодовая база, проектные материалы, отчеты, инженерные модели и результаты работы агентов. Ассистент может отвечать на вопросы, декомпозировать задачи, готовить материалы и инициировать действия в связанных слоях.

" + "answerHtml": "

Ассистент работает как единый интерфейс к приложениям и данным платформы. В рамках прав доступа ему доступны задачи, процессы, кодовая база, проектные материалы, отчеты, инженерные модели и результаты работы агентов. Ассистент может отвечать на вопросы, декомпозировать задачи, готовить материалы и инициировать действия в связанных слоях.

", + "enabled": true }, { "question": "Как работают прикладные модули?", - "answerHtml": "

Прикладные модули подключаются к ролям, задачам, данным, рабочим пространствам и ассистенту. Модуль закрывает не отдельный экран, а рабочий контур: входные данные, обработку, действия, отчеты, согласования и передачу результата в Ops.

" + "answerHtml": "

Прикладные модули подключаются к ролям, задачам, данным, рабочим пространствам и ассистенту. Модуль закрывает не отдельный экран, а рабочий контур: входные данные, обработку, действия, отчеты, согласования и передачу результата в Ops.

", + "enabled": true }, { "question": "Какие модули можно подключать?", - "answerHtml": "

Базовый набор включает Hub, Engine и Ops. Дополнительно подключаются 1C Assistant, Tender, Digital Twin, Model Viewer / Engineering Core, интеграционные сценарии, API-модули и специализированные приложения для подразделений.

" + "answerHtml": "

Базовый набор включает Hub, Engine и Ops. Дополнительно подключаются 1C Assistant, Tender, Digital Twin, Engineering Core, интеграционные сценарии, API-модули и специализированные приложения для подразделений.

", + "enabled": true }, { "question": "Поддерживаются ли инженерные форматы?", - "answerHtml": "

Для инженерных и производственных сценариев предусмотрена работа с цифровыми моделями и техническими материалами. Поддерживаются BIM, STEP, STL, 3DGS / Gaussian Splatting, LAS/LAZ-облака точек и другие форматы, связанные с задачами, версиями и проектным контекстом.

" + "answerHtml": "

Для инженерных и производственных сценариев предусмотрена работа с цифровыми моделями и техническими материалами. Поддерживаются BIM, STEP, STL, 3DGS / Gaussian Splatting, LAS/LAZ-облака точек и другие форматы, связанные с задачами, версиями и проектным контекстом.

", + "enabled": true }, { "question": "Как настраиваются роли и права доступа?", - "answerHtml": "

Права доступа задаются через Hub. Администратор может назначать роли, формировать группы, разделять контуры доступа по подразделениям и выдавать индивидуальные права на приложения, функции и рабочие области.

" + "answerHtml": "

Права доступа задаются через Hub. Администратор может назначать роли, формировать группы, разделять контуры доступа по подразделениям и выдавать индивидуальные права на приложения, функции и рабочие области.

", + "enabled": true }, { "question": "Можно ли подключать корпоративные системы?", - "answerHtml": "

NODE.DC рассчитан на подключение внешних сервисов, API, внутренних приложений, 1C, баз данных, файловых хранилищ и корпоративных систем. Интеграционные сценарии собираются в Engine и передают результаты в Ops, прикладные модули или пользовательские интерфейсы.

" + "answerHtml": "

NODE.DC рассчитан на подключение внешних сервисов, API, внутренних приложений, 1C, баз данных, файловых хранилищ и корпоративных систем. Интеграционные сценарии собираются в Engine и передают результаты в Ops, прикладные модули или пользовательские интерфейсы.

", + "enabled": true }, { "question": "Где размещается NODE.DC?", - "answerHtml": "

Доступны облачные, выделенные, гибридные и enterprise-варианты размещения. Итоговая конфигурация зависит от требований к безопасности, составу модулей, интеграциям и политике хранения данных.

" + "answerHtml": "

Доступны облачные, выделенные, гибридные и enterprise-варианты размещения. Итоговая конфигурация зависит от требований к безопасности, составу модулей, интеграциям и политике хранения данных.

", + "enabled": true }, { "question": "Как запускается пилотный контур?", - "answerHtml": "

Пилотный контур формируется по составу модулей, ролей, интеграций и рабочих сценариев. Обычно подключается Hub, настраиваются базовые роли, выбирается один или несколько процессов, после чего собираются workflow, рабочие представления и отчеты.

" + "answerHtml": "

Пилотный контур формируется по составу модулей, ролей, интеграций и рабочих сценариев. Обычно подключается Hub, настраиваются базовые роли, выбирается один или несколько процессов, после чего собираются workflow, рабочие представления и отчеты.

", + "enabled": true }, { "question": "Чем NODE.DC отличается от набора отдельных приложений?", - "answerHtml": "

NODE.DC связывает приложения в единую платформенную архитектуру: общий доступ, роли, сквозной ассистент, связанные задачи, данные, workflow и операционный слой. Это снижает разрыв между разработкой, управлением и исполнением процессов.

" + "answerHtml": "

NODE.DC связывает приложения в единую платформенную архитектуру: общий доступ, роли, сквозной ассистент, связанные задачи, данные, workflow и операционный слой. Это снижает разрыв между разработкой, управлением и исполнением процессов.

", + "enabled": true } ], "sender": { - "avatarSrc": "./assets/webflow/images/69d2db06ed4081cf9bdacdc4_federic0.avif", + "avatarSrc": "./assets/uploads/images/faq/2025-05-14-23.46.35-mquyvzbg.jpg", "avatarAlt": "Аватар NODE.DC", "name": "NODE.DC", "replyLabel": "Ответить", - "sentLabel": "Отправлено с iPhone" + "sentLabel": "Отправлено с NODE.DC MANUAL CORE" }, "scroll": { - "speed": 0.55 + "speed": 0.7 } }, "editableFields": [ @@ -1006,19 +970,19 @@ "id": "publish-cta", "type": "publishCta", "template": "publish-cta.html", - "adminLabel": "Финальный CTA перед тарифами", + "adminLabel": "Финальный CTA", "anchor": "hero", "content": { "cta": { "heading": { "muted": "Подключить.", - "middle": "Поставить задачу.", - "main": "Опубликовать." + "middle": "Собрать контур. ", + "main": "Запустить." }, - "intro": "Единый путь от разработки до продакшена.", - "detailHtml": "Настройка примерно в 12 кликов: от скачивания приложения до запуска в проекте.", + "intro": "Единый путь от доступа к модулю до рабочего контура предприятия. Hub для входа, Engine для сборки, Ops для управления.", + "detailHtml": "Модульный доступ, документация и рабочие пространства.\nПодключение прикладных модулей и ролей по контурам.\nЗакрытый инвайт для пилотных внедрений.", "href": "index.html#hero", - "buttonLabel": "Встать в лист ожидания" + "buttonLabel": "Запросить инвайт " } }, "editableFields": [ @@ -1641,7 +1605,7 @@ } } ], - "enabled": true + "enabled": false } }, { @@ -1657,16 +1621,16 @@ "template": "screenshot-cards.html", "adminLabel": "Карточки скриншотов", "anchor": null, - "enabled": true, + "enabled": false, "content": { "galleryItems": [ { "id": "one-click-publish-png", "windowTitle": "публикация-в-один-клик.png", - "imageSrc": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif", - "imageSrcset": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", + "imageSrc": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif", + "imageSrcset": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "публикация-в-один-клик.png", "enabled": true @@ -1674,10 +1638,10 @@ { "id": "complete-code-editor-webp", "windowTitle": "полноценный-редактор-кода.webp", - "imageSrc": "./assets/webflow/images/69d3fba72116e87a8d145059_Frame%203174.avif", - "imageSrcset": "./assets/webflow/images/69d3fba72116e87a8d145059_Frame%203174-p-500.avif 500w, ./assets/webflow/images/69d3fba72116e87a8d145059_Frame%203174.avif 1200w", + "imageSrc": "./assets/site/images/69d3fba72116e87a8d145059_Frame%203174.avif", + "imageSrcset": "./assets/site/images/69d3fba72116e87a8d145059_Frame%203174-p-500.avif 500w, ./assets/site/images/69d3fba72116e87a8d145059_Frame%203174.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "полноценный-редактор-кода.webp", "enabled": true @@ -1685,32 +1649,32 @@ { "id": "ai-dock-mode-jpg", "windowTitle": "ИИ-док-режим.jpg", - "imageSrc": "./assets/webflow/images/69d3fac0d22182f930e32ec6_Frame%203175.avif", - "imageSrcset": "./assets/webflow/images/69d3fac0d22182f930e32ec6_Frame%203175-p-500.avif 500w, ./assets/webflow/images/69d3fac0d22182f930e32ec6_Frame%203175.avif 1200w", + "imageSrc": "./assets/site/images/69d3fac0d22182f930e32ec6_Frame%203175.avif", + "imageSrcset": "./assets/site/images/69d3fac0d22182f930e32ec6_Frame%203175-p-500.avif 500w, ./assets/site/images/69d3fac0d22182f930e32ec6_Frame%203175.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "ИИ-док-режим.jpg", "enabled": true }, { - "id": "deep-webflow-connection-webp", - "windowTitle": "глубокая-интеграция-webflow.webp", - "imageSrc": "./assets/webflow/images/69d3dc83a417451438caec72_Frame%203173.avif", - "imageSrcset": "./assets/webflow/images/69d3dc83a417451438caec72_Frame%203173-p-500.avif 500w, ./assets/webflow/images/69d3dc83a417451438caec72_Frame%203173.avif 1200w", + "id": "platform-integration-webp", + "windowTitle": "глубокая-интеграция-platform-map.webp", + "imageSrc": "./assets/site/images/69d3dc83a417451438caec72_Frame%203173.avif", + "imageSrcset": "./assets/site/images/69d3dc83a417451438caec72_Frame%203173-p-500.avif 500w, ./assets/site/images/69d3dc83a417451438caec72_Frame%203173.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", - "folderLabel": "глубокая-интеграция-webflow.webp", + "folderLabel": "глубокая-интеграция-platform-map.webp", "enabled": true }, { "id": "install-setup-and-run", "windowTitle": "установка-настройка-запуск.jpg", - "imageSrc": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif", - "imageSrcset": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", + "imageSrc": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif", + "imageSrcset": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "установка-настройка-запуск.jpg", "enabled": true @@ -1777,10 +1741,10 @@ "itemTemplate": { "id": "new-media-item", "windowTitle": "новый-файл.png", - "imageSrc": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif", - "imageSrcset": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", + "imageSrc": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif", + "imageSrcset": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "новый-файл.png", "enabled": true @@ -1808,10 +1772,10 @@ "messagePlaceholder": "Сообщение (необязательно)", "namePlaceholder": "Ваше имя*", "emailPlaceholder": "Email для регистрации*", - "submitLabel": "Встать в лист ожидания", + "submitLabel": "Подать заявку", "successHeading": "Заявка принята. Спасибо.", "successTextHtml": "Мы скоро свяжемся.
", - "betaCtaLabel": "Подать заявку в бету?", + "betaCtaLabel": "Подать заявку?", "founderIntroHtml": "Или оформить ранний Founder-доступ
", "founderCtaHtml": "Оформить Founder-доступ 350€", "spotsLabel": "До 200 мест", @@ -1823,8 +1787,8 @@ "id": "hub-access-1782000000000", "name": "Hub Access", "bodyHtml": "

Единая точка входа: каталог приложений, рабочие пространства, роли, группы и права доступа.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1832,8 +1796,8 @@ "id": "engine-workflows-1782000000001", "name": "Engine Workflows", "bodyHtml": "

Нодовые workflow, обработчики данных, интеграционная логика и сборка прикладных контуров.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1841,8 +1805,8 @@ "id": "ops-cards-1782000000002", "name": "Ops Cards", "bodyHtml": "

Операционные карточки, статусы, согласования, отчеты агентов и результаты выполнения задач.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1850,8 +1814,8 @@ "id": "1c-assistant-1782000000003", "name": "1C Assistant", "bodyHtml": "

Связка с 1C, разбор документов, поиск данных, сценарии согласований и передача результата в Ops.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1859,8 +1823,8 @@ "id": "tender-agent-1782000000004", "name": "Tender Agent", "bodyHtml": "

Тендерные подборки, проверка требований, документы, дедлайны и агентные отчеты по процедурам.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1868,8 +1832,8 @@ "id": "digital-twin-1782000000005", "name": "Digital Twin", "bodyHtml": "

Цифровые модели объектов, версии, проектный контекст, инженерные данные и связанные рабочие процессы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1877,8 +1841,8 @@ "id": "model-viewer-1782000000006", "name": "Model Viewer", "bodyHtml": "

Просмотр BIM, STEP, STL, 3DGS, облаков точек и инженерных материалов внутри единого контура.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1886,8 +1850,8 @@ "id": "engineering-core-1782000000007", "name": "Engineering Core", "bodyHtml": "

Обработка технических форматов, связка моделей с задачами, версиями, отчетами и согласованиями.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1895,8 +1859,8 @@ "id": "mcp-gateway-1782000000008", "name": "MCP Gateway", "bodyHtml": "

Контекстный шлюз для агентов: проектные данные, инструменты, кодовая база и внешние сервисы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1904,8 +1868,8 @@ "id": "api-contracts-1782000000009", "name": "API Contracts", "bodyHtml": "

Контракты API, схемы данных, webhooks, события, интеграции и контроль совместимости между модулями.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1913,8 +1877,8 @@ "id": "kubernetes-1782000000010", "name": "Kubernetes", "bodyHtml": "

Оркестрация сервисов, изоляция окружений, scaling policies, probes, secrets и управляемый rollout.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1922,8 +1886,8 @@ "id": "cloudflare-edge-1782000000011", "name": "Cloudflare Edge", "bodyHtml": "

CDN, WAF, R2-хранилище, edge routing, cache policies и защита публичного периметра.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1931,8 +1895,8 @@ "id": "zero-trust-1782000000012", "name": "Zero Trust", "bodyHtml": "

Доступ по принципу least privilege: SSO, MFA, device posture, audit trail и сегментация контуров.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1940,8 +1904,8 @@ "id": "security-matrix-1782000000013", "name": "Security Matrix", "bodyHtml": "

Ролевая матрица, группы, политики доступа, ограничения функций и контроль административных действий.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1949,8 +1913,8 @@ "id": "rbac-policies-1782000000014", "name": "RBAC Policies", "bodyHtml": "

Права на приложения, рабочие области, действия агентов, документы, отчеты и инженерные данные.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1958,8 +1922,8 @@ "id": "audit-log-1782000000015", "name": "Audit Log", "bodyHtml": "

Журнал действий пользователей, агентов и сервисов: изменения, статусы, запросы, публикации и доступы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1967,8 +1931,8 @@ "id": "secrets-vault-1782000000016", "name": "Secrets Vault", "bodyHtml": "

Хранение токенов, ключей API, webhook-секретов и конфигураций интеграций в защищенном контуре.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1976,8 +1940,8 @@ "id": "postgres-cluster-1782000000017", "name": "Postgres Cluster", "bodyHtml": "

Основная транзакционная база для проектов, ролей, задач, статусов, событий и конфигураций платформы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1985,8 +1949,8 @@ "id": "redis-queue-1782000000018", "name": "Redis Queue", "bodyHtml": "

Очереди фоновых задач, статусы выполнения, debounce событий, кэширование и быстрые агентные операции.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -1994,8 +1958,8 @@ "id": "vector-index-1782000000019", "name": "Vector Index", "bodyHtml": "

Индексация проектных материалов, документации, отчетов и контекста для ассистента и поиска.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2003,8 +1967,8 @@ "id": "local-models-1782000000020", "name": "Local Models", "bodyHtml": "

Контур локальных моделей для приватных сценариев, инженерных данных и корпоративных ограничений.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2012,8 +1976,8 @@ "id": "model-routing-1782000000021", "name": "Model Routing", "bodyHtml": "

Маршрутизация задач между облачными и локальными моделями по типу запроса, правам и стоимости.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2021,8 +1985,8 @@ "id": "agent-runtime-1782000000022", "name": "Agent Runtime", "bodyHtml": "

Запуск ассистентов, выполнение действий, контроль инструментов, журналирование и передача результата в Ops.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2030,8 +1994,8 @@ "id": "observability-1782000000023", "name": "Observability", "bodyHtml": "

Метрики, логи, трассировка, health checks, алерты и диагностика сервисов платформы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2039,8 +2003,8 @@ "id": "backups-1782000000024", "name": "Backups", "bodyHtml": "

Резервные копии данных, конфигураций, файлов, моделей, журналов и сценариев восстановления.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2048,8 +2012,8 @@ "id": "ci-cd-1782000000025", "name": "CI CD", "bodyHtml": "

Сборка, проверки, preview-окружения, controlled rollout, rollback и публикация клиентских модулей.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2057,8 +2021,8 @@ "id": "terraform-1782000000026", "name": "Terraform", "bodyHtml": "

Описание инфраструктуры кодом: окружения, сети, хранилища, политики, сервисы и переменные.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2066,8 +2030,8 @@ "id": "object-storage-1782000000027", "name": "Object Storage", "bodyHtml": "

Хранилище файлов, изображений, моделей, отчетов, txt-материалов и артефактов рабочих процессов.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2075,8 +2039,8 @@ "id": "bim-pipeline-1782000000028", "name": "BIM Pipeline", "bodyHtml": "

Загрузка BIM-моделей, версии, разметка, связи с задачами и публикация в рабочие пространства.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2084,8 +2048,8 @@ "id": "step-import-1782000000029", "name": "STEP Import", "bodyHtml": "

Импорт STEP-моделей, технические материалы, карточки проверки и привязка к инженерным задачам.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2093,8 +2057,8 @@ "id": "stl-review-1782000000030", "name": "STL Review", "bodyHtml": "

Проверка STL-геометрии, заметки, версии, визуальный контроль и подготовка производственных материалов.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2102,8 +2066,8 @@ "id": "3dgs-assets-1782000000031", "name": "3DGS Assets", "bodyHtml": "

Gaussian Splatting сцены, визуальные реконструкции объектов и связь с проектным контекстом.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2111,8 +2075,8 @@ "id": "las-laz-clouds-1782000000032", "name": "LAS LAZ Clouds", "bodyHtml": "

Облака точек, съемка, координатные данные, версии и инженерная привязка к задачам.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2120,8 +2084,8 @@ "id": "webhooks-1782000000033", "name": "Webhooks", "bodyHtml": "

Событийные сценарии: входящие запросы, уведомления, автоматические действия и передача статусов.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2129,8 +2093,8 @@ "id": "docs-portal-1782000000034", "name": "Docs Portal", "bodyHtml": "

Документация, регламенты, инструкции, технические заметки и материалы для команд внедрения.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2138,25 +2102,25 @@ "id": "stack-map-1782000000035", "name": "Stack Map", "bodyHtml": "

Карта платформенного стека: Hub, Engine, Ops, агенты, данные, интеграции, безопасность и инфраструктура.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true } ], "accessCard": { "enabled": true, - "iconSrc": "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", + "iconSrc": "./assets/uploads/images/hero-waitlist/dclogo_white_alpha-mquue8ar.png", "iconAlt": "Иконка NODE.DC", - "wordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "wordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "wordmarkAlt": "Логотип NODE.DC", - "release": "Бета-релиз: июль 2026", - "heading": "Ранний доступ", - "description": "Кастомный код, MCP и ИИ-агенты для Webflow в одном рабочем контуре." + "release": "Selfhost платформа ", + "heading": "Запросить DEMO", + "description": "NODE.DC - платформа для задач, процессов, данных, агентов и инженерных модулей." }, "legal": { "enabled": true, - "html": "Политика конфиденциальностиПолитика cookie
© — Все права защищены
2026" + "html": "DCTOUCH
© NODE.DC, 2026" }, "filesEnabled": true }, @@ -2211,8 +2175,8 @@ "id": "new-file", "name": "Новый файл", "bodyHtml": "Текст файла", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла" } } @@ -2232,11 +2196,11 @@ "template": "demo-video-folder.html", "adminLabel": "Иконка демо-видео в доке", "anchor": null, - "enabled": true, + "enabled": false, "content": { "target": "demo-video", "to": "features", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/uploads/media/ai-modes/ndc_hub_base-mqv6lm07.mp4", "iconAlt": "Иконка MOV-файла.", "label": "демо-видео.txt" }, @@ -2295,73 +2259,91 @@ "enabled": true, "content": { "footer": { - "appIconSrc": "./assets/webflow/images/69ad964d951f9d17cc5a919e_logo-app.svg", + "appIconSrc": "./assets/uploads/images/Logo/dclogo_white_alpha-mqus5if2.png", "appIconAlt": "Иконка NODE.DC", - "wordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "wordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "wordmarkAlt": "Логотип NODE.DC", - "copyrightHtml": "© 2026 —  NODE.DC", + "copyrightHtml": "© 2026 — NODE.DC", "navTitle": "Навигация", "navLinks": [ { "label": "Документация", - "href": "https://docs.ssscript.app/", - "target": "_blank", - "enabled": true + "href": "https://nodedc.dctouch.ru/", + "target": "", + "enabled": false, + "linkMode": "href", + "linkTarget": "_blank" }, { "label": "Лист ожидания", - "href": "index.html#waitlist", - "target": "", - "enabled": true + "href": "", + "target": "index.html#waitlist", + "enabled": false, + "linkMode": "target", + "linkTarget": "" }, { "label": "Тарифы", - "href": "index.html#", - "target": "", - "enabled": true + "href": "", + "target": "index.html#", + "enabled": false, + "linkMode": "target", + "linkTarget": "" }, { "label": "Возможности", - "href": "index.html#features", - "target": "", - "enabled": true + "href": "https://nodedc.dctouch.ru/", + "target": "index.html#features", + "enabled": true, + "linkMode": "href", + "linkTarget": "" }, { "label": "Демо", - "href": "index.html#features", - "target": "", - "enabled": true + "href": "", + "target": "index.html#features", + "enabled": true, + "linkMode": "target", + "linkTarget": "" } ], "contactTitle": "Контакты", "contactLinks": [ { - "label": "Twitter", - "href": "https://federic.ooo/s/twitter", - "target": "_blank", - "enabled": true + "label": "DCTOUCH", + "href": "https://www.dctouch.ru/", + "target": "", + "enabled": true, + "linkMode": "href", + "linkTarget": "_blank" }, { - "label": "Instagram", - "href": "https://federic.ooo/s/instagram", - "target": "_blank", - "enabled": true + "label": "Telegram", + "href": "https://t.me/dcconstructions", + "target": "", + "enabled": true, + "linkMode": "href", + "linkTarget": "_blank" }, { "label": "GitHub", - "href": "https://www.federic.ooo/s/github", - "target": "_blank", - "enabled": true + "href": "https://github.com/dcconstructions", + "target": "", + "enabled": false, + "linkMode": "href", + "linkTarget": "_blank" }, { "label": "Портфолио", - "href": "https://federic.ooo/", - "target": "_blank", - "enabled": true + "href": "https://www.dctouch.ru/", + "target": "", + "enabled": false, + "linkMode": "href", + "linkTarget": "_blank" } ], - "policyHtml": "Политика конфиденциальностиУсловия использования", - "policyEnabled": true + "policyHtml": "DCTOUCH", + "policyEnabled": false } }, "editableFields": [ diff --git a/content/pages/home.json b/content/pages/home.json index f696377..53912aa 100644 --- a/content/pages/home.json +++ b/content/pages/home.json @@ -89,7 +89,7 @@ "targetId": "app-data", "iconSrc": "./assets/uploads/images/static-elements/icon_hub-mqwd0sn0.png", "iconAlt": "Иконка NODE.DC", - "className": "dock-icon ssscript", + "className": "dock-icon nodedc-app", "iconClass": "logo", "dividerBefore": false }, @@ -101,7 +101,7 @@ "targetId": "", "iconSrc": "./assets/uploads/images/static-elements/icon_engine-mqwd2fut.png", "iconAlt": "Иконка приложения", - "className": "dock-icon ssscript", + "className": "dock-icon nodedc-app", "iconClass": "logo", "dividerBefore": false }, @@ -113,7 +113,7 @@ "targetId": "", "iconSrc": "./assets/uploads/images/static-elements/icon_ops-mqwdtmpk.png", "iconAlt": "Иконка приложения", - "className": "dock-icon ssscript", + "className": "dock-icon nodedc-app", "iconClass": "logo", "dividerBefore": false }, @@ -125,17 +125,17 @@ "targetId": "", "iconSrc": "./assets/uploads/images/static-elements/icon_bim-mqwedhun.png", "iconAlt": "Иконка приложения", - "className": "dock-icon ssscript", + "className": "dock-icon nodedc-app", "iconClass": "logo", "dividerBefore": false }, { "enabled": true, "title": "Корзина", - "href": "javascript:void(0)", + "href": "#", "linkTarget": "", "targetId": "", - "iconSrc": "./assets/webflow/images/69a9ae818a76c773dc3cf7bc_trash.avif", + "iconSrc": "./assets/site/images/69a9ae818a76c773dc3cf7bc_trash.avif", "iconAlt": "Белая иконка корзины.", "className": "dock-icon no-bg", "iconClass": "dock-app-img trash", @@ -149,7 +149,7 @@ "logoPngAlt": "Логотип NODE.DC", "appIconSrc": "./assets/uploads/images/Logo/dclogo_white_alpha-mqus5if2.png", "appIconAlt": "Иконка NODE.DC", - "appWordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "appWordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "appWordmarkAlt": "Логотип NODE.DC", "faviconSvg": "./assets/uploads/favicon/icon-adaptive.svg", "faviconIco": "./assets/uploads/favicon/favicon.ico", @@ -270,7 +270,7 @@ "targetId": "", "iconSrc": "", "iconAlt": "", - "className": "dock-icon ssscript", + "className": "dock-icon nodedc-app", "iconClass": "", "dividerBefore": false }, @@ -434,8 +434,17 @@ ] }, "seo": { - "title": "NODE.DC — ИИ-платформа для Webflow", - "description": "Единая платформа для кастомного кода, MCP и ИИ-агентов в Webflow: контекст проекта, автоматизация, деплой и управляемая разработка." + "title": "NODE.DC - платформа для процессов, данных и ИИ-агентов", + "description": "NODE.DC объединяет Hub, Engine, Ops, прикладные модули и сквозного ассистента для задач, workflow, данных, ролей, интеграций и инженерных моделей.", + "canonicalUrl": "https://nodedc.dctouch.ru/", + "robots": "index,follow,max-image-preview:large", + "siteName": "NODE.DC", + "locale": "ru_RU", + "ogImage": "https://nodedc.dctouch.ru/assets/site/images/69b6acdde3123ef078e2b7f3_og-img.jpg", + "imageAlt": "NODE.DC - платформа для процессов, данных и ИИ-агентов", + "organizationName": "DCTOUCH", + "organizationUrl": "https://dctouch.ru/", + "applicationCategory": "BusinessApplication" }, "regions": [ { @@ -487,12 +496,12 @@ "failureHeading": "Не получилось", "failureTextHtml": "Что-то пошло не так.
Попробуйте ещё раз чуть позже.
" }, - "legalHtml": "Политика конфиденциальностиПолитика cookie
© — Все права защищены
2026", + "legalHtml": "DCTOUCH
© NODE.DC, 2026", "accessCard": { "enabled": true, "iconSrc": "./assets/uploads/images/Logo/dclogo_white_alpha-mqus5if2.png", "iconAlt": "Иконка NODE.DC", - "wordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "wordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "wordmarkAlt": "Логотип NODE.DC", "release": "Selfhost платформа ", "heading": "Запросить DEMO", @@ -733,7 +742,17 @@ "group": "Юридический блок" } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -857,7 +876,17 @@ ] } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "beforeCViz", @@ -873,7 +902,7 @@ "muted": "HUB", "main": "точка входа в платформу " }, - "introHtml": "Универсальный инструмент для ИИ-агентов в вашем Webflow-проекте.", + "introHtml": "Универсальный инструмент для ИИ-агентов в вашем NODE.DC-контуре.", "features": [ { "eyebrow": "Каталог приложений", @@ -999,7 +1028,17 @@ "group": "Пункты" } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -1139,7 +1178,17 @@ ] } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "beforeCViz", @@ -1282,7 +1331,17 @@ } ], "enabled": true, - "scopeIds": true + "scopeIds": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -1423,7 +1482,17 @@ } ], "enabled": true, - "scopeIds": true + "scopeIds": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "beforeCViz", @@ -1566,7 +1635,17 @@ } ], "enabled": true, - "scopeIds": true + "scopeIds": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -1707,7 +1786,17 @@ } ], "enabled": true, - "scopeIds": true + "scopeIds": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -1724,6 +1813,11 @@ }, "introHtml": "Прикладные модули закрывают функции подразделений: 1C, закупки, тендеры, юридический контур, цифровые двойники, инженерные модели и интеграции.", "sliderItems": [ + { + "enabled": true, + "videoSrc": "./assets/uploads/media/component-library-copy-copy-copy/nodedc-drone-mqwhqb84.png", + "title": "Инструменты работы с беспилотной техникой" + }, { "videoSrc": "./assets/uploads/media/component-library-copy-copy-copy/ndc_1c-mqvamdlq.jpg", "title": "1С Ассистент", @@ -1848,7 +1942,17 @@ } ], "enabled": true, - "scopeIds": true + "scopeIds": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -2075,7 +2179,17 @@ ] } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -2148,7 +2262,17 @@ "group": "CTA" } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -2219,7 +2343,17 @@ "group": "Центральный текст" } ], - "enabled": true + "enabled": true, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -2703,7 +2837,17 @@ } } ], - "enabled": false + "enabled": false, + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -2718,10 +2862,10 @@ { "id": "one-click-publish-png", "windowTitle": "публикация-в-один-клик.png", - "imageSrc": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif", - "imageSrcset": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", + "imageSrc": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif", + "imageSrcset": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "публикация-в-один-клик.png", "enabled": true @@ -2729,10 +2873,10 @@ { "id": "complete-code-editor-webp", "windowTitle": "полноценный-редактор-кода.webp", - "imageSrc": "./assets/webflow/images/69d3fba72116e87a8d145059_Frame%203174.avif", - "imageSrcset": "./assets/webflow/images/69d3fba72116e87a8d145059_Frame%203174-p-500.avif 500w, ./assets/webflow/images/69d3fba72116e87a8d145059_Frame%203174.avif 1200w", + "imageSrc": "./assets/site/images/69d3fba72116e87a8d145059_Frame%203174.avif", + "imageSrcset": "./assets/site/images/69d3fba72116e87a8d145059_Frame%203174-p-500.avif 500w, ./assets/site/images/69d3fba72116e87a8d145059_Frame%203174.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "полноценный-редактор-кода.webp", "enabled": true @@ -2740,32 +2884,32 @@ { "id": "ai-dock-mode-jpg", "windowTitle": "ИИ-док-режим.jpg", - "imageSrc": "./assets/webflow/images/69d3fac0d22182f930e32ec6_Frame%203175.avif", - "imageSrcset": "./assets/webflow/images/69d3fac0d22182f930e32ec6_Frame%203175-p-500.avif 500w, ./assets/webflow/images/69d3fac0d22182f930e32ec6_Frame%203175.avif 1200w", + "imageSrc": "./assets/site/images/69d3fac0d22182f930e32ec6_Frame%203175.avif", + "imageSrcset": "./assets/site/images/69d3fac0d22182f930e32ec6_Frame%203175-p-500.avif 500w, ./assets/site/images/69d3fac0d22182f930e32ec6_Frame%203175.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "ИИ-док-режим.jpg", "enabled": true }, { - "id": "deep-webflow-connection-webp", - "windowTitle": "глубокая-интеграция-webflow.webp", - "imageSrc": "./assets/webflow/images/69d3dc83a417451438caec72_Frame%203173.avif", - "imageSrcset": "./assets/webflow/images/69d3dc83a417451438caec72_Frame%203173-p-500.avif 500w, ./assets/webflow/images/69d3dc83a417451438caec72_Frame%203173.avif 1200w", + "id": "platform-integration-webp", + "windowTitle": "глубокая-интеграция-platform-map.webp", + "imageSrc": "./assets/site/images/69d3dc83a417451438caec72_Frame%203173.avif", + "imageSrcset": "./assets/site/images/69d3dc83a417451438caec72_Frame%203173-p-500.avif 500w, ./assets/site/images/69d3dc83a417451438caec72_Frame%203173.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", - "folderLabel": "глубокая-интеграция-webflow.webp", + "folderLabel": "глубокая-интеграция-platform-map.webp", "enabled": true }, { "id": "install-setup-and-run", "windowTitle": "установка-настройка-запуск.jpg", - "imageSrc": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif", - "imageSrcset": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", + "imageSrc": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif", + "imageSrcset": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "установка-настройка-запуск.jpg", "enabled": true @@ -2832,16 +2976,26 @@ "itemTemplate": { "id": "new-media-item", "windowTitle": "новый-файл.png", - "imageSrc": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif", - "imageSrcset": "./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/webflow/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", + "imageSrc": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif", + "imageSrcset": "./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201-p-500.avif 500w, ./assets/site/images/69d3dc9256192179afb4cfdc_Frame%201.avif 1200w", "imageAlt": "", - "iconSrc": "./assets/webflow/images/69aab66f030013f2c7177d78_mov-file.avif", + "iconSrc": "./assets/site/images/69aab66f030013f2c7177d78_mov-file.avif", "iconAlt": "Иконка MOV-файла.", "folderLabel": "новый-файл.png", "enabled": true } } - ] + ], + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -2871,8 +3025,8 @@ "id": "hub-access-1782000000000", "name": "Hub Access", "bodyHtml": "

Единая точка входа: каталог приложений, рабочие пространства, роли, группы и права доступа.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2880,8 +3034,8 @@ "id": "engine-workflows-1782000000001", "name": "Engine Workflows", "bodyHtml": "

Нодовые workflow, обработчики данных, интеграционная логика и сборка прикладных контуров.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2889,8 +3043,8 @@ "id": "ops-cards-1782000000002", "name": "Ops Cards", "bodyHtml": "

Операционные карточки, статусы, согласования, отчеты агентов и результаты выполнения задач.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2898,8 +3052,8 @@ "id": "1c-assistant-1782000000003", "name": "1C Assistant", "bodyHtml": "

Связка с 1C, разбор документов, поиск данных, сценарии согласований и передача результата в Ops.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2907,8 +3061,8 @@ "id": "tender-agent-1782000000004", "name": "Tender Agent", "bodyHtml": "

Тендерные подборки, проверка требований, документы, дедлайны и агентные отчеты по процедурам.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2916,8 +3070,8 @@ "id": "digital-twin-1782000000005", "name": "Digital Twin", "bodyHtml": "

Цифровые модели объектов, версии, проектный контекст, инженерные данные и связанные рабочие процессы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2925,8 +3079,8 @@ "id": "model-viewer-1782000000006", "name": "Model Viewer", "bodyHtml": "

Просмотр BIM, STEP, STL, 3DGS, облаков точек и инженерных материалов внутри единого контура.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2934,8 +3088,8 @@ "id": "engineering-core-1782000000007", "name": "Engineering Core", "bodyHtml": "

Обработка технических форматов, связка моделей с задачами, версиями, отчетами и согласованиями.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2943,8 +3097,8 @@ "id": "mcp-gateway-1782000000008", "name": "MCP Gateway", "bodyHtml": "

Контекстный шлюз для агентов: проектные данные, инструменты, кодовая база и внешние сервисы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2952,8 +3106,8 @@ "id": "api-contracts-1782000000009", "name": "API Contracts", "bodyHtml": "

Контракты API, схемы данных, webhooks, события, интеграции и контроль совместимости между модулями.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2961,8 +3115,8 @@ "id": "kubernetes-1782000000010", "name": "Kubernetes", "bodyHtml": "

Оркестрация сервисов, изоляция окружений, scaling policies, probes, secrets и управляемый rollout.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2970,8 +3124,8 @@ "id": "cloudflare-edge-1782000000011", "name": "Cloudflare Edge", "bodyHtml": "

CDN, WAF, R2-хранилище, edge routing, cache policies и защита публичного периметра.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2979,8 +3133,8 @@ "id": "zero-trust-1782000000012", "name": "Zero Trust", "bodyHtml": "

Доступ по принципу least privilege: SSO, MFA, device posture, audit trail и сегментация контуров.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2988,8 +3142,8 @@ "id": "security-matrix-1782000000013", "name": "Security Matrix", "bodyHtml": "

Ролевая матрица, группы, политики доступа, ограничения функций и контроль административных действий.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -2997,8 +3151,8 @@ "id": "rbac-policies-1782000000014", "name": "RBAC Policies", "bodyHtml": "

Права на приложения, рабочие области, действия агентов, документы, отчеты и инженерные данные.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3006,8 +3160,8 @@ "id": "audit-log-1782000000015", "name": "Audit Log", "bodyHtml": "

Журнал действий пользователей, агентов и сервисов: изменения, статусы, запросы, публикации и доступы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3015,8 +3169,8 @@ "id": "secrets-vault-1782000000016", "name": "Secrets Vault", "bodyHtml": "

Хранение токенов, ключей API, webhook-секретов и конфигураций интеграций в защищенном контуре.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3024,8 +3178,8 @@ "id": "postgres-cluster-1782000000017", "name": "Postgres Cluster", "bodyHtml": "

Основная транзакционная база для проектов, ролей, задач, статусов, событий и конфигураций платформы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3033,8 +3187,8 @@ "id": "redis-queue-1782000000018", "name": "Redis Queue", "bodyHtml": "

Очереди фоновых задач, статусы выполнения, debounce событий, кэширование и быстрые агентные операции.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3042,8 +3196,8 @@ "id": "vector-index-1782000000019", "name": "Vector Index", "bodyHtml": "

Индексация проектных материалов, документации, отчетов и контекста для ассистента и поиска.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3051,8 +3205,8 @@ "id": "local-models-1782000000020", "name": "Local Models", "bodyHtml": "

Контур локальных моделей для приватных сценариев, инженерных данных и корпоративных ограничений.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3060,8 +3214,8 @@ "id": "model-routing-1782000000021", "name": "Model Routing", "bodyHtml": "

Маршрутизация задач между облачными и локальными моделями по типу запроса, правам и стоимости.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3069,8 +3223,8 @@ "id": "agent-runtime-1782000000022", "name": "Agent Runtime", "bodyHtml": "

Запуск ассистентов, выполнение действий, контроль инструментов, журналирование и передача результата в Ops.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3078,8 +3232,8 @@ "id": "observability-1782000000023", "name": "Observability", "bodyHtml": "

Метрики, логи, трассировка, health checks, алерты и диагностика сервисов платформы.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3087,8 +3241,8 @@ "id": "backups-1782000000024", "name": "Backups", "bodyHtml": "

Резервные копии данных, конфигураций, файлов, моделей, журналов и сценариев восстановления.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3096,8 +3250,8 @@ "id": "ci-cd-1782000000025", "name": "CI CD", "bodyHtml": "

Сборка, проверки, preview-окружения, controlled rollout, rollback и публикация клиентских модулей.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3105,8 +3259,8 @@ "id": "terraform-1782000000026", "name": "Terraform", "bodyHtml": "

Описание инфраструктуры кодом: окружения, сети, хранилища, политики, сервисы и переменные.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3114,8 +3268,8 @@ "id": "object-storage-1782000000027", "name": "Object Storage", "bodyHtml": "

Хранилище файлов, изображений, моделей, отчетов, txt-материалов и артефактов рабочих процессов.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3123,8 +3277,8 @@ "id": "bim-pipeline-1782000000028", "name": "BIM Pipeline", "bodyHtml": "

Загрузка BIM-моделей, версии, разметка, связи с задачами и публикация в рабочие пространства.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3132,8 +3286,8 @@ "id": "step-import-1782000000029", "name": "STEP Import", "bodyHtml": "

Импорт STEP-моделей, технические материалы, карточки проверки и привязка к инженерным задачам.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3141,8 +3295,8 @@ "id": "stl-review-1782000000030", "name": "STL Review", "bodyHtml": "

Проверка STL-геометрии, заметки, версии, визуальный контроль и подготовка производственных материалов.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3150,8 +3304,8 @@ "id": "3dgs-assets-1782000000031", "name": "3DGS Assets", "bodyHtml": "

Gaussian Splatting сцены, визуальные реконструкции объектов и связь с проектным контекстом.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3159,8 +3313,8 @@ "id": "las-laz-clouds-1782000000032", "name": "LAS LAZ Clouds", "bodyHtml": "

Облака точек, съемка, координатные данные, версии и инженерная привязка к задачам.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3168,8 +3322,8 @@ "id": "webhooks-1782000000033", "name": "Webhooks", "bodyHtml": "

Событийные сценарии: входящие запросы, уведомления, автоматические действия и передача статусов.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3177,8 +3331,8 @@ "id": "docs-portal-1782000000034", "name": "Docs Portal", "bodyHtml": "

Документация, регламенты, инструкции, технические заметки и материалы для команд внедрения.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true }, @@ -3186,8 +3340,8 @@ "id": "stack-map-1782000000035", "name": "Stack Map", "bodyHtml": "

Карта платформенного стека: Hub, Engine, Ops, агенты, данные, интеграции, безопасность и инфраструктура.

", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла", "enabled": true } @@ -3196,7 +3350,7 @@ "enabled": true, "iconSrc": "./assets/uploads/images/hero-waitlist/dclogo_white_alpha-mquue8ar.png", "iconAlt": "Иконка NODE.DC", - "wordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "wordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "wordmarkAlt": "Логотип NODE.DC", "release": "Selfhost платформа ", "heading": "Запросить DEMO", @@ -3204,7 +3358,7 @@ }, "legal": { "enabled": true, - "html": "Политика конфиденциальностиПолитика cookie
© — Все права защищены
2026" + "html": "DCTOUCH
© NODE.DC, 2026" }, "filesEnabled": true }, @@ -3259,12 +3413,22 @@ "id": "new-file", "name": "Новый файл", "bodyHtml": "Текст файла", - "iconSrc": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif", - "iconSrcset": "./assets/webflow/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/webflow/images/69a9fb87bc56142371745926_txt-file.avif 1024w", + "iconSrc": "./assets/site/images/69a9fb87bc56142371745926_txt-file.avif", + "iconSrcset": "./assets/site/images/69a9fb87bc56142371745926_txt-file-p-500.avif 500w, ./assets/site/images/69a9fb87bc56142371745926_txt-file.avif 1024w", "iconAlt": "Иконка TXT-файла" } } - ] + ], + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -3317,7 +3481,17 @@ "renderAs": "text", "group": "Dock" } - ] + ], + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } }, { "region": "cViz", @@ -3331,14 +3505,14 @@ "footer": { "appIconSrc": "./assets/uploads/images/Logo/dclogo_white_alpha-mqus5if2.png", "appIconAlt": "Иконка NODE.DC", - "wordmarkSrc": "./assets/webflow/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", + "wordmarkSrc": "./assets/site/images/69ad96a28b06b7552a339137_logtype.svg?v=node-dc", "wordmarkAlt": "Логотип NODE.DC", - "copyrightHtml": "© 2026 —  NODE.DC", + "copyrightHtml": "© 2026 — NODE.DC", "navTitle": "Навигация", "navLinks": [ { "label": "Документация", - "href": "https://docs.ssscript.app/", + "href": "https://nodedc.dctouch.ru/", "target": "", "enabled": false, "linkMode": "href", @@ -3397,7 +3571,7 @@ }, { "label": "GitHub", - "href": "https://www.federic.ooo/s/github", + "href": "https://github.com/dcconstructions", "target": "", "enabled": false, "linkMode": "href", @@ -3405,14 +3579,14 @@ }, { "label": "Портфолио", - "href": "https://federic.ooo/", + "href": "https://www.dctouch.ru/", "target": "", "enabled": false, "linkMode": "href", "linkTarget": "_blank" } ], - "policyHtml": "Политика конфиденциальностиУсловия использования", + "policyHtml": "DCTOUCH", "policyEnabled": false } }, @@ -3539,7 +3713,17 @@ "renderAs": "html", "group": "Политики" } - ] + ], + "seo": { + "targetCluster": "", + "searchIntent": "", + "primaryQuery": "", + "secondaryQueries": "", + "title": "", + "description": "", + "coverageNotes": "", + "indexHint": "section" + } } ] } diff --git a/docs/home-block-schema.md b/docs/home-block-schema.md index 8228017..1377d39 100644 --- a/docs/home-block-schema.md +++ b/docs/home-block-schema.md @@ -1,174 +1,12 @@ -# Home Page Block Schema Draft +# NODE.DC Home Block Schema -This is the first content model draft for the NODE.DC landing page. It is intentionally content-only. Class names, animation hooks, WebGL targets, and responsive layout remain in renderer code. +The homepage is rendered from `content/pages/home.json` through `tools/render-home.mjs`. -## Page +Core areas: -```json -{ - "slug": "home", - "title": "NODE.DC", - "seo": { - "title": "NODE.DC — ИИ-платформа для Webflow", - "description": "..." - }, - "globals": { - "notification": {}, - "navigation": {}, - "dock": {} - }, - "blocks": [] -} -``` - -## Common Block Fields - -Every block should include: - -```json -{ - "id": "stable-block-id", - "type": "heroWaitlist", - "enabled": true, - "anchor": "hero", - "adminLabel": "Первый экран" -} -``` - -## Block Field Drafts - -### `heroWaitlist` - -```json -{ - "type": "heroWaitlist", - "leftFeatures": [ - { - "titleLines": ["Ваш Webflow", "ИИ-инструменты"], - "text": "Несколько агентов для проекта Webflow..." - } - ], - "appCard": { - "release": "Бета-релиз: июль 2026", - "heading": "Ранний доступ", - "description": "Кастомный код, MCP и ИИ-агенты...", - "form": { - "messagePlaceholder": "Сообщение (необязательно)", - "namePlaceholder": "Ваше имя*", - "emailPlaceholder": "Email для регистрации*", - "submitLabel": "Встать в лист ожидания" - } - } -} -``` - -### `featureVideo` - -```json -{ - "type": "featureVideo", - "headingLines": ["Всё в одном", "приложение."], - "intro": "Универсальный инструмент для ИИ-агентов...", - "features": [ - { - "eyebrow": "Контекст проекта", - "text": "Подключитесь к MCP..." - } - ], - "window": { - "title": "демо-видео.mp4", - "video": "./assets/media/publish-flow.mp4" - } -} -``` - -### `sliderGallery` - -Use for component library and AI modes when they share the same render structure. - -```json -{ - "type": "sliderGallery", - "variant": "componentLibrary", - "headingLines": ["Агентная", "Компонентная", "библиотека."], - "intro": "Готовая к работе с агентами...", - "items": [ - { - "title": "Публикация", - "video": "./assets/media/publish-flow.mp4", - "poster": null - } - ] -} -``` - -### `faq` - -```json -{ - "type": "faq", - "headingLines": ["Частые", "вопросы", "и ответы"], - "intro": "Подробный обзор возможностей...", - "cta": { - "label": "Полная документация", - "href": "https://docs.ssscript.app/" - }, - "items": [ - { - "question": "Где размещаются мои файлы?", - "answer": "После сборки файлы загружаются..." - } - ] -} -``` - -### `pricingTable` - -```json -{ - "type": "pricingTable", - "windowTitle": "тарифы.app", - "plans": [ - { - "key": "beta", - "name": "Бета", - "price": "Бесплатно", - "period": "1 месяц", - "cta": { - "label": "Подать заявку в бету", - "href": "beta-apply.html", - "disabled": false - } - } - ], - "rows": [ - { - "label": "Старт", - "values": { - "beta": "Июнь 2026", - "founder": "Июнь 2026", - "basic": "Июнь 2026", - "advanced": "Июнь 2026" - } - } - ], - "notes": [] -} -``` - -### `fileGallery` - -```json -{ - "type": "fileGallery", - "items": [ - { - "title": "публикация-в-один-клик.png", - "kind": "imageWindow", - "image": "./assets/webflow/images/example.avif", - "icon": "mov" - } - ] -} -``` +- `seo`: page title and description. +- `staticElements`: navigation, dock, assets, and notifications. +- `regions[].blocks`: ordered homepage blocks. +- `content/block-templates/home.json`: sanitized admin presets for creating blocks. +Current product vocabulary is NODE.DC only: Hub, Engine, Ops, AI agents, workflow automation, enterprise data, integrations, 1C assistant, tender/procurement modules, engineering data, BIM/STEP/STL, security, and self-hosted deployment. diff --git a/docs/refactor-admin-plan.md b/docs/refactor-admin-plan.md index b0f06f2..a04dece 100644 --- a/docs/refactor-admin-plan.md +++ b/docs/refactor-admin-plan.md @@ -1,217 +1,5 @@ -# NODE.DC Block Refactor And Admin Plan +# NODE.DC Admin Notes -## Goal +The current admin flow edits the structured homepage model and renders `index.html` with `npm run render:home`. -Turn the current Webflow-exported page into a managed block-based source without changing the visual result. - -The first version of the admin should edit only the content layer: text, links, media references, repeated items, and block order. Motion, WebGL, dock behavior, notification behavior, and responsive layout stay in code. - -## Non-Negotiables - -- Visual parity with the current page on desktop, tablet, and mobile. -- Existing responsive behavior must survive the refactor. -- Existing interactive shell must survive: top bar, dock, floating app windows, WebGL canvas, notifications, sliders, forms. -- Content blocks must be reorderable, duplicatable, and toggleable. -- No direct HTML editing in the admin. -- Optimization must be measured before and after each major step. - -## Current Baseline - -Measured on June 25, 2026 with Lighthouse against local servers: - -| Target | Performance | Accessibility | Best Practices | SEO | FCP | LCP | TBT | Total byte weight | -| --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| `127.0.0.1:8081` working copy | 43 | 91 | 100 | 92 | 2.6s | 14.4s | 1330ms | 24,423 KiB | -| `127.0.0.1:8080` original copy | 60 | 91 | 100 | 92 | 4.3s | 10.1s | 180ms | 17,273 KiB | - -Main risk areas: - -- `assets/media` is 53 MB. -- Main page has 17 `