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 @@
Book Meeting
-
+
@@ -1954,13 +1986,17 @@
NGO & Non-Profit
-
Donor trust, grant clarity, cleaner reporting.
+
+ Donor trust, grant clarity, cleaner reporting.
+
- Connect programs, budgets, donor records, and impact stories
- without living in exports.
+ Connect programs, budgets, donor records, and
+ impact stories without living in exports.
-
Visit NGO page →
+
Visit NGO page →
Startups
-
Run faster without creating back-office debt.
+
+ Run faster without creating back-office debt.
+
- Finance, CRM, approvals, and reporting that can survive due diligence.
+ Finance, CRM, approvals, and reporting that can
+ survive due diligence.
- Visit startup page →
+ Visit startup page →
Manufacturing
-
See margin, stock, and production in one frame.
+
+ See margin, stock, and production in one frame.
+
- Bring MRP, inventory, quality, and costing together so decisions stop lagging.
+ Bring MRP, inventory, quality, and costing
+ together so decisions stop lagging.
- Visit manufacturing page →
+ Visit manufacturing page →
Restaurants
-
Control food cost, payroll, and service pressure.
+
+ Control food cost, payroll, and service
+ pressure.
+
- Link POS activity to purchasing, stock, and staffing before leakage becomes normal.
+ Link POS activity to purchasing, stock, and
+ staffing before leakage becomes normal.
- Visit restaurant page →
+ Visit restaurant page →
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.
-
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.
- Core back-office modules
@@ -2243,7 +2338,12 @@
- Standard onboarding
- Community support
- Free Trial
+ Free Trial
$395
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.
- Everything in Side Hustle
@@ -2267,7 +2368,12 @@
- Priority onboarding
- Email and chat support
- 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.
- Everything in On the Rise
@@ -2291,7 +2398,9 @@
- Unlimited users
- Dedicated support line
- 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;