commit 40e4ae4b5d3245745fa31f51b2bec95a93e726ab Author: Ravi Gulhane <> Date: Thu Aug 13 16:16:20 2026 +0530 first commit diff --git a/404.html b/404.html new file mode 100644 index 0000000..cdf4c13 --- /dev/null +++ b/404.html @@ -0,0 +1,54 @@ + + + + + + + 404 — EventBuzz Live + + + + + + +
+

404

+

This page could not be found.

+ Back to home +
+ + + + + diff --git a/clients/abbott.png b/clients/abbott.png new file mode 100644 index 0000000..fe92cbf Binary files /dev/null and b/clients/abbott.png differ diff --git a/clients/alembic.png b/clients/alembic.png new file mode 100644 index 0000000..0fe603d Binary files /dev/null and b/clients/alembic.png differ diff --git a/clients/bayer-zydus-pharma.png b/clients/bayer-zydus-pharma.png new file mode 100644 index 0000000..5141bb9 Binary files /dev/null and b/clients/bayer-zydus-pharma.png differ diff --git a/clients/cipla.png b/clients/cipla.png new file mode 100644 index 0000000..f557b55 Binary files /dev/null and b/clients/cipla.png differ diff --git a/clients/dr-reddys.png b/clients/dr-reddys.png new file mode 100644 index 0000000..4795668 Binary files /dev/null and b/clients/dr-reddys.png differ diff --git a/clients/fresenius-kabi.png b/clients/fresenius-kabi.png new file mode 100644 index 0000000..538e0ff Binary files /dev/null and b/clients/fresenius-kabi.png differ diff --git a/clients/galderma.png b/clients/galderma.png new file mode 100644 index 0000000..f7d3b4c Binary files /dev/null and b/clients/galderma.png differ diff --git a/clients/glenmark.png b/clients/glenmark.png new file mode 100644 index 0000000..f1db631 Binary files /dev/null and b/clients/glenmark.png differ diff --git a/clients/micro-labs-limited.png b/clients/micro-labs-limited.png new file mode 100644 index 0000000..d88ba4f Binary files /dev/null and b/clients/micro-labs-limited.png differ diff --git a/clients/mylan.png b/clients/mylan.png new file mode 100644 index 0000000..ed66617 Binary files /dev/null and b/clients/mylan.png differ diff --git a/clients/otsuka.png b/clients/otsuka.png new file mode 100644 index 0000000..9b9acbb Binary files /dev/null and b/clients/otsuka.png differ diff --git a/clients/pfizer.png b/clients/pfizer.png new file mode 100644 index 0000000..1514a04 Binary files /dev/null and b/clients/pfizer.png differ diff --git a/clients/usv.png b/clients/usv.png new file mode 100644 index 0000000..cc2f991 Binary files /dev/null and b/clients/usv.png differ diff --git a/css/legal.css b/css/legal.css new file mode 100644 index 0000000..9dae58e --- /dev/null +++ b/css/legal.css @@ -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}} diff --git a/css/site.css b/css/site.css new file mode 100644 index 0000000..46a08f6 --- /dev/null +++ b/css/site.css @@ -0,0 +1,67 @@ +@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk Fallback;src:local(Arial);ascent-override:89.71%;descent-override:26.62%;line-gap-override:0.0%;size-adjust:109.69%}.space_grotesk_25f324d0-module___WK4EG__className{font-family:Space Grotesk,Space Grotesk Fallback;font-style:normal}.space_grotesk_25f324d0-module___WK4EG__variable{--font-space-grotesk:"Space Grotesk", "Space Grotesk Fallback"} +@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:700;font-display:swap;src:url(../fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_3d9c7ff2-module__6cOLqa__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_3d9c7ff2-module__6cOLqa__variable{--font-inter:"Inter", "Inter Fallback"} +@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/02263ebadd758ea4-s.29yke99gs9qpn.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/68757d6cddeff913-s.1i-sca43-qwng.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_a3877f56-module__sxIMvq__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal;font-weight:500}.ibm_plex_mono_a3877f56-module__sxIMvq__variable{--font-ibm-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"} +:root{--ink:#12172b;--ink-2:#1b2140;--paper:#f7f5f0;--paper-2:#fff;--amber:#ef8d1a;--amber-dark:#d4770c;--coral:#e85d4a;--teal:#3fa796;--teal-dark:#256f63;--text-dim:#8b90ac;--line:#ffffff1a;--line-dark:#12172b1a;--transition:all .25s ease-in-out}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-inter),sans-serif;background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;line-height:1.6}h1,h2,h3,.disp{font-family:var(--font-space-grotesk),sans-serif;letter-spacing:-.01em}.font-14{font-size:14px}.font-15{font-size:15px}.font-16{font-size:16px}.font-17{font-size:17px}.font-18{font-size:18px}.font-19{font-size:19px}.font-20{font-size:20px}.font-21{font-size:21px}.font-22{font-size:22px}.font-23{font-size:23px}.font-24{font-size:24px}.fw-l{font-weight:300}.fw-n{font-weight:400}.fw-sb{font-weight:500}.fw-b{font-weight:600}.fw-eb{font-weight:700}.text-amber{color:var(--amber)}.text-amber-dark{color:var(--amber-dark)}.text-teal{color:var(--teal)}.text-ink{color:var(--ink)}.text-ink-dark{color:var(--ink-2)}.text-paper{color:var(--paper)}.text-paper-2{color:var(--paper-2)}.text-text-dim{color:var(--text-dim)}.text-line{color:var(--line)}.position-relative{position:relative}.position-absolute{position:absolute}.position-fixed{position:fixed}.position-sticky{position:sticky}.ls-0{letter-spacing:0}.mono{font-family:var(--font-ibm-plex-mono),monospace}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.wrap{max-width:1140px;margin:0 auto;padding:0 32px}@media (max-width:640px){.wrap{padding:0 20px}}nav{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line-dark);background:#f7f5f0e0;position:sticky;top:0}.navrow{justify-content:space-between;align-items:center;height:58px;display:flex}.logo{font-family:var(--font-space-grotesk),sans-serif;align-items:center;gap:8px;font-size:20px;font-weight:700;display:flex}.logo img{width:auto;height:36px}.logo .dot{background:var(--amber);border-radius:50%;width:9px;height:9px;display:inline-block}.navlinks{gap:36px;font-size:15px;font-weight:500;display:flex}.navlinks a{opacity:.75;transition:opacity .15s}.navlinks a:hover{opacity:1}.btn{cursor:pointer;border:none;border-radius:100px;justify-content:center;align-items:center;padding:10px 22px;font-size:14px;font-weight:600;transition:transform .15s,box-shadow .15s;display:inline-flex}.btn-primary{background:var(--ink);color:var(--paper)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 18px #12172b40}.btn-ghost{color:var(--ink);border:1.5px solid var(--line-dark);background:0 0}.hero{background:radial-gradient(ellipse 900px 500px at 50% -10%, #f2a93b59, transparent 60%), var(--ink);color:var(--paper);padding:44px 0 28px;position:relative;overflow:hidden}.hero:before{content:"";background:linear-gradient(180deg, transparent 0%, var(--ink) 96%);pointer-events:none;position:absolute;inset:0}.spot{pointer-events:none;background:conic-gradient(from 180deg at 50% 0,#0000 0deg,#f2a93b38 25deg,#0000 55deg 305deg,#e85d4a2e 335deg,#0000 360deg);width:1000px;height:600px;animation:9s ease-in-out infinite sweep;position:absolute;top:-200px;left:50%;transform:translate(-50%)}@keyframes sweep{0%,to{opacity:.5;transform:translate(-50%)rotate(-4deg)}50%{opacity:1;transform:translate(-50%)rotate(4deg)}}@media (prefers-reduced-motion:reduce){.spot{animation:none}}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--amber);align-items:center;gap:8px;margin-bottom:14px;font-size:12px;font-weight:600;display:inline-flex}.eyebrow .bars{align-items:flex-end;gap:2px;height:12px;display:inline-flex}.eyebrow .bars i{background:var(--amber);border-radius:2px;width:3px;animation:1.1s ease-in-out infinite eq;display:block}.eyebrow .bars i:first-child{height:40%;animation-delay:0s}.eyebrow .bars i:nth-child(2){height:100%;animation-delay:.15s}.eyebrow .bars i:nth-child(3){height:65%;animation-delay:.3s}@keyframes eq{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){.eyebrow .bars i{animation:none}}.hero h1{max-width:560px;font-size:clamp(28px,3.4vw,42px);font-weight:700;line-height:1.08;position:relative}.hero h1 em{color:var(--amber);font-style:normal}.hero p.lede{color:var(--text-dim);max-width:520px;margin-top:12px;margin-bottom:12px;font-size:15px;line-height:1.55;position:relative}.hero .subhead{font-family:var(--font-space-grotesk),sans-serif;color:var(--paper);max-width:520px;margin-top:14px;font-size:17px;font-weight:600;position:relative}.herobtns{flex-wrap:wrap;gap:14px;margin-top:22px;display:flex;position:relative}.btn-primary.on-dark{background:var(--amber);color:#241802}.btn-primary.on-dark:hover{box-shadow:0 6px 18px #f2a93b59}.btn-outline{border:1.5px solid var(--line);color:var(--paper);background:0 0}.hero-grid{grid-template-columns:1.15fr 1fr;align-items:start;gap:36px;display:grid}@media (max-width:900px){.hero-grid{grid-template-columns:1fr}}.mock{background:var(--ink-2);border:1px solid var(--line);border-radius:18px;width:100%;max-width:440px;margin-top:-6px;padding:16px;position:relative}@media (max-width:900px){.mock{max-width:560px;margin-top:32px}}.mockhead{gap:6px;margin-bottom:10px;display:flex}.mockhead span{background:var(--line);border-radius:50%;width:8px;height:8px}.bubble{align-items:flex-start;gap:10px;margin-bottom:10px;display:flex}.bubble .avatar{background:var(--teal);border-radius:50%;flex-shrink:0;width:24px;height:24px}.bubble .avatar.user{background:var(--line)}.bubble .msg{color:var(--paper);background:#ffffff0f;border-radius:10px;max-width:380px;padding:9px 12px;font-size:13px}.bubble.right{flex-direction:row-reverse}.bubble.right .msg{background:#f2a93b24}.typing{gap:4px;padding:4px 0;display:inline-flex}.typing i{background:var(--teal);border-radius:50%;width:5px;height:5px;animation:1.2s infinite tp;display:block}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}@keyframes tp{0%,60%,to{opacity:.3}30%{opacity:1}}@media (prefers-reduced-motion:reduce){.typing i{opacity:.8;animation:none}}.trust{background:var(--paper-2);border-bottom:1px solid var(--line-dark);padding:16px 0}.trust .wrap{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:40px;display:flex}.trust .label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}.trust .stats{flex-wrap:wrap;gap:36px;display:flex}.trust .stat b{font-family:var(--font-space-grotesk),sans-serif;font-size:19px;display:block}.trust .stat span{color:var(--text-dim);font-size:12px}.logostrip{background:var(--paper-2);border-bottom:1px solid var(--line-dark);padding:18px 0;overflow:hidden}.logostrip .marquee{width:max-content;animation:40s linear infinite scrollx;display:flex}.logostrip .track{align-items:center;gap:48px;padding-right:48px;display:flex}.logostrip .logo-item{opacity:.75;flex-shrink:0;justify-content:center;align-items:center;height:60px;transition:opacity .15s;display:flex}.logostrip .logo-item:hover{opacity:1}.logostrip .logo-item:hover img{filter:grayscale(0);transform:scale(1.1)}.logostrip .logo-item img{object-fit:contain;filter:grayscale();width:auto;height:48px;transition:var(--transition)}@keyframes scrollx{0%{transform:translate(0)}to{transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.logostrip .marquee{animation:none}}.logostrip:hover .marquee{animation-play-state:paused}section{padding:96px 0}.kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--amber);margin-bottom:14px;font-size:13px;font-weight:700;display:inline-flex}.animated-icon{width:12px;height:12px;display:flex;position:relative;top:-6px}.sect-h{max-width:640px;color:var(--ink-2);font-size:clamp(28px,3.4vw,42px);font-weight:700;line-height:1.1}.sect-p{color:#565b78;max-width:560px;margin-top:16px;font-size:17px}.journey{background:var(--paper)}.jgrid{grid-template-columns:repeat(3,1fr);gap:24px;margin-top:56px;display:grid}@media (max-width:860px){.jgrid{grid-template-columns:1fr}}.jcard{background:var(--paper-2);border:1px solid var(--line-dark);border-radius:16px;flex-direction:column;padding:32px;display:flex}.jcard .tag{text-transform:uppercase;letter-spacing:.06em;color:var(--teal-dark);margin-bottom:14px;font-size:12px;font-weight:700}.jcard h3{transition:var(--transition);margin-bottom:6px;font-size:20px}.jcard .jsub{color:#8b90ac;margin-bottom:18px;font-size:14px}.jcard ul{flex-direction:column;gap:12px;list-style:none;display:flex}.jcard li{color:#33364a;align-items:flex-start;gap:9px;font-size:14px;display:flex}.jcard li svg{color:var(--teal-dark);flex-shrink:0;margin-top:3px}.jcard:hover h3{color:var(--amber)}.feature{background:var(--ink);color:var(--paper)}.featgrid{grid-template-columns:.85fr 1.15fr;align-items:center;gap:40px;display:grid}@media (max-width:900px){.featgrid{grid-template-columns:1fr}}.feature .sect-h{color:var(--paper)}.feature .sect-p{color:var(--text-dim)}.flist{flex-direction:column;gap:20px;margin-top:32px;display:flex}.fitem{align-items:flex-start;gap:16px;display:flex}.fitem .ico{width:36px;height:36px;color:var(--teal);background:#3fa79629;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.fitem b{margin-bottom:2px;font-size:16px;display:block}.fitem span{color:var(--text-dim);font-size:14px}.feat-panel{background:var(--ink-2);border:1px solid var(--line);border-radius:20px;padding:28px}.feat-panel .qa{color:var(--text-dim);margin-bottom:6px;font-size:13px}.feat-panel .qtext{margin-bottom:20px;font-size:17px;font-weight:500}.feat-panel .atext{color:var(--paper);background:#3fa7961f;border-radius:12px;padding:16px;font-size:14px}.plat{background:var(--paper-2)}.pgrid{background:var(--line-dark);border:1px solid var(--line-dark);border-radius:16px;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:56px;display:grid;overflow:hidden}@media (max-width:760px){.pgrid{grid-template-columns:1fr}}.pcell{background:var(--paper-2);padding:32px}.pcell .ico{width:34px;height:34px;color:var(--coral);margin-bottom:16px}.pcell h3{transition:var(--transition);margin-bottom:8px;font-size:17px}.pcell p{color:#565b78;font-size:14px}.pcell:hover h3{color:var(--amber)}.engage{background:var(--ink);color:var(--paper)}.engage .sect-h{color:var(--paper)}.engage .sect-p{color:var(--text-dim)}.egrid{background:var(--line);border:1px solid var(--line);border-radius:16px;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:56px;display:grid;overflow:hidden}@media (max-width:760px){.egrid{grid-template-columns:1fr}}.ecell{background:var(--ink-2);padding:32px}.ecell .ico{width:34px;height:34px;color:var(--amber);margin-bottom:16px}.ecell h3{color:var(--paper);transition:var(--transition);margin-bottom:8px;font-size:17px}.ecell p{color:var(--text-dim);font-size:14px}.ecell:hover h3{color:var(--amber)}.dna-strip{color:var(--paper);background:#f2a93b14;border:1px solid #f2a93b40;border-radius:14px;max-width:760px;margin-top:40px;padding:20px 24px;font-size:15px}.dna-strip b{color:var(--amber)}.ehl-grid{grid-template-columns:1fr 1fr;gap:20px;margin-top:20px;display:grid}@media (max-width:760px){.ehl-grid{grid-template-columns:1fr}}.ehl{background:var(--ink-2);border:1px solid var(--line);border-radius:16px;padding:28px}.ehl .kicker2{text-transform:uppercase;letter-spacing:.06em;color:var(--teal);margin-bottom:10px;font-size:12px;font-weight:700}.ehl h3{color:var(--paper);transition:var(--transition);margin-bottom:10px;font-size:19px;line-height:1.3}.ehl p{color:var(--text-dim);font-size:14px}.ehl:hover h3{color:var(--amber)}.thumb{border-radius:12px;height:112px;margin-bottom:18px;padding:14px;position:relative;overflow:hidden}.thumb.light{border:1px solid var(--line-dark);background:#eef1f7}.thumb.dark{border:1px solid var(--line);background:#ffffff0d}.thumb .win{gap:4px;display:flex;position:absolute;top:9px;left:11px}.thumb .win span{background:#12172b26;border-radius:50%;width:6px;height:6px}.thumb.dark .win span{background:#ffffff2e}.thumb-photo{padding:0}.thumb-photo img{object-fit:cover;width:100%;height:100%;display:block}.thumb-body{position:absolute;inset:30px 14px 14px}.thumb-lines .ln{opacity:.15;background:currentColor;border-radius:4px;height:8px;margin-bottom:8px}.thumb.light .thumb-lines .ln{color:var(--ink)}.thumb.dark .thumb-lines .ln{color:var(--paper)}.thumb-lines .ln.accent{background:var(--amber);opacity:.55}.thumb-bars{align-items:flex-end;gap:8px;height:100%;display:flex}.thumb-bars i{background:var(--teal);opacity:.75;border-radius:4px 4px 0 0;flex:1;display:block}.thumb-bars i.hi{background:var(--amber);opacity:.85}.thumb-hbars{flex-direction:column;justify-content:center;gap:9px;height:100%;display:flex}.thumb-hbars .row{align-items:center;gap:8px;display:flex}.thumb-hbars .track{background:#78788c2e;border-radius:4px;flex:1;height:7px;overflow:hidden}.thumb-hbars .fill{background:var(--teal);border-radius:4px;height:100%}.thumb-hbars .fill.hi{background:var(--amber)}.thumb-hbars .pct{color:var(--text-dim);text-align:right;width:28px;font-size:10px;font-weight:700}.thumb-grid{grid-template-columns:repeat(6,1fr);align-content:center;gap:5px;height:100%;display:grid}.thumb-grid span{aspect-ratio:1;opacity:.12;background:currentColor;border-radius:3px}.thumb.light .thumb-grid span{color:var(--ink)}.thumb.dark .thumb-grid span{color:var(--paper)}.thumb-grid span.on{background:var(--amber);opacity:.6}.thumb-badge{justify-content:center;align-items:center;gap:12px;height:100%;display:flex}.thumb-badge .card{background:var(--paper-2);border:1px solid var(--line-dark);border-radius:8px;flex-direction:column;align-items:center;gap:5px;width:56px;height:80px;padding:8px 6px;display:flex}.thumb-badge .av{background:var(--coral);border-radius:50%;width:20px;height:20px}.thumb-badge .bl{background:#12172b26;border-radius:3px;width:80%;height:5px}.thumb.dark .thumb-badge .card{background:var(--ink);border-color:var(--line)}.thumb.dark .thumb-badge .bl{background:#ffffff2e}.thumb-people{justify-content:center;align-items:center;height:100%;display:flex;position:relative}.thumb-people .dot{border:2px solid var(--paper-2);border-radius:50%;width:30px;height:30px;position:relative}.thumb.dark .thumb-people .dot{border-color:var(--ink-2)}.thumb-people .dot:first-child{background:var(--teal);z-index:1;margin-right:-10px}.thumb-people .dot:nth-child(2){background:var(--amber);z-index:2}.thumb-people .dot:nth-child(3){background:var(--coral);z-index:1;margin-left:-10px}.thumb-rank{flex-direction:column;justify-content:center;gap:8px;height:100%;display:flex}.thumb-rank .row{align-items:center;gap:8px;display:flex}.thumb-rank .n{color:var(--text-dim);width:12px;font-size:10px;font-weight:700}.thumb-rank .av{background:var(--teal);border-radius:50%;flex-shrink:0;width:16px;height:16px}.thumb-rank .bar{background:var(--amber);opacity:.7;border-radius:3px;height:6px}.thumb-icon{justify-content:center;align-items:center;height:100%;display:flex}.thumb-icon .circle{width:52px;height:52px;color:var(--teal-dark);background:#3fa79626;border-radius:50%;justify-content:center;align-items:center;display:flex}.thumb.dark .thumb-icon .circle{color:var(--amber);background:#f2a93b24}.thumb-chat{flex-direction:column;justify-content:center;gap:7px;height:100%;display:flex}.thumb-chat .b{background:#78788c24;border-radius:9px;max-width:72%;height:16px;padding:6px 10px;font-size:0}.thumb-chat .b.right{background:#f2a93b47;align-self:flex-end}.thumb-score{justify-content:center;align-items:center;gap:16px;height:100%;display:flex}.thumb-score .ring{background:conic-gradient(var(--amber) 0deg 306deg, #ffffff1a 306deg 360deg);border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;display:flex}.thumb-score .ring b{background:var(--ink-2);width:48px;height:48px;font-family:var(--font-space-grotesk),sans-serif;color:var(--paper);border-radius:50%;justify-content:center;align-items:center;font-size:15px;display:flex}.thumb-score .cap{color:var(--text-dim);max-width:110px;font-size:11px;line-height:1.4}.thumb-summary{flex-direction:column;justify-content:center;gap:8px;height:100%;display:flex}.thumb-summary .row{align-items:center;gap:8px;display:flex}.thumb-summary .chk{border:1px solid var(--teal);background:#3fa7964d;border-radius:4px;flex-shrink:0;width:14px;height:14px}.thumb-summary .ln{background:#ffffff24;border-radius:4px;flex:1;height:7px}.pricing{background:var(--paper)}.pricing-note{color:var(--teal-dark);background:#3fa7961f;border-radius:100px;align-items:center;gap:8px;margin-top:8px;padding:8px 16px;font-size:13px;font-weight:600;display:inline-flex}.pgrid2{grid-template-columns:repeat(4,1fr);align-items:stretch;gap:20px;margin-top:56px;display:grid}@media (max-width:960px){.pgrid2{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.pgrid2{grid-template-columns:1fr}}.tier{background:var(--paper-2);border:1.5px solid var(--line-dark);border-radius:18px;flex-direction:column;padding:28px 24px;display:flex}.tier.pop{border-color:var(--amber);position:relative;box-shadow:0 12px 30px #f2a93b2e}.tier.pop:before{content:"Most popular";background:var(--amber);color:#241802;letter-spacing:.02em;border-radius:100px;padding:5px 12px;font-size:11px;font-weight:700;position:absolute;top:-13px;left:24px}.tier h3{color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;font-size:16px;font-weight:600}.tier .price{font-family:var(--font-space-grotesk),sans-serif;margin:14px 0 2px;font-size:38px;font-weight:700}.tier .price span{color:#565b78;font-size:14px;font-weight:500;font-family:var(--font-inter),sans-serif}.tier .desc{color:#565b78;min-height:34px;margin-bottom:20px;font-size:13px}.tier ul{flex-direction:column;flex-grow:1;gap:11px;margin-bottom:24px;list-style:none;display:flex}.tier li{color:#33364a;align-items:flex-start;gap:9px;font-size:14px;display:flex}.tier li svg{color:var(--teal-dark);flex-shrink:0;margin-top:2px}.tier li.ai b{color:var(--coral)}.tier .btn{width:100%}.proof{background:var(--ink);color:var(--paper)}.proof .sect-h{color:var(--paper)}.proof .sect-p{color:var(--text-dim)}.tcard{background:var(--ink-2);border:1px solid var(--line);border-radius:16px;padding:26px}.tcard .q{color:var(--paper);margin-bottom:18px;font-size:15px;line-height:1.55}.tcard .who b{color:var(--paper);margin-bottom:2px;font-size:14px;display:block}.tcard .who span{color:var(--text-dim);font-size:13px}.cta{background:var(--paper);text-align:center}.cta h2{max-width:620px;margin:0 auto 20px;font-size:clamp(28px,4vw,44px)}.cta p{color:#565b78;max-width:480px;margin:0 auto 20px;font-size:17px}.cta .btns{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}footer{background:var(--paper-2);border-top:1px solid var(--line-dark);padding:56px 0 32px}.fgrid{grid-template-columns:1.4fr repeat(4,1fr);gap:32px;display:grid}@media (max-width:767px){.fgrid{grid-template-columns:repeat(1,1fr);gap:15px}}.fcol h4{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin-bottom:16px;font-size:13px;font-weight:700}.fcol a{color:#33364a;transition:var(--transition);margin-bottom:11px;font-size:14px;display:block}.fcol a:hover{color:var(--amber)}.fsocial{flex-direction:row;align-items:center;gap:14px;margin:0 0 16px;display:flex}.fsocial-link{color:var(--text-dim);justify-content:center;align-items:center;transition:color .15s;display:inline-flex;margin-bottom:0!important}.fsocial-link:hover{color:var(--amber)}.fbottom{border-top:1px solid var(--line-dark);color:var(--text-dim);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:48px;padding-top:24px;font-size:13px;display:flex}.fbottom a{color:var(--text-dim);font-weight:500}.fbottom a:hover{color:var(--amber)}@media screen and (max-width:991px){.trust{padding:10px 0}.trust .wrap{gap:10px}.logostrip{padding:5px 0}}@media screen and (max-width:767px){.trust .stats{flex-wrap:wrap;justify-content:space-between;gap:20px}.trust .stats .stat{flex:40%}section{padding:60px 0}.jcard,.pcell,.ecell,.ehl{padding:20px}.cta{text-align:left}.cta h2{line-height:1.1}.cta p{margin-bottom:20px!important;font-size:15px!important}.cta .btns{justify-content:flex-start}} + +.chat-widget{--cw-widget-bg:#1c222b;--cw-header-bg:#232b36;--cw-a-bubble:#3d6fff;--cw-b-bubble:#2b3440;--cw-text-light:#eef1f6;--cw-text-dim:#8892a0;--cw-accent:#ffb454;--cw-dot:#9aa4b2;--cw-input-bg:#232b36;--cw-border:#2c3542;background:var(--cw-widget-bg);width:100%;max-width:380px;height:420px;box-shadow:0 30px 60px -20px #0009, 0 0 0 1px var(--cw-border);z-index:1;pointer-events:none;border-radius:22px;flex-direction:column;display:flex;position:relative;overflow:hidden}@media (max-width:900px){.chat-widget{max-width:480px;height:480px;margin-top:32px}}.chat-widget .chat-header{background:var(--cw-header-bg);border-bottom:1px solid var(--cw-border);flex:none;align-items:center;gap:10px;padding:14px 16px;display:flex}.chat-widget .chat-header .name{color:var(--cw-text-light);font-size:14px;font-weight:600}.chat-widget .chat-header .status{color:var(--cw-accent);font-size:11px}.chat-widget .chat-messages{scroll-behavior:smooth;flex-direction:column;flex:auto;gap:14px;padding:16px;display:flex;overflow-y:auto}.chat-widget .chat-messages::-webkit-scrollbar{width:6px;display:none}.chat-widget .chat-messages::-webkit-scrollbar-thumb{background:var(--cw-border);border-radius:3px}.chat-widget .msg-row{opacity:0;align-items:flex-end;gap:8px;max-width:82%;display:flex}.chat-widget .msg-row.from-a{flex-direction:row-reverse;align-self:flex-end}.chat-widget .msg-row.from-b{align-self:flex-start}.chat-widget .avatar{border-radius:50%;flex:none;width:26px;height:26px;overflow:hidden}.chat-widget .bubble{color:var(--cw-text-light);border-radius:16px;padding:9px 13px;font-size:13.5px;line-height:1.4}.chat-widget .from-a .bubble{background:var(--cw-a-bubble);border-bottom-right-radius:4px}.chat-widget .from-b .bubble{background:var(--cw-b-bubble);border-bottom-left-radius:4px}.chat-widget .typing-row .bubble{align-items:center;gap:4px;padding:11px 14px;display:flex}.chat-widget .typing-row .dot{background:var(--cw-dot);border-radius:50%;width:6px;height:6px;display:inline-block}.chat-widget .chat-input-bar{background:var(--cw-header-bg);border-top:1px solid var(--cw-border);flex:none;align-items:flex-end;gap:10px;padding:12px 14px;display:flex}.chat-widget .chat-input-bar textarea{background:var(--cw-input-bg);border:1px solid var(--cw-border);color:var(--cw-text-light);resize:none;field-sizing:content;border-radius:18px;outline:none;flex:auto;min-height:40px;max-height:calc(4.2em + 20px);padding:10px 14px;font-family:inherit;font-size:13.5px;line-height:1.4;overflow:hidden}.chat-widget .chat-input-bar textarea::placeholder{color:var(--cw-text-dim)}.chat-widget .send-btn{background:var(--cw-a-bubble);cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:38px;height:38px;padding:0;display:flex}.chat-widget .send-btn svg{width:16px;height:16px}.chat-widget .avatar-defs{width:0;height:0;position:absolute;overflow:hidden} +.eb-flow-v3{background:#111827;border-radius:16px;width:100%;max-width:740px;margin:0 auto;position:relative}.eb-flow-v3 svg{width:100%;height:auto;font-family:var(--font-inter), Inter, sans-serif;display:block}.eb-flow-v3 svg text{font-family:inherit}.eb-flow-v3 rect{transition:stroke .2s,filter .2s,fill .2s}.eb-flow-v3 .glow-path,.eb-flow-v3 .glow-path-green{stroke-linecap:round;opacity:0}.eb-flow-v3 .box-glow{filter:drop-shadow(0 0 10px #ed8e1ce6);stroke:#ed8e1c!important;stroke-width:1.5px!important;fill:#ed8e1c26!important}.eb-flow-v3 .box-glow-green{filter:drop-shadow(0 0 12px #34d399e6);stroke:#10b981!important;stroke-width:2.5px!important;fill:#10b98133!important}.eb-flow-v3 .phone-glow-orange{filter:drop-shadow(0 0 14px #ed8e1ce6);stroke:#ed8e1c!important;stroke-width:3px!important}.eb-flow-v3 .phone-glow-green{filter:drop-shadow(0 0 14px #34d399);stroke:#10b981!important;stroke-width:3px!important}.eb-flow-v3 .box-glow~text,.eb-flow-v3 .box-glow~g text,.eb-flow-v3 .box-glow-green~g text,.eb-flow-v3 .box-glow-green~text{fill:#fff!important}@media (max-width:600px){.eb-flow-v3{border-radius:12px;padding:0}} +.stories-slider{margin-top:40px}.stories-slider-header{justify-content:flex-end;margin-bottom:16px;display:flex}.stories-slider-nav{gap:10px;display:flex}.stories-slider-btn{border:1.5px solid var(--line);background:var(--ink-2);width:42px;height:42px;color:var(--paper);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,border-color .15s,opacity .15s,transform .15s;display:inline-flex}.stories-slider-btn:hover:not(:disabled){border-color:var(--amber);color:var(--amber);transform:translateY(-1px)}.stories-slider-btn:disabled{opacity:.35;cursor:not-allowed}.stories-slider-viewport{width:100%;overflow:hidden}.stories-slider-track{will-change:transform;transition:transform .4s;display:flex}.stories-slide{scroll-snap-align:unset;box-sizing:border-box;min-width:0} + +.demo-modal-overlay{z-index:100;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:0;background:#12172b8c;justify-content:center;align-items:center;padding:24px 16px;transition:opacity .28s;display:flex;position:fixed;inset:0}.demo-modal-overlay.is-open{opacity:1}.demo-modal{background:var(--paper-2);width:100%;max-width:480px;max-height:min(90vh,720px);color:var(--ink);border:1px solid var(--line-dark);opacity:0;border-radius:20px;padding:32px 28px 28px;transition:opacity .28s,transform .32s cubic-bezier(.22,1,.36,1);position:relative;overflow-y:auto;transform:translateY(18px)scale(.96);box-shadow:0 24px 60px #12172b47}.demo-modal.is-open{opacity:1;transform:translateY(0)scale(1)}@media (prefers-reduced-motion:reduce){.demo-modal-overlay,.demo-modal{transition:none}.demo-modal{transform:none}}.demo-modal-close{width:36px;height:36px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex;position:absolute;top:14px;right:14px}.demo-modal-close:hover{color:var(--ink);background:#12172b0f}.demo-modal-head{margin-bottom:22px;padding-right:28px}.demo-modal-head h2{font-family:var(--font-space-grotesk), sans-serif;letter-spacing:-.01em;margin:0 0 8px;font-size:24px;font-weight:700;line-height:1.2}.demo-modal-head p{color:#565b78;margin:0;font-size:15px;line-height:1.5}.demo-modal-form{flex-direction:column;gap:14px;display:flex}.demo-field{color:var(--ink);flex-direction:column;gap:6px;font-size:13px;font-weight:600;display:flex}.demo-field span{letter-spacing:.01em}.demo-field input,.demo-field textarea{color:var(--ink);background:var(--paper);border:1.5px solid var(--line-dark);resize:vertical;border-radius:12px;outline:none;padding:11px 14px;font-family:inherit;font-size:15px;font-weight:400;transition:border-color .15s,box-shadow .15s}.demo-field input::placeholder,.demo-field textarea::placeholder{color:var(--text-dim)}.demo-field input:focus,.demo-field textarea:focus{border-color:var(--amber);box-shadow:0 0 0 3px #f2a93b33}.demo-field.has-error input,.demo-field.has-error textarea{border-color:#c23b3b}.demo-field.has-error input:focus,.demo-field.has-error textarea:focus{border-color:#c23b3b;box-shadow:0 0 0 3px #c23b3b2e}.demo-field-error{color:#c23b3b;margin:0;font-size:12px;font-weight:500;line-height:1.35}.demo-form-error{color:#c23b3b;background:#c23b3b14;border:1px solid #c23b3b40;border-radius:10px;margin:0;padding:10px 12px;font-size:13px;font-weight:500;line-height:1.4}.demo-modal-actions .btn:disabled{opacity:.65;cursor:not-allowed}.demo-modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:12px;margin-top:8px;display:flex}.demo-modal-success{text-align:center;padding:12px 8px 4px}.demo-modal-success h2{font-family:var(--font-space-grotesk), sans-serif;margin:0 0 10px;font-size:22px}.demo-modal-success p{color:#565b78;margin:0 0 22px;font-size:15px;line-height:1.5}@media (max-width:480px){.demo-modal{padding:28px 20px 22px}.demo-modal-actions{flex-direction:column-reverse}.demo-modal-actions .btn{width:100%}} +.join-event-fab{z-index:45;background:var(--amber);color:#fff;text-shadow:1px 1px 3px #3737374d;letter-spacing:.04em;text-transform:uppercase;writing-mode:vertical-rl;text-orientation:mixed;transform-origin:50%;transition:background .15s,transform .15s,box-shadow .15s;transition:var(--transition);border-radius:12px 0 0 12px;justify-content:center;align-items:center;padding:24px 12px;font-size:15px;font-weight:700;display:inline-flex;position:fixed;top:50%;right:-5px;transform:translateY(-50%);box-shadow:-4px 8px 24px #12172b2e}.join-event-fab span{display:inline-block;transform:rotate(0)}.join-event-fab:hover{background:var(--amber-dark);transform:translateY(-50%)translate(-3px);box-shadow:-6px 10px 28px #12172b38}.nav-menu-btn{width:40px;height:40px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;padding:0;transition:background .15s;display:none}.nav-menu-btn:hover{background:#12172b0f}nav.is-drawer-mode .navlinks-desktop,nav.is-drawer-mode .nav-demo-desktop{display:none!important}nav.is-drawer-mode .nav-menu-btn{display:inline-flex}.nav-drawer-overlay{z-index:80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;background:#12172b73;transition:opacity .28s;position:fixed;inset:0}.nav-drawer-overlay.is-open{opacity:1}.nav-drawer{background:var(--paper-2);width:min(320px,86vw);color:var(--ink);z-index:81;flex-direction:column;padding:18px 20px 28px;transition:transform .32s cubic-bezier(.22,1,.36,1);display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-12px 0 40px #12172b2e}.nav-drawer.is-open{transform:translate(0)}.nav-drawer-head{border-bottom:1px solid var(--line-dark);justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:14px;display:flex}.nav-drawer-title{font-family:var(--font-space-grotesk), sans-serif;font-size:18px;font-weight:700}.nav-drawer-close{width:40px;height:40px;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:10px;justify-content:center;align-items:center;display:inline-flex}.nav-drawer-close:hover{background:#12172b0f}.nav-drawer-links{flex-direction:column;flex:1;gap:4px;display:flex;overflow-y:auto}.nav-drawer-links a{color:var(--ink);opacity:.8;border-radius:10px;padding:12px 10px;font-size:16px;font-weight:500;transition:background .15s,opacity .15s,color .15s;display:block}.nav-drawer-links a:hover{opacity:1;color:var(--amber-dark);background:#12172b0d}.nav-drawer-cta{width:100%;margin-top:16px}@media (prefers-reduced-motion:reduce){.nav-drawer-overlay,.nav-drawer,.join-event-fab{transition:none}} + +/* Static site: keep closed overlays from blocking clicks */ +.demo-modal-overlay:not(.is-open), +.nav-drawer-overlay:not(.is-open) { + pointer-events: none; + visibility: hidden; +} +.demo-modal-overlay.is-open, +.nav-drawer-overlay.is-open { + pointer-events: auto; + visibility: visible; +} + +/* Demo modal captcha */ +.demo-captcha-row{ + display:flex; + align-items:center; + gap:10px; +} +.demo-captcha-question{ + flex:0 0 auto; + min-width:88px; + padding:10px 12px; + border-radius:12px; + background:var(--paper); + border:1.5px solid var(--line-dark); + font-family:var(--font-ibm-plex-mono), monospace; + font-size:14px; + font-weight:600; + color:var(--ink); + white-space:nowrap; +} +.demo-captcha-row input{ + flex:1 1 auto; + min-width:0; +} +.demo-captcha-reload{ + width:42px; + height:42px; + flex:0 0 auto; + border:1.5px solid var(--line-dark); + border-radius:12px; + background:var(--paper); + color:var(--ink); + cursor:pointer; + font-size:18px; + line-height:1; +} +.demo-captcha-reload:hover{ + background:#12172b0f; +} +.demo-captcha-reload:disabled, +.demo-submit-btn:disabled{ + opacity:.65; + cursor:not-allowed; +} diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..56203c3 Binary files /dev/null and b/favicon.ico differ diff --git a/fonts/02263ebadd758ea4-s.29yke99gs9qpn.woff2 b/fonts/02263ebadd758ea4-s.29yke99gs9qpn.woff2 new file mode 100644 index 0000000..2a5e599 Binary files /dev/null and b/fonts/02263ebadd758ea4-s.29yke99gs9qpn.woff2 differ diff --git a/fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2 b/fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2 new file mode 100644 index 0000000..7b0e76a Binary files /dev/null and b/fonts/0c89a48fa5027cee-s.p.2cyn07wtgehh0.woff2 differ diff --git a/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 b/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 new file mode 100644 index 0000000..57da6f8 Binary files /dev/null and b/fonts/1bffadaabf893a1e-s.3-6t-g6q0vh0a.woff2 differ diff --git a/fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2 b/fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2 new file mode 100644 index 0000000..e3aa61c Binary files /dev/null and b/fonts/28868e710e86be81-s.2eksvhm1z0jwa.woff2 differ diff --git a/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 b/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 new file mode 100644 index 0000000..072229b Binary files /dev/null and b/fonts/2bbe8d2671613f1f-s.0k62hbripvv8p.woff2 differ diff --git a/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2 b/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2 new file mode 100644 index 0000000..2cd45ed Binary files /dev/null and b/fonts/2c55a0e60120577a-s.0-dom-5bn10r2.woff2 differ diff --git a/fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2 b/fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2 new file mode 100644 index 0000000..a0fadcf Binary files /dev/null and b/fonts/32687112bd2dd8db-s.1gepa_7fcx9fm.woff2 differ diff --git a/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2 b/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2 new file mode 100644 index 0000000..9c71603 Binary files /dev/null and b/fonts/5476f68d60460930-s.2uwcyprjm3xu3.woff2 differ diff --git a/fonts/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2 b/fonts/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2 new file mode 100644 index 0000000..61ad17d Binary files /dev/null and b/fonts/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2 differ diff --git a/fonts/68757d6cddeff913-s.1i-sca43-qwng.woff2 b/fonts/68757d6cddeff913-s.1i-sca43-qwng.woff2 new file mode 100644 index 0000000..743dae3 Binary files /dev/null and b/fonts/68757d6cddeff913-s.1i-sca43-qwng.woff2 differ diff --git a/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 b/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 new file mode 100644 index 0000000..91dc3e8 Binary files /dev/null and b/fonts/83afe278b6a6bb3c-s.p.2bn3s6zvc0dyp.woff2 differ diff --git a/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 b/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 new file mode 100644 index 0000000..bc0e0ab Binary files /dev/null and b/fonts/9c72aa0f40e4eef8-s.1y4-pdgsjb-pw.woff2 differ diff --git a/fonts/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2 b/fonts/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2 new file mode 100644 index 0000000..a070a82 Binary files /dev/null and b/fonts/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2 differ diff --git a/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2 b/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2 new file mode 100644 index 0000000..b6dd1fa Binary files /dev/null and b/fonts/ad66f9afd8947f86-s.3lvt2whj97whp.woff2 differ diff --git a/fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2 b/fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2 new file mode 100644 index 0000000..3308bce Binary files /dev/null and b/fonts/effe91970fc4db64-s.p.0oace-s_gkfks.woff2 differ diff --git a/images/AI-post-session-summary1.jpg b/images/AI-post-session-summary1.jpg new file mode 100644 index 0000000..b7f35c6 Binary files /dev/null and b/images/AI-post-session-summary1.jpg differ diff --git a/images/AI-post-session-summary2.jpg b/images/AI-post-session-summary2.jpg new file mode 100644 index 0000000..c440144 Binary files /dev/null and b/images/AI-post-session-summary2.jpg differ diff --git a/images/attendee-engagement-scores1.jpg b/images/attendee-engagement-scores1.jpg new file mode 100644 index 0000000..adf942f Binary files /dev/null and b/images/attendee-engagement-scores1.jpg differ diff --git a/images/attendee-engagement-scores2.jpg b/images/attendee-engagement-scores2.jpg new file mode 100644 index 0000000..8684b64 Binary files /dev/null and b/images/attendee-engagement-scores2.jpg differ diff --git a/images/badge-printing.jpg b/images/badge-printing.jpg new file mode 100644 index 0000000..e10db81 Binary files /dev/null and b/images/badge-printing.jpg differ diff --git a/images/community-and-social-feed1.jpg b/images/community-and-social-feed1.jpg new file mode 100644 index 0000000..ef06ade Binary files /dev/null and b/images/community-and-social-feed1.jpg differ diff --git a/images/community-and-social-feed2.jpg b/images/community-and-social-feed2.jpg new file mode 100644 index 0000000..0fa366a Binary files /dev/null and b/images/community-and-social-feed2.jpg differ diff --git a/images/engagement-analytics1.jpg b/images/engagement-analytics1.jpg new file mode 100644 index 0000000..27d4392 Binary files /dev/null and b/images/engagement-analytics1.jpg differ diff --git a/images/engagement-analytics2.jpg b/images/engagement-analytics2.jpg new file mode 100644 index 0000000..a74998e Binary files /dev/null and b/images/engagement-analytics2.jpg differ diff --git a/images/event-marketing.jpg b/images/event-marketing.jpg new file mode 100644 index 0000000..c45c529 Binary files /dev/null and b/images/event-marketing.jpg differ diff --git a/images/event-page-and-registration1.jpg b/images/event-page-and-registration1.jpg new file mode 100644 index 0000000..980527c Binary files /dev/null and b/images/event-page-and-registration1.jpg differ diff --git a/images/event-page-and-registration2.jpg b/images/event-page-and-registration2.jpg new file mode 100644 index 0000000..2cdb29e Binary files /dev/null and b/images/event-page-and-registration2.jpg differ diff --git a/images/eventbuzz-logo.png b/images/eventbuzz-logo.png new file mode 100644 index 0000000..7e11628 Binary files /dev/null and b/images/eventbuzz-logo.png differ diff --git a/images/gamification-and-leaderboards1.jpg b/images/gamification-and-leaderboards1.jpg new file mode 100644 index 0000000..6a78393 Binary files /dev/null and b/images/gamification-and-leaderboards1.jpg differ diff --git a/images/gamification-and-leaderboards2.jpg b/images/gamification-and-leaderboards2.jpg new file mode 100644 index 0000000..afe744e Binary files /dev/null and b/images/gamification-and-leaderboards2.jpg differ diff --git a/images/live-polls-and-qa1.jpg b/images/live-polls-and-qa1.jpg new file mode 100644 index 0000000..753e503 Binary files /dev/null and b/images/live-polls-and-qa1.jpg differ diff --git a/images/live-polls-and-qa2.jpg b/images/live-polls-and-qa2.jpg new file mode 100644 index 0000000..037f181 Binary files /dev/null and b/images/live-polls-and-qa2.jpg differ diff --git a/images/networking-and-matchmaking1.jpg b/images/networking-and-matchmaking1.jpg new file mode 100644 index 0000000..d236f1a Binary files /dev/null and b/images/networking-and-matchmaking1.jpg differ diff --git a/images/networking-and-matchmaking2.jpg b/images/networking-and-matchmaking2.jpg new file mode 100644 index 0000000..4b5cc23 Binary files /dev/null and b/images/networking-and-matchmaking2.jpg differ diff --git a/images/push-and-reminders1.jpg b/images/push-and-reminders1.jpg new file mode 100644 index 0000000..2d30b34 Binary files /dev/null and b/images/push-and-reminders1.jpg differ diff --git a/images/push-and-reminders2.jpg b/images/push-and-reminders2.jpg new file mode 100644 index 0000000..97c58a9 Binary files /dev/null and b/images/push-and-reminders2.jpg differ diff --git a/images/real-time-analytics-and-reporting.jpg b/images/real-time-analytics-and-reporting.jpg new file mode 100644 index 0000000..bc7b590 Binary files /dev/null and b/images/real-time-analytics-and-reporting.jpg differ diff --git a/images/security-and-compliance1.jpg b/images/security-and-compliance1.jpg new file mode 100644 index 0000000..b777000 Binary files /dev/null and b/images/security-and-compliance1.jpg differ diff --git a/images/security-and-compliance2.jpg b/images/security-and-compliance2.jpg new file mode 100644 index 0000000..655b455 Binary files /dev/null and b/images/security-and-compliance2.jpg differ diff --git a/images/sessions-agenda-and-qr-check-in.jpg b/images/sessions-agenda-and-qr-check-in.jpg new file mode 100644 index 0000000..4363f0d Binary files /dev/null and b/images/sessions-agenda-and-qr-check-in.jpg differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..c80a50d --- /dev/null +++ b/index.html @@ -0,0 +1,693 @@ + + + + + + + + + + + EventBuzz Live — Where audiences come alive + + + + + +Join Your Event +
+
+
+
+
With a live AI concierge
+

Event management and
engagement, built as one.

+

EventBuzz brings live polls, real-time quiz, moderated Q&A, and AI session summaries into the same platform as your event management. Every session becomes a conversation. Every event leaves you with data that proves it worked.

+

Perfect for in-person, hybrid & virtual events.

+ +
+
+
+ +
Concierge
+
online
+
+
+
+ +
+ +
+
+
+
+
Backed by 15 years of engagement expertise +
+
1,200+events run
+
50K+attendees reached
+
96%satisfaction score
+
1M+concierge interactions
+
+
+
+
+
+Abbott +Alembic +Bayer Zydus Pharma +Cipla +Dr. Reddy's +Fresenius Kabi +Galderma +Glenmark +Micro Labs Limited +Mylan +Otsuka +Pfizer +USV
+ +
+
+
+
The attendee journey +
+

One platform, from the first email to the last certificate

+

Most event chaos isn't a features problem — it's a fragmentation problem. EventBuzz keeps every stage connected.

+
+
+
Before
+

Registration & travel

+
The questions start before anyone arrives
+
    +
  • +Registration status & ticket confirmations
  • +
  • +Hotel, travel & itinerary details
  • +
  • +Dress code, parking & logistics
  • +
+
+
+
During
+

Venue & sessions

+
Live guidance, not a static agenda
+
    +
  • +Real-time room changes & reminders
  • +
  • +Venue directions, food & amenities
  • +
  • +In-session polls, Q&A & nudges
  • +
+
+
+
After
+

Certification & follow-up

+
The event ends, the answers don't stop
+
    +
  • +Certificates & recordings on request
  • +
  • +Feedback & survey follow-up
  • +
  • +Session materials, delivered instantly
  • +
+
+
+
+
+
+
+
The AI concierge +
+

Never bolted on. Always built in.

+

The concierge reads your live event data — no separate app, no second login, no lag between what changes and what attendees are told.

+
+
+
+ +
+
Instant, accurate answersPulled from your real event data, not a generic script.
+
+
+
+ +
+
Updates in real timeRoom change on the backend shows up in the chat instantly.
+
+
+
+ +
+
One login, whole journeySame concierge from registration through certification.
+
+
+
+EventBuzz AI conciergeall three, working togetherLLM reasoningIntelligenceContextlive event dataIntentreads what's askedRegistrationAgendaCheck-inEngagement +
+
+
+
+
+
Built for event management +
+

Run the operation, not a stack of spreadsheets

+

From sales-optimised registration and ticketing to the industry's best on-site solutions, EventBuzz Live simplifies event planning, drives event ROI, and delivers flawless experiences.

+
+
+
+Event page and registration
+

Event page & registration

+

A branded event page live in under 5 minutes. Free RSVP or paid ticketing, 0% platform fee on paid plans.

+
+
+
+Event page and registration
+

Sessions, agenda & QR check-in

+

Multi-session scheduling and instant QR check-in, with attendance linked to each person's engagement record automatically.

+
+
+
+Event page and registration
+

Badge printing

+

On-site or pre-printed badges, designed to your branding, ready before doors open.

+
+
+
+Event page and registration
+

Real-time analytics & reporting

+

Live attendance and engagement dashboards during the event. Per-attendee scores and AI reports the moment it ends.

+
+
+
+Event page and registration
+

Event marketing

+

Personalised email and WhatsApp campaigns, RSVP tracking, and attendee journey automation — all built in.

+
+
+
+Event page and registration
+

Security & compliance

+

GDPR-ready by default, with audit-friendly records built in from day one.

+
+
+
+
+
+
Event engagement +
+

Management gets people there. Engagement keeps them there.

+

Turn passive listeners into active participants — live polls, quizzes, and moderated Q&A that make every session feel like a conversation, not a lecture.

+
+
+
+Event page and registration
+

Networking & matchmaking

+

Interest-based matches and 1-1 meeting scheduling, built on the same attendee data as check-in.

+
+
+
+Live polls & Q&A
+

Live polls & Q&A

+

Real-time audience input during sessions, feeding straight back into your session analytics.

+
+
+
+Gamification & leaderboards
+

Gamification & leaderboards

+

Points, badges, and leaderboards that drive booth visits and session attendance, not just clicks.

+
+
+
+Community & social feed
+

Community & social feed

+

A private feed for photos, updates, and discussion — scoped to your event, not the open web.

+
+
+
+Push & reminders
+

Push & reminders

+

Session start alerts and schedule changes, delivered the moment they happen.

+
+
+
+Engagement analytics
+

Engagement analytics

+

See which sessions, booths, and content actually held attention — not just who checked in.

+
+
+
+
+
+Attendee engagement scores
+
Attendee engagement scores
+

Know exactly who was in the conversation — not just in the room.

+

Every attendee earns an engagement score based on polls answered, questions submitted, and session time — connected to who they are, and synced automatically to HubSpot or Salesforce.

+
+
+
+AI post-session summary
+
AI post-session summary
+

Your leadership report, written the moment your session ends.

+

EventBuzz generates a structured summary automatically — top questions, poll insights, sentiment arc, engagement highlights. Forward it in one click. No slides to build, no exports to stitch together.

+
+
+
+
+
+
Pricing +
+

Real numbers. No sales call required to see them.

+AI concierge included from the Grow plan — not locked to the top tier +
+
+

Start

+
$0/event
+
Simple registration for small, single-day events.
+
    +
  • +Up to 50 attendees
  • +
  • +Registration & check-in
  • +
  • +Email support
  • +
+Talk to sales +
+
+

Grow

+
$249/mo
+
For teams running events regularly, with AI included.
+
    +
  • +Up to 500 attendees
  • +
  • +Event website included
  • +
  • + +AI concierge included
  • +
  • +Priority support
  • +
+Talk to sales +
+
+

Scale

+
$599/mo
+
For multi-event teams needing deeper integrations.
+
    +
  • +Up to 1500 attendees
  • +
  • + +AI concierge + analytics
  • +
  • +CRM integrations
  • +
  • +Dedicated account manager
  • +
+Talk to sales +
+
+

Enterprise

+
Custom
+
Multi-brand programs, custom SLAs, and dedicated support.
+
    +
  • +Unlimited attendees
  • +
  • +Custom security review
  • +
  • +SSO & custom DPA
  • +
+Talk to sales +
+
+
+
+
+
Customer stories +
+

What event teams say after they switch

+
+
+
+ + +
+
+
+
+
“Our help desk queue basically disappeared. Attendees just ask the app now — and it actually knows the answer.”
+
Event operations lead3-day medical congress · 1,200 attendees
+
+
“We finally have one dashboard instead of three tools that never agreed with each other. Reporting after the event takes minutes, not days.”
+
Head of eventsAnnual partner summit · 800 attendees
+
+
“The AI session summary alone saved our team a full day of manual reporting per event. Leadership gets it the moment the session ends.”
+
Program directorMulti-city training series
+
+
“Engagement scores gave us real signal on who to follow up with — not just who scanned a badge.”
+
Marketing leadB2B conference · 2,000 attendees
+
+
“Room changes used to mean a flood of Slack messages. Now the concierge tells attendees before they even ask.”
+
Onsite coordinatorPharma launch event · 900 attendees
+
+
“We replaced two engagement apps and a registration tool. One login for the team, one experience for attendees.”
+
VP EventsGlobal sales kickoff · 1,500 attendees
+
+
+
+
+
+
Get started +
+

Where audiences come alive.

+

See EventBuzz Live running your next event.

+ +
+ + + + + + + + + diff --git a/js/chat-demo.js b/js/chat-demo.js new file mode 100644 index 0000000..39783ee --- /dev/null +++ b/js/chat-demo.js @@ -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) => + ``; + + 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)}
${text}
`; + 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)}
`; + 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(); + }); +})(); diff --git a/js/site.js b/js/site.js new file mode 100644 index 0000000..36bb887 --- /dev/null +++ b/js/site.js @@ -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 = ` + + + Request demo + `; + + 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 = ` + + `; + + 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(); + }); +})(); diff --git a/privacy/index.html b/privacy/index.html new file mode 100644 index 0000000..76bc87b --- /dev/null +++ b/privacy/index.html @@ -0,0 +1,143 @@ + + + + + + + + + + + + Privacy Policy — EventBuzz Live + + + + + +Join Your Event +
+
+← Back to home + +

Privacy Policy

+ + + +
+ + + + + + + + diff --git a/security/index.html b/security/index.html new file mode 100644 index 0000000..5024470 --- /dev/null +++ b/security/index.html @@ -0,0 +1,133 @@ + + + + + + + + + + + + Security — EventBuzz Live + + + + + +Join Your Event +
+
+← Back to home + +

Security

+ + + +
+ + + + + + + + diff --git a/terms/index.html b/terms/index.html new file mode 100644 index 0000000..1eaed8e --- /dev/null +++ b/terms/index.html @@ -0,0 +1,149 @@ + + + + + + + + + + + + Terms of Service — EventBuzz Live + + + + + +Join Your Event +
+
+← Back to home + +

Terms of Service

+ + + +
+ + + + + + + +