diff --git a/index.html b/index.html index be65e95..4266356 100644 --- a/index.html +++ b/index.html @@ -71,7 +71,11 @@ body { background: var(--bg); color: var(--light); - font-family: "Segoe UI", system-ui, -apple-system, sans-serif; + font-family: + "Segoe UI", + system-ui, + -apple-system, + sans-serif; line-height: 1.65; overflow-x: hidden; } @@ -150,7 +154,10 @@ min-height: 38px; --chat-panel-height: 304px; overflow: visible; - transition: border-color 0.25s, box-shadow 0.25s, transform 0.25s; + transition: + border-color 0.25s, + box-shadow 0.25s, + transform 0.25s; } .nav-chat:focus-within { @@ -168,7 +175,10 @@ border: 1px solid var(--border); border-radius: 999px; overflow: hidden; - transition: border-color 0.25s, box-shadow 0.25s, transform 0.25s; + transition: + border-color 0.25s, + box-shadow 0.25s, + transform 0.25s; } .nav-chat.open .nav-chat-main { @@ -195,7 +205,9 @@ pointer-events: none; display: flex; flex-direction: column; - transition: opacity 0.22s ease, visibility 0.22s ease, + transition: + opacity 0.22s ease, + visibility 0.22s ease, transform 0.22s ease; } @@ -269,8 +281,13 @@ .story-cta, .open-modal, .modal-submit { - transition: transform 0.2s, opacity 0.2s, border-color 0.2s, - color 0.2s, background 0.2s, box-shadow 0.2s; + transition: + transform 0.2s, + opacity 0.2s, + border-color 0.2s, + color 0.2s, + background 0.2s, + box-shadow 0.2s; } .nav-cta, @@ -414,7 +431,8 @@ content: ""; position: absolute; inset: 0; - background: radial-gradient( + background: + radial-gradient( circle at top right, rgba(251, 140, 0, 0.2), transparent 32% @@ -1123,7 +1141,10 @@ letter-spacing: 0.12em; text-transform: uppercase; cursor: pointer; - transition: border-color 0.2s, color 0.2s, background 0.2s; + transition: + border-color 0.2s, + color 0.2s, + background 0.2s; } .news-page-btn:hover:not(:disabled) { @@ -1234,7 +1255,8 @@ .pricing-card.featured { background: rgba(245, 236, 228, 0.96); - box-shadow: 0 0 0 1px rgba(230, 81, 0, 0.24), + box-shadow: + 0 0 0 1px rgba(230, 81, 0, 0.24), 0 28px 70px rgba(230, 81, 0, 0.14); } @@ -1378,7 +1400,9 @@ } .footer-top { - grid-template-columns: minmax(0, 1.1fr) minmax(320px, 1.2fr) minmax(0, 1fr) minmax(0, 1fr); + grid-template-columns: + minmax(0, 1.1fr) minmax(320px, 1.2fr) + minmax(0, 1fr) minmax(0, 1fr); margin-bottom: 30px; align-items: start; } @@ -1761,9 +1785,15 @@
Agentic Businesses
-
Give automation a system it can actually trust.
+
+ Give automation a system it can actually trust. +
- Agents perform better when the business data behind them is structured and current. + Agents perform better when the business data + behind them is structured and current.
- Visit agentic page → + Visit agentic page →
@@ -2059,10 +2116,15 @@ data-mf-animation-distance="28" data-mf-animation-once="true" > -

We provide a hustle free backoffice plattform for you to build your business upon.

+

+ We provide a hustle free backoffice plattform for you to + build your business upon. +

- Start with a stable foundation, keep the daily work simple, and build on an ecosystem that stays open as your business grows. + Start with a stable foundation, keep the daily work + simple, and build on an ecosystem that stays open as + your business grows.

@@ -2070,26 +2132,40 @@ 01
Hustle free service "plug and play" - You focus on your business, we take care of the rest. + You focus on your business, we take care of + the rest.
02
Easy to use - There are many YouTube videos to help your team learn fast. + There are many YouTube videos to help your + team learn fast.
03
Best ecosystem - Developers all over the world can extend and support your setup. + Developers all over the world can extend + and support your setup.
-
- Book Meeting +
+ Book Meeting
Fully integrated modules

- Our solution provides fully integrated modules across the business. + Our solution provides fully integrated modules + across the business.

- Start with the modules you need today and expand later without breaking the flow between teams, data, and daily work. + Start with the modules you need today and expand + later without breaking the flow between teams, data, + and daily work.

- In Odoo Community Edition there is no user limitation. + In Odoo Community Edition there is no user + limitation.
@@ -2187,10 +2267,24 @@ aria-label="Search blog posts" />
- Loading posts... + Loading posts...
- - + +
@@ -2234,7 +2328,8 @@
$214
per year ยท billed annually

- For lean teams that need the chaos to stop without buying a giant project. + For lean teams that need the chaos to stop without + buying a giant project.

- Free Trial + Free Trial
per year ยท billed annually

- The best balance for teams that want industry-specific workflows and room to scale. + The best balance for teams that want industry-specific + workflows and room to scale.

- Free Trial + Free Trial
per year ยท billed annually
+ $500 one-time setup fee

- For buyers who want their own infrastructure, full sovereignty, and zero platform dependence. + For buyers who want their own infrastructure, full + sovereignty, and zero platform dependence.

- Talk through hosting + Talk through hosting @@ -2321,9 +2430,13 @@ >
🌐
-
Hire any Odoo developer later
+
+ Hire any Odoo developer later +

- Because this runs on Odoo Community Edition, your future is not tied to one vendor. You can bring in freelancers, agencies, or internal developers when the time is right. + Because this runs on Odoo Community Edition, your future + is not tied to one vendor. You can bring in freelancers, + agencies, or internal developers when the time is right.

🔧
-
Use our team when speed matters
+
+ Use our team when speed matters +

- Need custom modules, integrations, migrations, or reporting? Work with the people who already know the stack and can ship practical improvements without drama. + Need custom modules, integrations, migrations, or + reporting? Work with the people who already know the + stack and can ship practical improvements without drama.

-
Request scoped help → + Request scoped help →
@@ -2354,22 +2473,44 @@ data-mf-stagger-once="true" > ", + "", ].join(""); } function emptyMarkup(text) { - return '
' + text + '
'; + return '
' + text + "
"; } function updateCount() { @@ -2692,20 +2885,28 @@ } var start = currentPage * PAGE_SIZE + 1; var end = Math.min(start + PAGE_SIZE - 1, total); - count.textContent = start + "-" + end + " of " + total + " posts"; + count.textContent = + start + "-" + end + " of " + total + " posts"; } function render() { var start = currentPage * PAGE_SIZE; - var pagePosts = filteredPosts.slice(start, start + PAGE_SIZE); + var pagePosts = filteredPosts.slice( + start, + start + PAGE_SIZE, + ); if (!pagePosts.length) { - grid.innerHTML = emptyMarkup("No posts match your search."); + grid.innerHTML = emptyMarkup( + "No posts match your search.", + ); } else { grid.innerHTML = pagePosts.map(postMarkup).join(""); } - if (window._mbsTracking) window._mbsTracking.applyToLinks(grid); + if (window._mbsTracking) + window._mbsTracking.applyToLinks(grid); prevBtn.disabled = currentPage === 0; - nextBtn.disabled = start + PAGE_SIZE >= filteredPosts.length; + nextBtn.disabled = + start + PAGE_SIZE >= filteredPosts.length; updateCount(); } @@ -2713,7 +2914,11 @@ var term = (search.value || "").trim().toLowerCase(); filteredPosts = allPosts.filter(function (post) { if (!term) return true; - var haystack = [post.headline, post.vertical, post.shortText] + var haystack = [ + post.headline, + post.vertical, + post.shortText, + ] .join(" ") .toLowerCase(); return haystack.indexOf(term) !== -1; @@ -2729,7 +2934,8 @@ }); nextBtn.addEventListener("click", function () { - if ((currentPage + 1) * PAGE_SIZE >= filteredPosts.length) return; + if ((currentPage + 1) * PAGE_SIZE >= filteredPosts.length) + return; currentPage += 1; render(); }); @@ -2746,7 +2952,9 @@ render(); }) .catch(function () { - grid.innerHTML = emptyMarkup("Posts could not be loaded right now."); + grid.innerHTML = emptyMarkup( + "Posts could not be loaded right now.", + ); count.textContent = "Posts unavailable"; prevBtn.disabled = true; nextBtn.disabled = true; @@ -2771,7 +2979,9 @@ /[xy]/g, function (c) { var r = (Math.random() * 16) | 0; - return (c === "x" ? r : (r & 0x3) | 0x8).toString(16); + return (c === "x" ? r : (r & 0x3) | 0x8).toString( + 16, + ); }, ); })(); @@ -2868,7 +3078,8 @@ chatid: CHAT_ID, chatInput: text, }; - if (window._mbsTracking) payload = window._mbsTracking.extendPayload(payload); + if (window._mbsTracking) + payload = window._mbsTracking.extendPayload(payload); fetch(CHAT_URL, { method: "POST", @@ -2883,7 +3094,8 @@ }); }) .then(function (d) { - if (thinkEl.parentNode) chatLog.removeChild(thinkEl); + if (thinkEl.parentNode) + chatLog.removeChild(thinkEl); var item = Array.isArray(d) ? d[0] : d; var reply = (item && @@ -2896,7 +3108,8 @@ busy = false; }) .catch(function () { - if (thinkEl.parentNode) chatLog.removeChild(thinkEl); + if (thinkEl.parentNode) + chatLog.removeChild(thinkEl); appendMsg( "agent", "Sorry, I could not connect right now. Please try again.", @@ -2912,9 +3125,10 @@ }); } if (closeBtn) closeBtn.addEventListener("click", closePanel); - if (navSend) navSend.addEventListener("click", function () { - send(navInput.value); - }); + if (navSend) + navSend.addEventListener("click", function () { + send(navInput.value); + }); if (navInput) { navInput.addEventListener("keydown", function (e) { if (e.key === "Enter") send(navInput.value); @@ -2934,7 +3148,10 @@ }); document.addEventListener("keydown", function (e) { - if (e.key === "Escape" && panel.classList.contains("open")) { + if ( + e.key === "Escape" && + panel.classList.contains("open") + ) { closePanel(); } }); @@ -2967,7 +3184,8 @@ var bestDist = Infinity; els.forEach(function (el) { var r = el.getBoundingClientRect(); - if (r.bottom <= 0 || r.top >= window.innerHeight) return; + if (r.bottom <= 0 || r.top >= window.innerHeight) + return; var d = Math.abs(r.top + r.height / 2 - mid); if (d < bestDist) { bestDist = d; @@ -2990,17 +3208,25 @@ var d = document.documentElement; var max = d.scrollHeight - window.innerHeight; if (max <= 0) return 0; - return Math.min(100, Math.round((window.pageYOffset / max) * 100)); + return Math.min( + 100, + Math.round((window.pageYOffset / max) * 100), + ); } function parseOS(ua) { - if (/Windows NT 10|Windows NT 11/.test(ua)) return "Windows 10/11"; + if (/Windows NT 10|Windows NT 11/.test(ua)) + return "Windows 10/11"; if (/Windows NT 6\.3/.test(ua)) return "Windows 8.1"; if (/Windows NT 6\.1/.test(ua)) return "Windows 7"; - if (/Mac OS X ([\d_]+)/.test(ua)) return "macOS " + RegExp.$1.replace(/_/g, "."); - if (/Android ([\d.]+)/.test(ua)) return "Android " + RegExp.$1; - if (/iPhone.*OS ([\d_]+)/.test(ua)) return "iOS " + RegExp.$1.replace(/_/g, "."); - if (/iPad.*OS ([\d_]+)/.test(ua)) return "iPadOS " + RegExp.$1.replace(/_/g, "."); + if (/Mac OS X ([\d_]+)/.test(ua)) + return "macOS " + RegExp.$1.replace(/_/g, "."); + if (/Android ([\d.]+)/.test(ua)) + return "Android " + RegExp.$1; + if (/iPhone.*OS ([\d_]+)/.test(ua)) + return "iOS " + RegExp.$1.replace(/_/g, "."); + if (/iPad.*OS ([\d_]+)/.test(ua)) + return "iPadOS " + RegExp.$1.replace(/_/g, "."); if (/Linux/.test(ua)) return "Linux"; return "Unknown"; } @@ -3008,9 +3234,12 @@ function parseBrowser(ua) { if (/Edg\/([\d.]+)/.test(ua)) return "Edge " + RegExp.$1; if (/OPR\/([\d.]+)/.test(ua)) return "Opera " + RegExp.$1; - if (/Firefox\/([\d.]+)/.test(ua)) return "Firefox " + RegExp.$1; - if (/Chrome\/([\d.]+)/.test(ua)) return "Chrome " + RegExp.$1; - if (/Version\/([\d.]+).*Safari/.test(ua)) return "Safari " + RegExp.$1; + if (/Firefox\/([\d.]+)/.test(ua)) + return "Firefox " + RegExp.$1; + if (/Chrome\/([\d.]+)/.test(ua)) + return "Chrome " + RegExp.$1; + if (/Version\/([\d.]+).*Safari/.test(ua)) + return "Safari " + RegExp.$1; return "Unknown"; } @@ -3036,7 +3265,9 @@ typeof Intl !== "undefined" ? Intl.DateTimeFormat().resolvedOptions().timeZone : "unknown"; - var langs = (navigator.languages || [navigator.language]).join(", "); + var langs = ( + navigator.languages || [navigator.language] + ).join(", "); var lines = [ "NEW USER โ€” 60s Probe", @@ -3052,10 +3283,29 @@ r("OS", parseOS(ua)), r("Device", deviceType(ua)), r("Language", navigator.language + " [" + langs + "]"), - r("Screen", screen.width + "x" + screen.height + " @ " + screen.colorDepth + "-bit"), - r("Viewport", window.innerWidth + "x" + window.innerHeight), - r("CPU cores", String(navigator.hardwareConcurrency || "?")), - r("Device RAM", navigator.deviceMemory ? navigator.deviceMemory + " GB" : "?"), + r( + "Screen", + screen.width + + "x" + + screen.height + + " @ " + + screen.colorDepth + + "-bit", + ), + r( + "Viewport", + window.innerWidth + "x" + window.innerHeight, + ), + r( + "CPU cores", + String(navigator.hardwareConcurrency || "?"), + ), + r( + "Device RAM", + navigator.deviceMemory + ? navigator.deviceMemory + " GB" + : "?", + ), r("Touch pts", String(navigator.maxTouchPoints || 0)), r("Cookies", navigator.cookieEnabled ? "yes" : "no"), r("DNT", navigator.doNotTrack === "1" ? "on" : "off"), @@ -3067,7 +3317,9 @@ r( "Connection", (conn.effectiveType || "?") + - (conn.downlink ? " @ " + conn.downlink + " Mbps" : ""), + (conn.downlink + ? " @ " + conn.downlink + " Mbps" + : ""), ), ); if (conn.saveData) lines.push(r("Data saver", "on")); @@ -3076,7 +3328,9 @@ lines.push(""); lines.push("--- PAGE ----------------------"); lines.push(r("URL", window.location.href)); - lines.push(r("Referrer", document.referrer || "direct / none")); + lines.push( + r("Referrer", document.referrer || "direct / none"), + ); lines.push(r("Title", document.title)); lines.push(r("Timezone", tz)); @@ -3109,7 +3363,9 @@ /[xy]/g, function (c) { var r2 = (Math.random() * 16) | 0; - return (c === "x" ? r2 : (r2 & 0x3) | 0x8).toString(16); + return ( + c === "x" ? r2 : (r2 & 0x3) | 0x8 + ).toString(16); }, ); payload = { @@ -3117,7 +3373,8 @@ chatid: chatId, chatInput: buildMsg(geo), }; - if (window._mbsTracking) payload = window._mbsTracking.extendPayload(payload); + if (window._mbsTracking) + payload = window._mbsTracking.extendPayload(payload); fetch(CHAT_URL, { method: "POST", @@ -3178,7 +3435,8 @@ function openModal(plan) { planField.value = plan || "General Free Trial"; productField.value = plan || defaultProduct; - if (window._mbsTracking) window._mbsTracking.applyToFields(form); + if (window._mbsTracking) + window._mbsTracking.applyToFields(form); overlay.style.display = "flex"; document.body.style.overflow = "hidden"; } @@ -3192,17 +3450,20 @@ form.reset(); planField.value = "General Free Trial"; productField.value = defaultProduct; - if (window._mbsTracking) window._mbsTracking.applyToFields(form); + if (window._mbsTracking) + window._mbsTracking.applyToFields(form); var btn = form.querySelector(".modal-submit"); btn.textContent = "Start Free Trial"; btn.disabled = false; }, 200); } - document.getElementById("open-modal").addEventListener("click", function (e) { - e.preventDefault(); - openModal(); - }); + document + .getElementById("open-modal") + .addEventListener("click", function (e) { + e.preventDefault(); + openModal(); + }); document.querySelectorAll(".open-modal").forEach(function (el) { el.addEventListener("click", function (e) { @@ -3211,20 +3472,27 @@ }); }); - document.getElementById("modal-close").addEventListener("click", closeModal); + document + .getElementById("modal-close") + .addEventListener("click", closeModal); overlay.addEventListener("click", function (e) { - if (e.target === overlay || !modalBox.contains(e.target)) closeModal(); + if (e.target === overlay || !modalBox.contains(e.target)) + closeModal(); }); document.addEventListener("keydown", function (e) { if (e.key === "Escape") closeModal(); }); - document.getElementById("modal-confirm-close").addEventListener("click", closeModal); + document + .getElementById("modal-confirm-close") + .addEventListener("click", closeModal); form.addEventListener("submit", function (e) { e.preventDefault(); var btn = form.querySelector(".modal-submit"); var formData = new FormData(form); - if (window._mbsTracking) formData = window._mbsTracking.appendToFormData(formData); + if (window._mbsTracking) + formData = + window._mbsTracking.appendToFormData(formData); btn.textContent = "Sending..."; btn.disabled = true;