first commit
|
|
@ -0,0 +1,54 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="space_grotesk_25f324d0-module___WK4EG__variable inter_3d9c7ff2-module__6cOLqa__variable ibm_plex_mono_a3877f56-module__sxIMvq__variable">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="stylesheet" href="/css/site.css" />
|
||||
<title>404 — EventBuzz Live</title>
|
||||
<meta name="description" content="Page not found." />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
<style>
|
||||
.not-found {
|
||||
min-height: 70vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
padding: 48px 20px;
|
||||
}
|
||||
.not-found h1 {
|
||||
font-family: var(--font-space-grotesk), sans-serif;
|
||||
font-size: 64px;
|
||||
margin: 0 0 12px;
|
||||
}
|
||||
.not-found p { color: #565b78; margin: 0 0 24px; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<div class="wrap navrow">
|
||||
<a href="/" class="logo"><img alt="EventBuzz" width="160" height="36" src="/images/eventbuzz-logo.png" /></a>
|
||||
<div class="navlinks navlinks-desktop">
|
||||
<a href="/#platform">Platform</a>
|
||||
<a href="/#concierge">AI Concierge</a>
|
||||
<a href="/#event-engagement">Engagement</a>
|
||||
<a href="/#pricing">Pricing</a>
|
||||
<a href="/#proof">Customer stories</a>
|
||||
</div>
|
||||
<a href="/#cta" class="btn btn-primary nav-demo-desktop" data-demo-open="true">Request demo</a>
|
||||
<button type="button" class="nav-menu-btn" aria-label="Open menu" aria-expanded="false" aria-controls="nav-drawer">
|
||||
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="22" width="22" xmlns="http://www.w3.org/2000/svg"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
<main class="not-found">
|
||||
<h1>404</h1>
|
||||
<p>This page could not be found.</p>
|
||||
<a class="btn btn-primary" href="/">Back to home</a>
|
||||
</main>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
|
||||
<script src="/js/site.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 33 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 34 KiB |
|
|
@ -0,0 +1 @@
|
|||
.legal-page{background:radial-gradient(ellipse 700px 320px at 10% -10%, #ef8d1a1f, transparent 55%), var(--paper);min-height:60vh;padding:48px 0 80px}.legal-page .legal-back{color:#565b78;align-items:center;gap:6px;margin-bottom:28px;font-size:14px;font-weight:500;transition:color .15s;display:inline-flex}.legal-page .legal-back:hover{color:var(--amber-dark)}.legal-page .legal-kicker{letter-spacing:.06em;text-transform:uppercase;color:var(--amber-dark);margin-bottom:10px;font-size:12px;font-weight:600}.legal-page h1{color:var(--ink-2);margin:0 0 12px;font-size:clamp(32px,4vw,44px);font-weight:700;line-height:1.15}.legal-page .legal-updated{color:var(--text-dim);margin:0 0 36px;font-size:14px}.legal-page .legal-intro{color:#565b78;max-width:720px;margin:0 0 40px;font-size:17px;line-height:1.65}.legal-page .legal-content{flex-direction:column;gap:15px;max-width:720px;display:flex}.legal-page .legal-content section{padding:15px 0}.legal-page .legal-content section h2{color:var(--ink-2);margin:0 0 12px;font-size:22px;font-weight:700;line-height:1.25}.legal-page .legal-content section h3{color:var(--ink);margin:18px 0 8px;font-size:17px;font-weight:600}.legal-page .legal-content p,.legal-page .legal-content li{color:#3d425c;font-size:15px;line-height:1.65}.legal-page .legal-content p{margin:0 0 12px}.legal-page .legal-content p:last-child{margin-bottom:0}.legal-page .legal-content ul{margin:0 0 12px;padding-left:1.25em}.legal-page .legal-content li{margin-bottom:8px}.legal-page .legal-content a{color:var(--amber-dark);text-underline-offset:2px;text-decoration:underline}.legal-page .legal-content a:hover{color:var(--ink)}@media (max-width:640px){.legal-page{padding:32px 0 56px}.legal-page .legal-content{gap:28px}}
|
||||
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 235 KiB |
|
After Width: | Height: | Size: 238 KiB |
|
After Width: | Height: | Size: 228 KiB |
|
After Width: | Height: | Size: 172 KiB |
|
After Width: | Height: | Size: 325 KiB |
|
After Width: | Height: | Size: 281 KiB |
|
After Width: | Height: | Size: 355 KiB |
|
After Width: | Height: | Size: 230 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 126 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 452 KiB |
|
After Width: | Height: | Size: 278 KiB |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 270 KiB |
|
After Width: | Height: | Size: 292 KiB |
|
After Width: | Height: | Size: 336 KiB |
|
After Width: | Height: | Size: 214 KiB |
|
After Width: | Height: | Size: 295 KiB |
|
After Width: | Height: | Size: 302 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 240 KiB |
|
After Width: | Height: | Size: 302 KiB |
|
|
@ -0,0 +1,326 @@
|
|||
(() => {
|
||||
const CONVERSATION = [
|
||||
{
|
||||
a: "Can I register at the venue, or do I need to have registered online?",
|
||||
b: "Walk-in registration is open today! Just bring a valid photo ID and we'll get you set up in minutes.",
|
||||
},
|
||||
{
|
||||
a: "What if I don't have a confirmation email?",
|
||||
b: "No problem — we can look you up by name at the counter.",
|
||||
},
|
||||
{
|
||||
a: "Where's the registration counter?",
|
||||
b: "North Atrium, ground floor — straight ahead from the main entrance, past the coffee stand.",
|
||||
},
|
||||
{
|
||||
a: "How far is that from the main entrance?",
|
||||
b: "About a 2-minute walk — signs are posted the whole way.",
|
||||
},
|
||||
{
|
||||
a: "Is there parking nearby?",
|
||||
b: "Yes, Lot B is right outside — free for attendees.",
|
||||
},
|
||||
{
|
||||
a: "Perfect, thank you!",
|
||||
b: "Anytime! Enjoy the event 🎉",
|
||||
},
|
||||
];
|
||||
|
||||
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
||||
|
||||
function initChatDemo() {
|
||||
const widget = document.querySelector(".chat-widget");
|
||||
if (!widget || !window.gsap) return;
|
||||
|
||||
const messages = widget.querySelector(".chat-messages");
|
||||
const textarea = widget.querySelector(".chat-input-bar textarea");
|
||||
const sendBtn = widget.querySelector(".send-btn");
|
||||
const status = widget.querySelector(".chat-header .status");
|
||||
if (!messages || !textarea || !sendBtn || !status) return;
|
||||
|
||||
// Normalize avatar defs ids
|
||||
const defs = widget.querySelector(".avatar-defs");
|
||||
let avatarId = "demo";
|
||||
if (defs) {
|
||||
const groups = defs.querySelectorAll("g[id]");
|
||||
groups.forEach((g) => {
|
||||
if (g.id.startsWith("avatar-a")) g.id = "avatar-a-demo";
|
||||
if (g.id.startsWith("avatar-b")) g.id = "avatar-b-demo";
|
||||
});
|
||||
}
|
||||
|
||||
let stopped = false;
|
||||
const timelines = [];
|
||||
|
||||
const track = (tl) => {
|
||||
timelines.push(tl);
|
||||
tl.eventCallback("onComplete", () => {
|
||||
const i = timelines.indexOf(tl);
|
||||
if (i >= 0) timelines.splice(i, 1);
|
||||
});
|
||||
return tl;
|
||||
};
|
||||
|
||||
const scrollBottom = () => {
|
||||
messages.scrollTop = messages.scrollHeight;
|
||||
};
|
||||
|
||||
const avatarSvg = (who) =>
|
||||
`<svg class="avatar" viewBox="0 0 40 40"><use href="#avatar-${who}-demo"></use></svg>`;
|
||||
|
||||
const resizeInput = () => {
|
||||
textarea.style.height = "auto";
|
||||
textarea.style.height = `${textarea.scrollHeight}px`;
|
||||
};
|
||||
|
||||
const typeIntoInput = (text, speed = 45) =>
|
||||
new Promise((resolve) => {
|
||||
textarea.value = "";
|
||||
resizeInput();
|
||||
let i = 0;
|
||||
const id = setInterval(() => {
|
||||
if (stopped) {
|
||||
clearInterval(id);
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
textarea.value += text[i];
|
||||
resizeInput();
|
||||
i += 1;
|
||||
if (i >= text.length) {
|
||||
clearInterval(id);
|
||||
resolve();
|
||||
}
|
||||
}, speed);
|
||||
});
|
||||
|
||||
const addMessage = (who, text) => {
|
||||
const row = document.createElement("div");
|
||||
row.className = `msg-row from-${who}`;
|
||||
row.innerHTML = `${avatarSvg(who)}<div class="bubble">${text}</div>`;
|
||||
messages.appendChild(row);
|
||||
scrollBottom();
|
||||
window.gsap.fromTo(
|
||||
row,
|
||||
{ opacity: 0, y: 12, scale: 0.96 },
|
||||
{ opacity: 1, y: 0, scale: 1, duration: 0.35, ease: "back.out(1.6)" }
|
||||
);
|
||||
};
|
||||
|
||||
const showTyping = (who) => {
|
||||
const row = document.createElement("div");
|
||||
row.className = `msg-row from-${who} typing-row`;
|
||||
row.innerHTML = `${avatarSvg(who)}<div class="bubble"><span class="dot"></span><span class="dot"></span><span class="dot"></span></div>`;
|
||||
messages.appendChild(row);
|
||||
scrollBottom();
|
||||
window.gsap.fromTo(row, { opacity: 0 }, { opacity: 1, duration: 0.2 });
|
||||
const dots = row.querySelectorAll(".dot");
|
||||
const tl = track(window.gsap.timeline({ repeat: -1 }));
|
||||
tl.to(dots, {
|
||||
y: -5,
|
||||
duration: 0.28,
|
||||
stagger: 0.12,
|
||||
ease: "sine.inOut",
|
||||
yoyo: true,
|
||||
repeat: 1,
|
||||
}).to({}, { duration: 0.15 });
|
||||
return {
|
||||
remove: () => {
|
||||
tl.kill();
|
||||
const i = timelines.indexOf(tl);
|
||||
if (i >= 0) timelines.splice(i, 1);
|
||||
window.gsap.to(row, {
|
||||
opacity: 0,
|
||||
duration: 0.15,
|
||||
onComplete: () => row.remove(),
|
||||
});
|
||||
},
|
||||
};
|
||||
};
|
||||
|
||||
const pressSend = () =>
|
||||
track(
|
||||
window.gsap
|
||||
.timeline()
|
||||
.to(sendBtn, { scale: 0.85, duration: 0.09, ease: "power1.out" })
|
||||
.to(sendBtn, { scale: 1, duration: 0.18, ease: "back.out(3)" })
|
||||
);
|
||||
|
||||
(async () => {
|
||||
while (!stopped) {
|
||||
messages.innerHTML = "";
|
||||
textarea.value = "";
|
||||
textarea.style.height = "auto";
|
||||
status.textContent = "online";
|
||||
|
||||
for (const turn of CONVERSATION) {
|
||||
if (stopped) return;
|
||||
await typeIntoInput(turn.a);
|
||||
if (stopped) return;
|
||||
await sleep(400);
|
||||
if (stopped) return;
|
||||
pressSend();
|
||||
await sleep(150);
|
||||
if (stopped) return;
|
||||
textarea.value = "";
|
||||
textarea.style.height = "auto";
|
||||
addMessage("a", turn.a);
|
||||
await sleep(300);
|
||||
if (stopped) return;
|
||||
|
||||
status.textContent = "typing…";
|
||||
const typing = showTyping("b");
|
||||
await sleep(1300 + 400 * Math.random());
|
||||
if (stopped) {
|
||||
typing.remove();
|
||||
return;
|
||||
}
|
||||
typing.remove();
|
||||
await sleep(200);
|
||||
if (stopped) return;
|
||||
status.textContent = "online";
|
||||
addMessage("b", turn.b);
|
||||
await sleep(900);
|
||||
}
|
||||
await sleep(1600);
|
||||
}
|
||||
})();
|
||||
|
||||
window.addEventListener(
|
||||
"pagehide",
|
||||
() => {
|
||||
stopped = true;
|
||||
timelines.forEach((tl) => tl.kill());
|
||||
window.gsap.killTweensOf([sendBtn, messages]);
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
}
|
||||
|
||||
function initFlowDiagram() {
|
||||
const root = document.querySelector(".eb-flow-v3");
|
||||
if (!root || !window.gsap) return;
|
||||
|
||||
const beamLength = 80;
|
||||
const prepare = (selector) => {
|
||||
const path = root.querySelector(selector);
|
||||
if (!path) return null;
|
||||
const totalLength = path.getTotalLength();
|
||||
window.gsap.set(path, {
|
||||
strokeDasharray: `${beamLength} ${totalLength + beamLength}`,
|
||||
strokeDashoffset: beamLength,
|
||||
opacity: 0,
|
||||
});
|
||||
return { path, totalLength, beamLength };
|
||||
};
|
||||
|
||||
const paths = {
|
||||
step1_1: prepare("#glow-input-to-ai"),
|
||||
step1_2: prepare("#glow-ai-to-middle"),
|
||||
revReg: prepare("#glow-register-to-middle"),
|
||||
revAge: prepare("#glow-agenda-to-middle"),
|
||||
revChk: prepare("#glow-check-in-to-middle"),
|
||||
revEng: prepare("#glow-engagement-to-middle"),
|
||||
middleToAi: prepare("#glow-middle-to-ai"),
|
||||
aiToInput: prepare("#glow-ai-to-input"),
|
||||
};
|
||||
|
||||
if (Object.values(paths).some((p) => !p)) return;
|
||||
|
||||
const animatePath = (item, duration = 1) =>
|
||||
window.gsap
|
||||
.timeline()
|
||||
.set(item.path, { opacity: 1, strokeDashoffset: item.beamLength })
|
||||
.to(item.path, {
|
||||
strokeDashoffset: -item.totalLength,
|
||||
duration,
|
||||
ease: "power1.inOut",
|
||||
})
|
||||
.set(item.path, { opacity: 0 });
|
||||
|
||||
const glowBoxes = (selectors, hold = 0.4, cls = "box-glow") => {
|
||||
const els = (Array.isArray(selectors) ? selectors : [selectors])
|
||||
.map((s) => root.querySelector(s))
|
||||
.filter(Boolean);
|
||||
return window.gsap
|
||||
.timeline()
|
||||
.to(els, {
|
||||
onStart: () => els.forEach((el) => el.classList.add(cls)),
|
||||
duration: 0.1,
|
||||
})
|
||||
.to({}, { duration: hold })
|
||||
.to(els, {
|
||||
onComplete: () => els.forEach((el) => el.classList.remove(cls)),
|
||||
duration: 0.4,
|
||||
});
|
||||
};
|
||||
|
||||
const phone = root.querySelector("#phone");
|
||||
if (!phone) return;
|
||||
|
||||
const middleBoxes = [
|
||||
"#middle-container",
|
||||
"#intelligence-box",
|
||||
"#context-box",
|
||||
"#intent-box",
|
||||
];
|
||||
|
||||
const tl = window.gsap.timeline({ repeat: -1, repeatDelay: 0.5 });
|
||||
tl.to(phone, {
|
||||
onStart: () => phone.classList.add("phone-glow-orange"),
|
||||
duration: 0.1,
|
||||
})
|
||||
.to({}, { duration: 0.4 })
|
||||
.to(phone, {
|
||||
onStart: () => phone.classList.remove("phone-glow-orange"),
|
||||
duration: 0.4,
|
||||
})
|
||||
.add(animatePath(paths.step1_1, 1.2), "-=0.2")
|
||||
.add(glowBoxes("#eventbuzz-ai-box", 0.5), "-=0.2")
|
||||
.add(animatePath(paths.step1_2, 1), "-=0.3")
|
||||
.add(glowBoxes(middleBoxes, 0.5), "-=0.2")
|
||||
.add(glowBoxes("#register-box", 0.3, "box-glow-green"))
|
||||
.add(animatePath(paths.revReg, 0.9), "-=0.2")
|
||||
.add(glowBoxes("#agenda-box", 0.3, "box-glow-green"))
|
||||
.add(animatePath(paths.revAge, 0.9), "-=0.2")
|
||||
.add(glowBoxes("#check-in-box", 0.3, "box-glow-green"))
|
||||
.add(animatePath(paths.revChk, 0.9), "-=0.2")
|
||||
.add(glowBoxes("#engagement-box", 0.3, "box-glow-green"))
|
||||
.add(animatePath(paths.revEng, 0.9), "-=0.2")
|
||||
.add(glowBoxes(middleBoxes, 0.5, "box-glow-green"), "-=0.2")
|
||||
.add(animatePath(paths.middleToAi, 0.8))
|
||||
.add(glowBoxes("#eventbuzz-ai-box", 0.5, "box-glow-green"), "-=0.2")
|
||||
.add(animatePath(paths.aiToInput, 1))
|
||||
.to(
|
||||
phone,
|
||||
{
|
||||
onStart: () => phone.classList.add("phone-glow-green"),
|
||||
duration: 0.1,
|
||||
},
|
||||
"-=0.1"
|
||||
)
|
||||
.to({}, { duration: 2.5 })
|
||||
.to(phone, {
|
||||
onStart: () => phone.classList.remove("phone-glow-green"),
|
||||
duration: 0.4,
|
||||
});
|
||||
|
||||
window.addEventListener(
|
||||
"pagehide",
|
||||
() => {
|
||||
tl.kill();
|
||||
window.gsap.killTweensOf(root.querySelectorAll("path, rect, g"));
|
||||
phone.classList.remove("phone-glow-orange", "phone-glow-green");
|
||||
root
|
||||
.querySelectorAll(".box-glow, .box-glow-green")
|
||||
.forEach((el) => el.classList.remove("box-glow", "box-glow-green"));
|
||||
},
|
||||
{ once: true }
|
||||
);
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
initChatDemo();
|
||||
initFlowDiagram();
|
||||
});
|
||||
})();
|
||||
|
|
@ -0,0 +1,549 @@
|
|||
(() => {
|
||||
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
||||
const MOBILE_RE = /^\d{10,15}$/;
|
||||
|
||||
function resolveApiBase() {
|
||||
if (window.EVENTBUZZ_API_BASE) {
|
||||
return String(window.EVENTBUZZ_API_BASE).replace(/\/$/, "");
|
||||
}
|
||||
const host = window.location.hostname;
|
||||
if (host === "localhost" || host === "127.0.0.1") {
|
||||
return "http://localhost:3001/api";
|
||||
}
|
||||
return "https://api.eventbuzz.live/api";
|
||||
}
|
||||
|
||||
const API_BASE = resolveApiBase();
|
||||
|
||||
/* ---------- Mobile nav drawer ---------- */
|
||||
function initNav() {
|
||||
const nav = document.querySelector("nav");
|
||||
const menuBtn = document.querySelector(".nav-menu-btn");
|
||||
if (!nav || !menuBtn) return;
|
||||
|
||||
const mq = window.matchMedia("(max-width: 900px)");
|
||||
let drawerOpen = false;
|
||||
let drawerEls = null;
|
||||
|
||||
const links = Array.from(
|
||||
document.querySelectorAll(".navlinks-desktop a")
|
||||
).map((a) => ({
|
||||
href: a.getAttribute("href") || "#",
|
||||
label: a.textContent.trim(),
|
||||
target: a.getAttribute("target") || null,
|
||||
}));
|
||||
|
||||
function syncDrawerMode() {
|
||||
nav.classList.toggle("is-drawer-mode", mq.matches);
|
||||
if (!mq.matches) closeDrawer(true);
|
||||
}
|
||||
|
||||
function ensureDrawer() {
|
||||
if (drawerEls) return drawerEls;
|
||||
|
||||
const overlay = document.createElement("div");
|
||||
overlay.className = "nav-drawer-overlay";
|
||||
overlay.setAttribute("role", "presentation");
|
||||
|
||||
const aside = document.createElement("aside");
|
||||
aside.className = "nav-drawer";
|
||||
aside.id = "nav-drawer";
|
||||
aside.setAttribute("role", "dialog");
|
||||
aside.setAttribute("aria-modal", "true");
|
||||
aside.setAttribute("aria-label", "Navigation menu");
|
||||
|
||||
aside.innerHTML = `
|
||||
<div class="nav-drawer-head">
|
||||
<span class="nav-drawer-title">Menu</span>
|
||||
<button type="button" class="nav-drawer-close" aria-label="Close menu">
|
||||
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="22" width="22" xmlns="http://www.w3.org/2000/svg"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
<div class="nav-drawer-links">
|
||||
${links
|
||||
.map((l) => {
|
||||
const extra = l.target
|
||||
? ` target="${l.target}" rel="noopener noreferrer"`
|
||||
: "";
|
||||
return `<a href="${l.href}"${extra}>${l.label}</a>`;
|
||||
})
|
||||
.join("")}
|
||||
</div>
|
||||
<a href="#cta" class="btn btn-primary nav-drawer-cta" data-demo-open="true">Request demo</a>
|
||||
`;
|
||||
|
||||
overlay.appendChild(aside);
|
||||
document.body.appendChild(overlay);
|
||||
|
||||
overlay.addEventListener("click", (e) => {
|
||||
if (e.target === overlay) closeDrawer();
|
||||
});
|
||||
aside
|
||||
.querySelector(".nav-drawer-close")
|
||||
?.addEventListener("click", () => closeDrawer());
|
||||
aside.querySelectorAll("a").forEach((a) => {
|
||||
a.addEventListener("click", () => closeDrawer());
|
||||
});
|
||||
|
||||
drawerEls = { overlay, aside };
|
||||
return drawerEls;
|
||||
}
|
||||
|
||||
function openDrawer() {
|
||||
const { overlay, aside } = ensureDrawer();
|
||||
drawerOpen = true;
|
||||
menuBtn.setAttribute("aria-expanded", "true");
|
||||
menuBtn.setAttribute("aria-label", "Close menu");
|
||||
requestAnimationFrame(() => {
|
||||
overlay.classList.add("is-open");
|
||||
aside.classList.add("is-open");
|
||||
});
|
||||
document.body.style.overflow = "hidden";
|
||||
}
|
||||
|
||||
function closeDrawer(instant) {
|
||||
if (!drawerEls) return;
|
||||
drawerOpen = false;
|
||||
menuBtn.setAttribute("aria-expanded", "false");
|
||||
menuBtn.setAttribute("aria-label", "Open menu");
|
||||
drawerEls.overlay.classList.remove("is-open");
|
||||
drawerEls.aside.classList.remove("is-open");
|
||||
document.body.style.overflow = "";
|
||||
if (instant) {
|
||||
drawerEls.overlay.style.transition = "none";
|
||||
drawerEls.aside.style.transition = "none";
|
||||
requestAnimationFrame(() => {
|
||||
drawerEls.overlay.style.transition = "";
|
||||
drawerEls.aside.style.transition = "";
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
menuBtn.addEventListener("click", () => {
|
||||
if (drawerOpen) closeDrawer();
|
||||
else openDrawer();
|
||||
});
|
||||
|
||||
document.addEventListener("keydown", (e) => {
|
||||
if (e.key === "Escape" && drawerOpen) closeDrawer();
|
||||
});
|
||||
|
||||
syncDrawerMode();
|
||||
mq.addEventListener("change", syncDrawerMode);
|
||||
}
|
||||
|
||||
/* ---------- Demo modal ---------- */
|
||||
function validateDemo(data) {
|
||||
const errors = {};
|
||||
const name = (data.name || "").trim();
|
||||
const mobile = (data.mobile || "").trim();
|
||||
const email = (data.email || "").trim();
|
||||
const message = (data.message || "").trim();
|
||||
const captchaAnswer = (data.captchaAnswer || "").trim();
|
||||
|
||||
if (!name) errors.name = "Full name is required.";
|
||||
if (!mobile) errors.mobile = "Mobile is required.";
|
||||
else {
|
||||
const digits = mobile.replace(/[\s\-().]/g, "");
|
||||
if (!MOBILE_RE.test(digits)) {
|
||||
errors.mobile = "Enter a valid mobile number (10-15 digits).";
|
||||
}
|
||||
}
|
||||
if (!email) errors.email = "Email is required.";
|
||||
else if (!EMAIL_RE.test(email)) {
|
||||
errors.email = "Enter a valid email address.";
|
||||
}
|
||||
if (!message) errors.message = "Message is required.";
|
||||
if (!captchaAnswer) errors.captcha = "Please solve the captcha.";
|
||||
|
||||
return {
|
||||
ok: Object.keys(errors).length === 0,
|
||||
errors,
|
||||
data: {
|
||||
name,
|
||||
mobile: mobile.replace(/[\s\-().]/g, ""),
|
||||
email,
|
||||
message,
|
||||
captchaAnswer,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
function initDemoModal() {
|
||||
let overlay = null;
|
||||
let open = false;
|
||||
let success = false;
|
||||
let captchaToken = "";
|
||||
let captchaLoading = false;
|
||||
let submitting = false;
|
||||
|
||||
async function loadCaptcha() {
|
||||
if (!overlay) return;
|
||||
const questionEl = overlay.querySelector("[data-demo-captcha-question]");
|
||||
const answerEl = overlay.querySelector('[name="captchaAnswer"]');
|
||||
const reloadBtn = overlay.querySelector("[data-demo-captcha-reload]");
|
||||
if (!questionEl) return;
|
||||
|
||||
captchaLoading = true;
|
||||
questionEl.textContent = "Loading…";
|
||||
if (answerEl) answerEl.value = "";
|
||||
if (reloadBtn) reloadBtn.disabled = true;
|
||||
|
||||
try {
|
||||
const res = await fetch(`${API_BASE}/public/captcha/challenge`, {
|
||||
cache: "no-store",
|
||||
});
|
||||
const body = await res.json();
|
||||
if (!res.ok || !body?.success || !body?.data?.captchaToken) {
|
||||
throw new Error(body?.error?.message || "Captcha unavailable");
|
||||
}
|
||||
captchaToken = body.data.captchaToken;
|
||||
questionEl.textContent = body.data.question || "Solve the sum";
|
||||
} catch {
|
||||
captchaToken = "";
|
||||
questionEl.textContent = "Unavailable — tap reload";
|
||||
} finally {
|
||||
captchaLoading = false;
|
||||
if (reloadBtn) reloadBtn.disabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
function setFieldError(form, key, message) {
|
||||
const inputName = key === "captcha" ? "captchaAnswer" : key;
|
||||
const errId = key === "captchaAnswer" || key === "captcha" ? "demo-captcha-err" : `demo-${key}-err`;
|
||||
const field = form.querySelector(`[name="${inputName}"]`)?.closest(".demo-field");
|
||||
const errEl = document.getElementById(errId);
|
||||
const input = form.querySelector(`[name="${inputName}"]`);
|
||||
if (message) {
|
||||
field?.classList.add("has-error");
|
||||
if (errEl) {
|
||||
errEl.hidden = false;
|
||||
errEl.textContent = message;
|
||||
}
|
||||
input?.setAttribute("aria-invalid", "true");
|
||||
} else {
|
||||
field?.classList.remove("has-error");
|
||||
if (errEl) {
|
||||
errEl.hidden = true;
|
||||
errEl.textContent = "";
|
||||
}
|
||||
input?.removeAttribute("aria-invalid");
|
||||
}
|
||||
}
|
||||
|
||||
function build() {
|
||||
if (overlay) return overlay;
|
||||
|
||||
overlay = document.createElement("div");
|
||||
overlay.className = "demo-modal-overlay";
|
||||
overlay.setAttribute("role", "presentation");
|
||||
overlay.innerHTML = `
|
||||
<div class="demo-modal" role="dialog" aria-modal="true" aria-labelledby="demo-modal-title">
|
||||
<button type="button" class="demo-modal-close" aria-label="Close">×</button>
|
||||
<div class="demo-modal-form-view">
|
||||
<div class="demo-modal-head">
|
||||
<h2 id="demo-modal-title">Request a demo</h2>
|
||||
<p>Tell us a bit about your event and we’ll get back to you.</p>
|
||||
</div>
|
||||
<form class="demo-modal-form" novalidate>
|
||||
<div class="demo-field">
|
||||
<span>Name</span>
|
||||
<input id="demo-name" name="name" type="text" autocomplete="name" placeholder="Full name" required />
|
||||
<p class="demo-field-error" id="demo-name-err" hidden></p>
|
||||
</div>
|
||||
<div class="demo-field">
|
||||
<span>Mobile</span>
|
||||
<input id="demo-mobile" name="mobile" type="tel" autocomplete="tel" placeholder="Mobile number" required />
|
||||
<p class="demo-field-error" id="demo-mobile-err" hidden></p>
|
||||
</div>
|
||||
<div class="demo-field">
|
||||
<span>Email</span>
|
||||
<input id="demo-email" name="email" type="email" autocomplete="email" placeholder="Work email" required />
|
||||
<p class="demo-field-error" id="demo-email-err" hidden></p>
|
||||
</div>
|
||||
<div class="demo-field">
|
||||
<span>Message</span>
|
||||
<textarea id="demo-message" name="message" rows="4" placeholder="Tell us about your event" required></textarea>
|
||||
<p class="demo-field-error" id="demo-message-err" hidden></p>
|
||||
</div>
|
||||
<div class="demo-field demo-captcha-field">
|
||||
<span>Security check</span>
|
||||
<div class="demo-captcha-row">
|
||||
<span class="demo-captcha-question" data-demo-captcha-question aria-live="polite">Loading…</span>
|
||||
<input
|
||||
id="demo-captcha"
|
||||
name="captchaAnswer"
|
||||
type="text"
|
||||
inputmode="numeric"
|
||||
autocomplete="off"
|
||||
placeholder="Answer"
|
||||
required
|
||||
/>
|
||||
<button type="button" class="demo-captcha-reload" data-demo-captcha-reload aria-label="Reload captcha">↻</button>
|
||||
</div>
|
||||
<p class="demo-field-error" id="demo-captcha-err" hidden></p>
|
||||
</div>
|
||||
<p class="demo-form-error" hidden></p>
|
||||
<div class="demo-modal-actions">
|
||||
<button type="submit" class="btn btn-primary demo-submit-btn">Request demo</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="demo-modal-success" hidden>
|
||||
<h2>Thanks — we'll be in touch</h2>
|
||||
<p>Your demo request was received. Our team will reach out shortly.</p>
|
||||
<div class="demo-modal-actions">
|
||||
<button type="button" class="btn btn-primary demo-success-close">Close</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
document.body.appendChild(overlay);
|
||||
|
||||
overlay.addEventListener("click", (e) => {
|
||||
if (e.target === overlay) close();
|
||||
});
|
||||
overlay
|
||||
.querySelector(".demo-modal-close")
|
||||
?.addEventListener("click", close);
|
||||
overlay
|
||||
.querySelector(".demo-success-close")
|
||||
?.addEventListener("click", close);
|
||||
overlay
|
||||
.querySelector("[data-demo-captcha-reload]")
|
||||
?.addEventListener("click", () => {
|
||||
void loadCaptcha();
|
||||
});
|
||||
|
||||
const form = overlay.querySelector(".demo-modal-form");
|
||||
form.addEventListener("submit", async (e) => {
|
||||
e.preventDefault();
|
||||
if (submitting || captchaLoading) return;
|
||||
|
||||
const fd = new FormData(form);
|
||||
const result = validateDemo({
|
||||
name: fd.get("name"),
|
||||
mobile: fd.get("mobile"),
|
||||
email: fd.get("email"),
|
||||
message: fd.get("message"),
|
||||
captchaAnswer: fd.get("captchaAnswer"),
|
||||
});
|
||||
|
||||
["name", "mobile", "email", "message", "captchaAnswer"].forEach((key) => {
|
||||
const errKey = key === "captchaAnswer" ? "captcha" : key;
|
||||
setFieldError(form, key, result.errors[errKey] || "");
|
||||
});
|
||||
|
||||
const formErr = overlay.querySelector(".demo-form-error");
|
||||
if (formErr) {
|
||||
formErr.hidden = true;
|
||||
formErr.textContent = "";
|
||||
}
|
||||
|
||||
if (!result.ok) {
|
||||
const first =
|
||||
["name", "mobile", "email", "message", "captcha"].find(
|
||||
(k) => result.errors[k]
|
||||
) || "name";
|
||||
const focusName = first === "captcha" ? "captchaAnswer" : first;
|
||||
form.querySelector(`[name="${focusName}"]`)?.focus();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!captchaToken) {
|
||||
setFieldError(
|
||||
form,
|
||||
"captchaAnswer",
|
||||
"Captcha is not ready. Please reload and try again."
|
||||
);
|
||||
void loadCaptcha();
|
||||
return;
|
||||
}
|
||||
|
||||
const submitBtn = overlay.querySelector(".demo-submit-btn");
|
||||
submitting = true;
|
||||
if (submitBtn) {
|
||||
submitBtn.disabled = true;
|
||||
submitBtn.textContent = "Sending…";
|
||||
}
|
||||
|
||||
try {
|
||||
const res = await fetch(`${API_BASE}/public/demo-request`, {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({
|
||||
name: result.data.name,
|
||||
mobile: result.data.mobile,
|
||||
email: result.data.email,
|
||||
message: result.data.message,
|
||||
captchaToken,
|
||||
captchaAnswer: result.data.captchaAnswer,
|
||||
}),
|
||||
});
|
||||
let body = null;
|
||||
try {
|
||||
body = await res.json();
|
||||
} catch {
|
||||
body = null;
|
||||
}
|
||||
|
||||
if (!res.ok || !body?.success) {
|
||||
const msg =
|
||||
body?.error?.message ||
|
||||
"Could not send your request. Please try again.";
|
||||
if (/captcha/i.test(msg)) {
|
||||
setFieldError(form, "captchaAnswer", msg);
|
||||
void loadCaptcha();
|
||||
} else if (formErr) {
|
||||
formErr.hidden = false;
|
||||
formErr.textContent = msg;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
showSuccess();
|
||||
} catch {
|
||||
if (formErr) {
|
||||
formErr.hidden = false;
|
||||
formErr.textContent =
|
||||
"Could not reach the server. Please try again in a moment.";
|
||||
}
|
||||
} finally {
|
||||
submitting = false;
|
||||
if (submitBtn) {
|
||||
submitBtn.disabled = false;
|
||||
submitBtn.textContent = "Request demo";
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return overlay;
|
||||
}
|
||||
|
||||
function showSuccess() {
|
||||
success = true;
|
||||
const formView = overlay.querySelector(".demo-modal-form-view");
|
||||
const successView = overlay.querySelector(".demo-modal-success");
|
||||
if (formView) formView.hidden = true;
|
||||
if (successView) successView.hidden = false;
|
||||
}
|
||||
|
||||
function reset() {
|
||||
success = false;
|
||||
captchaToken = "";
|
||||
const form = overlay?.querySelector(".demo-modal-form");
|
||||
form?.reset();
|
||||
overlay?.querySelectorAll(".demo-field-error").forEach((el) => {
|
||||
el.hidden = true;
|
||||
el.textContent = "";
|
||||
});
|
||||
overlay?.querySelectorAll(".demo-field").forEach((el) => {
|
||||
el.classList.remove("has-error");
|
||||
});
|
||||
const formErr = overlay?.querySelector(".demo-form-error");
|
||||
if (formErr) {
|
||||
formErr.hidden = true;
|
||||
formErr.textContent = "";
|
||||
}
|
||||
const formView = overlay?.querySelector(".demo-modal-form-view");
|
||||
const successView = overlay?.querySelector(".demo-modal-success");
|
||||
if (formView) formView.hidden = false;
|
||||
if (successView) successView.hidden = true;
|
||||
void loadCaptcha();
|
||||
}
|
||||
|
||||
function openModal() {
|
||||
const el = build();
|
||||
if (!open) reset();
|
||||
else if (!captchaToken) void loadCaptcha();
|
||||
open = true;
|
||||
document.body.style.overflow = "hidden";
|
||||
requestAnimationFrame(() => {
|
||||
el.classList.add("is-open");
|
||||
el.querySelector(".demo-modal")?.classList.add("is-open");
|
||||
if (!success) {
|
||||
el.querySelector('[name="name"]')?.focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function close() {
|
||||
if (!overlay) return;
|
||||
open = false;
|
||||
overlay.classList.remove("is-open");
|
||||
overlay.querySelector(".demo-modal")?.classList.remove("is-open");
|
||||
document.body.style.overflow = "";
|
||||
}
|
||||
|
||||
document.addEventListener("click", (e) => {
|
||||
const trigger = e.target.closest("[data-demo-open]");
|
||||
if (!trigger) return;
|
||||
e.preventDefault();
|
||||
openModal();
|
||||
});
|
||||
|
||||
document.addEventListener("keydown", (e) => {
|
||||
if (e.key === "Escape" && open) close();
|
||||
});
|
||||
}
|
||||
|
||||
/* ---------- Scroll reveals (GSAP ScrollTrigger when available) ---------- */
|
||||
function initReveals() {
|
||||
const nodes = document.querySelectorAll(".reveal");
|
||||
if (!nodes.length) return;
|
||||
|
||||
if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (window.gsap && window.ScrollTrigger) {
|
||||
window.gsap.registerPlugin(window.ScrollTrigger);
|
||||
nodes.forEach((el) => {
|
||||
const y = Number(el.dataset.revealY ?? 28);
|
||||
const duration = Number(el.dataset.revealDuration ?? 0.7);
|
||||
const delay = Number(el.dataset.revealDelay ?? 0);
|
||||
window.gsap.set(el, { opacity: 0, y, willChange: "opacity, transform" });
|
||||
window.gsap.to(el, {
|
||||
opacity: 1,
|
||||
y: 0,
|
||||
duration,
|
||||
delay,
|
||||
ease: "power2.out",
|
||||
scrollTrigger: {
|
||||
trigger: el,
|
||||
start: "top 88%",
|
||||
end: "bottom top",
|
||||
toggleActions: "play reverse play reverse",
|
||||
},
|
||||
});
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// Fallback without GSAP
|
||||
const io = new IntersectionObserver(
|
||||
(entries) => {
|
||||
entries.forEach((entry) => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.style.opacity = "1";
|
||||
entry.target.style.transform = "none";
|
||||
}
|
||||
});
|
||||
},
|
||||
{ threshold: 0.12, rootMargin: "0px 0px -12% 0px" }
|
||||
);
|
||||
nodes.forEach((el) => {
|
||||
el.style.opacity = "0";
|
||||
el.style.transform = "translateY(28px)";
|
||||
el.style.transition = "opacity .7s ease, transform .7s ease";
|
||||
io.observe(el);
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
initNav();
|
||||
initDemoModal();
|
||||
initReveals();
|
||||
});
|
||||
})();
|
||||
|
|
@ -0,0 +1,143 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="space_grotesk_25f324d0-module___WK4EG__variable inter_3d9c7ff2-module__6cOLqa__variable ibm_plex_mono_a3877f56-module__sxIMvq__variable">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="preload" href="/fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="/fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" as="image" href="/images/eventbuzz-logo.png" />
|
||||
<link rel="stylesheet" href="/css/site.css" />
|
||||
<link rel="stylesheet" href="/css/legal.css" />
|
||||
<title>Privacy Policy — EventBuzz Live</title>
|
||||
<meta name="description" content="How EventBuzz Live, a product of Stratawiz Technologies, collects, uses, and protects your personal information." />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<div class="wrap navrow">
|
||||
<a href="/" class="logo">
|
||||
<img alt="EventBuzz" width="160" height="36" decoding="async" src="/images/eventbuzz-logo.png"/></a>
|
||||
<div class="navlinks navlinks-desktop">
|
||||
<a href="/#platform">Platform</a>
|
||||
<a href="/#concierge">AI Concierge</a>
|
||||
<a href="/#event-engagement">Engagement</a>
|
||||
<a href="/#pricing">Pricing</a>
|
||||
<a href="/#proof">Customer stories</a>
|
||||
</div>
|
||||
<a href="#cta" class="btn btn-primary nav-demo-desktop" data-demo-open="true">Request demo</a>
|
||||
<button type="button" class="nav-menu-btn" aria-label="Open menu" aria-expanded="false" aria-controls="nav-drawer">
|
||||
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="22" width="22" xmlns="http://www.w3.org/2000/svg"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
<a class="join-event-fab" href="https://join.eventbuzz.live" target="_blank" rel="noopener noreferrer"><span>Join Your Event</span></a>
|
||||
<main class="legal-page">
|
||||
<div class="wrap">
|
||||
<a href="/" class="legal-back">← Back to home</a>
|
||||
<div class="legal-kicker">Legal</div>
|
||||
<h1>Privacy Policy</h1>
|
||||
<p class="legal-updated">Last updated: 4 August 2026</p>
|
||||
<p class="legal-intro">EventBuzz Live (“EventBuzz”, “we”, “us”, or “our”) is a product of Stratawiz Technologies Pvt. Ltd. (“Stratawiz”). This Privacy Policy explains how we collect, use, share, and protect information when you visit our website, request a demo, or use EventBuzz services (together, the “Services”). By using the Services, you accept the terms of this Privacy Policy.</p>
|
||||
<div class="legal-content">
|
||||
<section>
|
||||
<h2>1. Who we are</h2>
|
||||
<p>EventBuzz Live is operated by Stratawiz Technologies Pvt. Ltd., 1st Floor, D Block, Anantshilp Society, DSK Raanwaara Rd, Patil Nagar, Near Suryadatta College, Bavdhan, Pune, Maharashtra 411021, India.</p>
|
||||
<p>For privacy questions, contact us at <a href="mailto:support1@stratawiz.com">support1@stratawiz.com</a>.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>2. Information we collect</h2>
|
||||
<h3>Information you provide</h3>
|
||||
<ul>
|
||||
<li>Contact and account details such as name, email address, phone number, company, and role</li>
|
||||
<li>Messages and details you submit through forms (including demo requests)</li>
|
||||
<li>Event-related content you or your organisation upload or configure in the platform (for example agendas, sessions, and attendee information you choose to process through EventBuzz)</li>
|
||||
</ul>
|
||||
<h3>Information collected automatically</h3>
|
||||
<ul>
|
||||
<li>Device and log data such as IP address, browser type, pages visited, referring URL, and timestamps</li>
|
||||
<li>Usage data about how you interact with the website and Services</li>
|
||||
<li>Cookies and similar technologies used to keep sessions secure and improve the experience (see Cookies below)</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>3. How we use information</h2>
|
||||
<p>We use personal information to:</p>
|
||||
<ul>
|
||||
<li>Provide, operate, and improve EventBuzz and related Services</li>
|
||||
<li>Respond to demo requests, support questions, and other enquiries</li>
|
||||
<li>Create and secure accounts, authenticate users, and prevent fraud or abuse</li>
|
||||
<li>Send service-related notices (for example security, billing, or product updates)</li>
|
||||
<li>Send optional product news or marketing where permitted by law (you may opt out of marketing emails)</li>
|
||||
<li>Analyse usage to improve reliability, performance, and features</li>
|
||||
<li>Comply with legal obligations and enforce our terms</li>
|
||||
</ul>
|
||||
<p>We do not sell your personal information. We do not claim ownership of content you submit to run your events; we only use it as needed to operate the Services.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>4. Event and attendee data</h2>
|
||||
<p>When organisers use EventBuzz to run events, they may process attendee or participant data (for example registration details, engagement activity, or questions asked to the AI concierge). In those cases, the organiser is typically the data controller, and Stratawiz / EventBuzz processes that data on their behalf to deliver the platform.</p>
|
||||
<p>Organisers are responsible for providing appropriate notices to attendees and collecting any consents required for their use of EventBuzz.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>5. How we share information</h2>
|
||||
<p>We may share information with:</p>
|
||||
<ul>
|
||||
<li>Service providers who help us operate the Services (for example hosting, email delivery, analytics, or customer support tools), under appropriate confidentiality and security obligations</li>
|
||||
<li>Professional advisors, or authorities, when required by law, court order, or to protect rights, safety, and security</li>
|
||||
<li>A successor entity in connection with a merger, acquisition, or similar corporate transaction, subject to this Policy’s protections where applicable</li>
|
||||
</ul>
|
||||
<p>We do not share personal or contacts data with third parties for their own independent marketing, except as described in this Policy or with your direction.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>6. Cookies</h2>
|
||||
<p>We may use cookies and similar technologies to recognise your browser, maintain sessions, remember preferences, and understand how the site is used. You can block cookies in your browser settings; some features may not work correctly if cookies are disabled.</p>
|
||||
<p>Third-party tools linked from or embedded on our site may set their own cookies. Their use of information is governed by their own privacy policies.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>7. Retention</h2>
|
||||
<p>We retain personal information for as long as needed to provide the Services, fulfil the purposes described in this Policy, resolve disputes, and meet legal, accounting, or reporting requirements. Demo request and enquiry records may be kept for a reasonable period to follow up and improve our sales process.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>8. Security</h2>
|
||||
<p>We implement technical and organisational measures designed to protect personal information against accidental loss and unauthorised access, use, alteration, or disclosure. No method of transmission or storage is completely secure, and we cannot guarantee absolute security. You acknowledge that you provide information at your own risk to the extent permitted by law.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>9. Your choices and rights</h2>
|
||||
<p>Depending on applicable law, you may have rights to access, correct, update, or delete personal information we hold about you, or to object to or restrict certain processing. To make a request, email <a href="mailto:support1@stratawiz.com">support1@stratawiz.com</a>. We may need to verify your identity before responding.</p>
|
||||
<p>You may unsubscribe from marketing emails using the link in those messages. You cannot opt out of essential service or legal notices related to your account or use of the Services.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>10. International users</h2>
|
||||
<p>EventBuzz is operated from India. If you access the Services from another country, your information may be processed in India or other locations where we or our service providers operate.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>11. Children’s privacy</h2>
|
||||
<p>The Services are not directed to children under 16. We do not knowingly collect personal information from children. If you believe a child has provided us personal information, contact us and we will take appropriate steps to delete it.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>12. Changes to this Policy</h2>
|
||||
<p>We may update this Privacy Policy from time to time. The “Last updated” date at the top will change when we do. Continued use of the Services after changes are posted means you accept the updated Policy. Where required by law, we will provide additional notice.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>13. Contact</h2>
|
||||
<p>Questions about this Privacy Policy or our privacy practices:</p>
|
||||
<p>Stratawiz Technologies Pvt. Ltd.<br/>Email: <a href="mailto:support1@stratawiz.com">support1@stratawiz.com</a>
|
||||
<br/>Phone: <a href="tel:+919175891016">+91 91758 91016</a>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</div></main>
|
||||
<footer>
|
||||
<div class="wrap">
|
||||
<div class="fbottom" style="margin-top:0;border-top:none;padding-top:0"><span>© 2026 EventBuzz Live. Part of the <a href="https://stratawiz.com/" target="_blank" rel="noopener noreferrer">Stratawiz</a> family.</span><span>
|
||||
<a href="/privacy">Privacy</a> · <a href="/terms">Terms</a> · <a href="/security">Security</a>
|
||||
</span></div>
|
||||
</div></footer>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
|
||||
|
||||
<script src="/js/site.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="space_grotesk_25f324d0-module___WK4EG__variable inter_3d9c7ff2-module__6cOLqa__variable ibm_plex_mono_a3877f56-module__sxIMvq__variable">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="preload" href="/fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="/fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" as="image" href="/images/eventbuzz-logo.png" />
|
||||
<link rel="stylesheet" href="/css/site.css" />
|
||||
<link rel="stylesheet" href="/css/legal.css" />
|
||||
<title>Security — EventBuzz Live</title>
|
||||
<meta name="description" content="How EventBuzz Live protects event, attendee, and organiser data — access controls, encryption, infrastructure, and responsible disclosure." />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<div class="wrap navrow">
|
||||
<a href="/" class="logo">
|
||||
<img alt="EventBuzz" width="160" height="36" decoding="async" src="/images/eventbuzz-logo.png"/></a>
|
||||
<div class="navlinks navlinks-desktop">
|
||||
<a href="/#platform">Platform</a>
|
||||
<a href="/#concierge">AI Concierge</a>
|
||||
<a href="/#event-engagement">Engagement</a>
|
||||
<a href="/#pricing">Pricing</a>
|
||||
<a href="/#proof">Customer stories</a>
|
||||
</div>
|
||||
<a href="#cta" class="btn btn-primary nav-demo-desktop" data-demo-open="true">Request demo</a>
|
||||
<button type="button" class="nav-menu-btn" aria-label="Open menu" aria-expanded="false" aria-controls="nav-drawer">
|
||||
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="22" width="22" xmlns="http://www.w3.org/2000/svg"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
<a class="join-event-fab" href="https://join.eventbuzz.live" target="_blank" rel="noopener noreferrer"><span>Join Your Event</span></a>
|
||||
<main class="legal-page">
|
||||
<div class="wrap">
|
||||
<a href="/" class="legal-back">← Back to home</a>
|
||||
<div class="legal-kicker">Trust</div>
|
||||
<h1>Security</h1>
|
||||
<p class="legal-updated">Last updated: 4 August 2026</p>
|
||||
<p class="legal-intro">EventBuzz Live is built for events where schedules change, rooms shift, and attendee data must stay protected. This page summarises how Stratawiz Technologies designs, operates, and monitors security for EventBuzz — from organiser workspaces to the AI concierge and live engagement features.</p>
|
||||
<div class="legal-content">
|
||||
<section>
|
||||
<h2>1. Our approach</h2>
|
||||
<p>Security is part of how we ship product, not a separate layer we add later. We focus on protecting confidentiality, integrity, and availability of organiser accounts, event configuration, and attendee information processed through the platform.</p>
|
||||
<p>Practices below describe our current controls. They may evolve as the product and infrastructure change. For contractual security commitments, refer to your agreement with Stratawiz.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>2. Application security</h2>
|
||||
<ul>
|
||||
<li>Role-based access so organisers can limit who manages events, views reports, or changes settings</li>
|
||||
<li>Authenticated sessions with industry-standard password hashing for account credentials</li>
|
||||
<li>Input validation and output encoding on forms and APIs to reduce common web risks</li>
|
||||
<li>Separation between customer workspaces so one organiser’s event data is not exposed to another by default</li>
|
||||
<li>Least-privilege internal access for Stratawiz staff supporting the product</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>3. Data protection</h2>
|
||||
<h3>In transit</h3>
|
||||
<p>Traffic to EventBuzz websites and APIs is protected with TLS (HTTPS) so data exchanged between browsers, apps, and our services is encrypted in transit.</p>
|
||||
<h3>At rest</h3>
|
||||
<p>Customer data stored in our managed databases and object storage is encrypted at rest using provider-supported encryption capabilities.</p>
|
||||
<h3>What we process</h3>
|
||||
<p>Depending on how you configure an event, this may include organiser profiles, registration fields, check-in records, engagement activity (polls, quizzes, Q&A), and messages handled by the AI concierge. See our <a href="/privacy">Privacy Policy</a> for how personal information is collected and used.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>4. Infrastructure & operations</h2>
|
||||
<ul>
|
||||
<li>Hosting on reputable cloud providers with physical and network controls appropriate for business SaaS</li>
|
||||
<li>Environment separation (for example production vs. non-production) to reduce risk from testing and development work</li>
|
||||
<li>Regular backups of critical data with restoration procedures reviewed as part of operations</li>
|
||||
<li>Monitoring and alerting for availability and unusual error patterns that may indicate incidents</li>
|
||||
<li>Dependency and package updates as part of ongoing maintenance</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>5. Access control & people</h2>
|
||||
<p>Access to production systems and customer data is limited to personnel who need it for support, operations, or engineering. Accounts use strong authentication where available. Offboarding processes revoke access when team members leave or change roles.</p>
|
||||
<p>Organisers should also apply good hygiene on their side: unique passwords, careful invitation of team members, and prompt removal of users who no longer need access to an event workspace.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>6. AI concierge considerations</h2>
|
||||
<p>The AI concierge answers from your live event context so attendees get accurate, timely information. Prompts and responses may be processed by model providers under our configuration to deliver the feature. We design flows so answers stay grounded in the event data you manage in EventBuzz, and we continue to refine safeguards against misuse.</p>
|
||||
<p>Organisers remain responsible for keeping agenda, room, and policy information up to date so automated answers stay correct.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>7. Customer responsibilities</h2>
|
||||
<p>You help keep events secure when you:</p>
|
||||
<ul>
|
||||
<li>Protect account credentials and enable available security options</li>
|
||||
<li>Collect only the attendee data you need, and provide required privacy notices</li>
|
||||
<li>Configure roles and permissions appropriately for your team and onsite staff</li>
|
||||
<li>Use shared devices carefully (sign out after check-in desks or kiosks)</li>
|
||||
<li>Report suspected unauthorised access or misuse promptly</li>
|
||||
</ul>
|
||||
</section>
|
||||
<section>
|
||||
<h2>8. Incident response</h2>
|
||||
<p>If we become aware of a security incident affecting EventBuzz customer data, we investigate, contain, and remediate according to our internal process. Where legally required or contractually agreed, we will notify affected customers without undue delay and share information reasonably needed for their own response.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>9. Compliance mindset</h2>
|
||||
<p>EventBuzz is designed with privacy and security expectations common to professional events and enterprise buyers — including controlled access, encryption in transit and at rest, and clear data handling practices described in our <a href="/privacy">Privacy Policy</a> and <a href="/terms">Terms of Service</a>.</p>
|
||||
<p>Formal certification status (for example SOC or ISO) can vary by product and over time. Contact us if your organisation needs a security questionnaire, DPA, or vendor review package.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>10. Responsible disclosure</h2>
|
||||
<p>If you believe you have found a vulnerability in EventBuzz or related Stratawiz services, please tell us privately so we can investigate before public disclosure.</p>
|
||||
<p>Email <a href="mailto:support1@stratawiz.com">support1@stratawiz.com</a> with a clear description, steps to reproduce where possible, and your contact details. Please avoid accessing or modifying data that is not yours, and do not disrupt live customer events while testing.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>11. Contact</h2>
|
||||
<p>Security or trust questions:</p>
|
||||
<p>Stratawiz Technologies Pvt. Ltd.<br/>Email: <a href="mailto:support1@stratawiz.com">support1@stratawiz.com</a>
|
||||
<br/>Phone: <a href="tel:+919175891016">+91 91758 91016</a>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</div></main>
|
||||
<footer>
|
||||
<div class="wrap">
|
||||
<div class="fbottom" style="margin-top:0;border-top:none;padding-top:0"><span>© 2026 EventBuzz Live. Part of the <a href="https://stratawiz.com/" target="_blank" rel="noopener noreferrer">Stratawiz</a> family.</span><span>
|
||||
<a href="/privacy">Privacy</a> · <a href="/terms">Terms</a> · <a href="/security">Security</a>
|
||||
</span></div>
|
||||
</div></footer>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
|
||||
|
||||
<script src="/js/site.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en" class="space_grotesk_25f324d0-module___WK4EG__variable inter_3d9c7ff2-module__6cOLqa__variable ibm_plex_mono_a3877f56-module__sxIMvq__variable">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="preload" href="/fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="/fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" as="image" href="/images/eventbuzz-logo.png" />
|
||||
<link rel="stylesheet" href="/css/site.css" />
|
||||
<link rel="stylesheet" href="/css/legal.css" />
|
||||
<title>Terms of Service — EventBuzz Live</title>
|
||||
<meta name="description" content="Terms of Service for EventBuzz Live, the event management and engagement platform from Stratawiz Technologies." />
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<nav>
|
||||
<div class="wrap navrow">
|
||||
<a href="/" class="logo">
|
||||
<img alt="EventBuzz" width="160" height="36" decoding="async" src="/images/eventbuzz-logo.png"/></a>
|
||||
<div class="navlinks navlinks-desktop">
|
||||
<a href="/#platform">Platform</a>
|
||||
<a href="/#concierge">AI Concierge</a>
|
||||
<a href="/#event-engagement">Engagement</a>
|
||||
<a href="/#pricing">Pricing</a>
|
||||
<a href="/#proof">Customer stories</a>
|
||||
</div>
|
||||
<a href="#cta" class="btn btn-primary nav-demo-desktop" data-demo-open="true">Request demo</a>
|
||||
<button type="button" class="nav-menu-btn" aria-label="Open menu" aria-expanded="false" aria-controls="nav-drawer">
|
||||
<svg stroke="currentColor" fill="none" stroke-width="2" viewBox="0 0 24 24" stroke-linecap="round" stroke-linejoin="round" height="22" width="22" xmlns="http://www.w3.org/2000/svg"><line x1="3" y1="12" x2="21" y2="12"></line><line x1="3" y1="6" x2="21" y2="6"></line><line x1="3" y1="18" x2="21" y2="18"></line></svg>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
<a class="join-event-fab" href="https://join.eventbuzz.live" target="_blank" rel="noopener noreferrer"><span>Join Your Event</span></a>
|
||||
<main class="legal-page">
|
||||
<div class="wrap">
|
||||
<a href="/" class="legal-back">← Back to home</a>
|
||||
<div class="legal-kicker">Legal</div>
|
||||
<h1>Terms of Service</h1>
|
||||
<p class="legal-updated">Last updated: 4 August 2026</p>
|
||||
<p class="legal-intro">These Terms of Service (“Terms”) govern your access to and use of EventBuzz Live (“EventBuzz”), a product of Stratawiz Technologies Pvt. Ltd. (“Stratawiz”, “we”, “us”, or “our”), including our website, applications, and related services (together, the “Services”). By accessing or using the Services, requesting a demo, or creating an account, you agree to these Terms.</p>
|
||||
<div class="legal-content">
|
||||
<section>
|
||||
<h2>1. Agreement and eligibility</h2>
|
||||
<p>If you use EventBuzz on behalf of an organisation, you represent that you have authority to bind that organisation to these Terms, and “you” includes that organisation. You must be at least 18 years old (or the age of majority in your jurisdiction) to use the Services.</p>
|
||||
<p>If you do not agree to these Terms, do not use the Services.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>2. The Services</h2>
|
||||
<p>EventBuzz provides event management and engagement tools, which may include registration and event pages, an AI concierge, onsite check-in, live polls, quizzes, moderated Q&A, session summaries, analytics, and related features. Features available to you depend on your plan, configuration, and any order or proposal agreed with Stratawiz.</p>
|
||||
<p>We may update, improve, or discontinue features from time to time. Where a change materially reduces core paid functionality, we will use reasonable efforts to provide notice.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>3. Accounts and access</h2>
|
||||
<p>You are responsible for maintaining the confidentiality of login credentials and for all activity under your account. Notify us promptly of any unauthorised use. We may suspend or restrict access if we reasonably believe there is a security risk, violation of these Terms, or unpaid fees.</p>
|
||||
<p>Organisers who invite team members or grant attendee access remain responsible for those users’ compliance with these Terms while using EventBuzz in connection with their events.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>4. Acceptable use</h2>
|
||||
<p>You agree not to:</p>
|
||||
<ul>
|
||||
<li>Use the Services for unlawful, harmful, fraudulent, or deceptive purposes</li>
|
||||
<li>Upload or transmit malware, or attempt to disrupt, probe, or gain unauthorised access to the Services or related systems</li>
|
||||
<li>Scrape, reverse engineer, or copy the Services except as allowed by applicable law</li>
|
||||
<li>Interfere with other customers’ events or attendees’ experience</li>
|
||||
<li>Use the AI concierge or other features to generate or distribute content that is illegal, abusive, or infringes others’ rights</li>
|
||||
<li>Misrepresent your identity or affiliation when interacting with us or other users of the platform</li>
|
||||
</ul>
|
||||
<p>We may investigate suspected misuse and take action we consider appropriate, including suspension or termination.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>5. Your content and event data</h2>
|
||||
<p>You retain ownership of content and data you submit to EventBuzz (“Customer Content”), including event details, agendas, registration information, engagement responses, and materials you upload. You grant Stratawiz a limited licence to host, process, display, and transmit Customer Content solely as needed to provide and improve the Services and as otherwise described in our <a href="/privacy">Privacy Policy</a>.</p>
|
||||
<p>You represent that you have all rights and consents required to submit Customer Content (including attendee personal data) and to use EventBuzz for your events. You are responsible for notices and consents owed to attendees under applicable privacy laws.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>6. AI concierge and automated features</h2>
|
||||
<p>Certain features use automated systems or artificial intelligence to answer questions, summarise sessions, or assist organisers and attendees. Outputs may be incomplete or incorrect. You should not rely solely on automated outputs for critical operational, medical, legal, or safety decisions. Organisers remain responsible for verifying important information shared with attendees.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>7. Plans, fees, and trials</h2>
|
||||
<p>Paid plans, packages, and custom proposals are described on our website or in a separate order, quote, or agreement. Fees are due as stated there. Unless otherwise agreed in writing, fees are non-refundable except where required by law.</p>
|
||||
<p>Free trials or demo access are offered at our discretion, may be limited in time or features, and may be withdrawn. We may change published pricing with notice for renewals; existing written contracts control where they conflict with website pricing.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>8. Intellectual property</h2>
|
||||
<p>EventBuzz, including its software, design, trademarks, logos, and documentation, is owned by Stratawiz or its licensors. These Terms do not transfer any ownership to you. You may not use our marks without prior written permission, except to accurately identify that you use EventBuzz.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>9. Third-party services</h2>
|
||||
<p>The Services may integrate with or link to third-party products (for example payment, messaging, analytics, or social platforms). Those services are governed by their own terms and privacy policies. We are not responsible for third-party services we do not control.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>10. Confidentiality</h2>
|
||||
<p>Each party may receive non-public information from the other (“Confidential Information”). The receiving party will use it only to perform under these Terms and will protect it with reasonable care. Confidential Information does not include information that is public through no fault of the receiving party, independently developed, or rightfully received from another source without duty of confidentiality.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>11. Disclaimers</h2>
|
||||
<p>THE SERVICES ARE PROVIDED “AS IS” AND “AS AVAILABLE.” TO THE MAXIMUM EXTENT PERMITTED BY LAW, STRATAWIZ DISCLAIMS ALL WARRANTIES, WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE DO NOT WARRANT THAT THE SERVICES WILL BE UNINTERRUPTED, ERROR-FREE, OR FREE OF HARMFUL COMPONENTS, OR THAT EVENT OUTCOMES OR ATTENDEE EXPERIENCES WILL MEET YOUR EXPECTATIONS.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>12. Limitation of liability</h2>
|
||||
<p>TO THE MAXIMUM EXTENT PERMITTED BY LAW, STRATAWIZ AND ITS DIRECTORS, EMPLOYEES, AND SUPPLIERS WILL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR ANY LOSS OF PROFITS, REVENUE, DATA, OR GOODWILL, ARISING FROM OR RELATED TO YOUR USE OF THE SERVICES.</p>
|
||||
<p>OUR TOTAL LIABILITY FOR ALL CLAIMS ARISING OUT OF OR RELATED TO THE SERVICES OR THESE TERMS WILL NOT EXCEED THE AMOUNTS YOU PAID TO STRATAWIZ FOR EVENTBUZZ IN THE TWELVE (12) MONTHS BEFORE THE CLAIM AROSE (OR, IF YOU HAVE NOT PAID FEES, ONE THOUSAND INDIAN RUPEES).</p>
|
||||
<p>Some jurisdictions do not allow certain limitations; in those cases, our liability is limited to the fullest extent permitted by law.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>13. Indemnity</h2>
|
||||
<p>You will defend and indemnify Stratawiz against claims, damages, losses, and expenses (including reasonable legal fees) arising from your Customer Content, your events, your breach of these Terms, or your violation of law or third-party rights.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>14. Suspension and termination</h2>
|
||||
<p>You may stop using the Services at any time. We may suspend or terminate access for breach of these Terms, non-payment, or risk to the platform or other users. Upon termination, your right to use the Services ends. Provisions that by nature should survive (including intellectual property, disclaimers, limitations of liability, and indemnity) will survive.</p>
|
||||
<p>We will make Customer Content available for export for a reasonable period after termination of a paid subscription where technically feasible, unless prohibited by law or the account was terminated for severe misuse.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>15. Changes to these Terms</h2>
|
||||
<p>We may update these Terms from time to time. The “Last updated” date will change when we do. Continued use after changes become effective constitutes acceptance. If you do not agree, you must stop using the Services. Material changes to paid contractual terms may also be addressed in your order form or written agreement.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>16. Governing law and disputes</h2>
|
||||
<p>These Terms are governed by the laws of India, without regard to conflict-of-law rules. Courts in Pune, Maharashtra, India will have exclusive jurisdiction over disputes arising from these Terms or the Services, subject to any mandatory consumer protections that apply to you.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>17. General</h2>
|
||||
<p>These Terms, together with any order form, proposal, or written agreement with Stratawiz and our <a href="/privacy">Privacy Policy</a>, are the entire agreement regarding the Services and supersede prior understandings on the same subject. If there is a conflict between these Terms and a signed order or MSA, the signed document controls for that engagement. If any provision is unenforceable, the remainder stays in effect. Failure to enforce a provision is not a waiver. You may not assign these Terms without our consent; we may assign them in connection with a corporate reorganisation or sale of assets.</p>
|
||||
</section>
|
||||
<section>
|
||||
<h2>18. Contact</h2>
|
||||
<p>Questions about these Terms:</p>
|
||||
<p>Stratawiz Technologies Pvt. Ltd.<br/>1st Floor, D Block, Anantshilp Society, DSK Raanwaara Rd, Patil Nagar, Near Suryadatta College, Bavdhan, Pune, Maharashtra 411021, India<br/>Email: <a href="mailto:support1@stratawiz.com">support1@stratawiz.com</a>
|
||||
<br/>Phone: <a href="tel:+919175891016">+91 91758 91016</a>
|
||||
</p>
|
||||
</section>
|
||||
</div>
|
||||
</div></main>
|
||||
<footer>
|
||||
<div class="wrap">
|
||||
<div class="fbottom" style="margin-top:0;border-top:none;padding-top:0"><span>© 2026 EventBuzz Live. Part of the <a href="https://stratawiz.com/" target="_blank" rel="noopener noreferrer">Stratawiz</a> family.</span><span>
|
||||
<a href="/privacy">Privacy</a> · <a href="/terms">Terms</a> · <a href="/security">Security</a>
|
||||
</span></div>
|
||||
</div></footer>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/gsap.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/gsap@3.12.5/dist/ScrollTrigger.min.js"></script>
|
||||
|
||||
<script src="/js/site.js" defer></script>
|
||||
</body>
|
||||
</html>
|
||||